diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..3a884cc5a --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 2.6) +project(MaxScale) + +find_path(MYSQL_DIR mysql.h PATH_SUFFIXES mysql mariadb) +find_file(ERRMSG errmsg.sys PATHS /usr/share/mysql /usr/local/share/mysql PATH_SUFFIXES english) + +set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -fPIC) +set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -fPIC) +message(STATUS "cflags: ${CMAKE_C_FLAGS}") +if(NOT EMBEDDED_LIB) + find_library(EMBEDDED_LIB libmysqld.a PATHS /usr/lib /usr/lib64 PATH_SUFFIXES mysql) + if(EMBEDDED_LIB_NOT_FOUND) + message(ERROR "Library not found: libmysqld. If your install of MySQL is in a non-default location, please provide the location with -DEMBEDDED_LIB=") + endif(EMBEDDED_LIB_NOT_FOUND) +endif(NOT EMBEDDED_LIB) + +include_directories(${MYSQL_DIR}) +include_directories(${MYSQL_DIR}/private) +include_directories(${MYSQL_DIR}/extra) +include_directories(utils) +include_directories(log_manager) +include_directories(query_classifier) +include_directories(server/include) +include_directories(server/inih) +include_directories(server/modules/include) + +add_subdirectory(utils) +add_subdirectory(log_manager) +add_subdirectory(query_classifier) +add_subdirectory(server) +add_subdirectory(client) + +if(BUILD_RABBITMQ) +add_subdirectory(rabbitmq_consumer) +endif(BUILD_RABBITMQ) + +file(GLOB DOCS Documentation/*.pdf) + +install(FILES server/test/MaxScale_test.cnf RENAME MaxScale.cnf DESTINATION etc) +install(FILES ${ERRMSG} DESTINATION mysql) +install(FILES ${EMBEDDED_LIB} DESTINATION lib) +install(FILES ${DOCS} DESTINATION Documentation) \ No newline at end of file diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt new file mode 100644 index 000000000..496c59127 --- /dev/null +++ b/client/CMakeLists.txt @@ -0,0 +1,8 @@ +add_executable(maxadmin maxadmin.c) +find_library(HIST edit) +#if(HIST) +# add_definitions(-DHISTORY) +# set(LIBS ${LIBS} {HIST}) +#endif(HIST) +set_target_properties(maxadmin PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +install(TARGETS maxadmin DESTINATION bin) \ No newline at end of file diff --git a/log_manager/CMakeLists.txt b/log_manager/CMakeLists.txt new file mode 100644 index 000000000..a5966c5c0 --- /dev/null +++ b/log_manager/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 2.6) +set(LOG_MANAGER_HEADERS log_manager.h) +add_library(log_manager SHARED log_manager.cc) +target_link_libraries(log_manager utils) +install(TARGETS log_manager DESTINATION lib) \ No newline at end of file diff --git a/query_classifier/CMakeLists.txt b/query_classifier/CMakeLists.txt new file mode 100644 index 000000000..3253e910b --- /dev/null +++ b/query_classifier/CMakeLists.txt @@ -0,0 +1,3 @@ +set(QUERY_CLASSIFIER_HEADERS query_classifier.h) +add_library(query_classifier SHARED query_classifier.cc ${MYSQL_HEADERS}) +install(TARGETS query_classifier DESTINATION lib) \ No newline at end of file diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt new file mode 100644 index 000000000..83404086e --- /dev/null +++ b/server/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(core) +add_subdirectory(modules) +add_subdirectory(inih) \ No newline at end of file diff --git a/server/core/CMakeLists.txt b/server/core/CMakeLists.txt new file mode 100644 index 000000000..5a8972093 --- /dev/null +++ b/server/core/CMakeLists.txt @@ -0,0 +1,19 @@ +#file(GLOB FULLCORE_SRC *.c) #Not used, might be useful somewhere +#add_library(fullcore ${FULLCORE_SRC}) +add_executable(maxscale atomic.c buffer.c spinlock.c gateway.c + gw_utils.c utils.c dcb.c load_utils.c session.c service.c server.c + poll.c config.c users.c hashtable.c dbusers.c thread.c gwbitmask.c + monitor.c adminusers.c secrets.c filter.c modutil.c hint.c housekeeper.c) +set_target_properties(maxscale PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(maxscale utils log_manager aio pthread crypt dl mysqld crypto inih) +install(TARGETS maxscale DESTINATION bin) + +add_executable(maxkeys maxkeys.c secrets.c utils.c) +set_target_properties(maxkeys PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(maxkeys utils log_manager aio pthread crypt dl mysqld crypto inih) +install(TARGETS maxkeys DESTINATION bin) + +add_executable(maxpasswd maxpasswd.c secrets.c utils.c) +set_target_properties(maxpasswd PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(maxpasswd utils log_manager aio pthread crypt dl mysqld crypto inih) +install(TARGETS maxpasswd DESTINATION bin) \ No newline at end of file diff --git a/server/inih/CMakeLists.txt b/server/inih/CMakeLists.txt new file mode 100644 index 000000000..24393e05d --- /dev/null +++ b/server/inih/CMakeLists.txt @@ -0,0 +1 @@ +add_library(inih ini.c) \ No newline at end of file diff --git a/server/modules/CMakeLists.txt b/server/modules/CMakeLists.txt new file mode 100644 index 000000000..f2d746ded --- /dev/null +++ b/server/modules/CMakeLists.txt @@ -0,0 +1,5 @@ +include_directories(monitor) +add_subdirectory(routing) +add_subdirectory(protocol) +add_subdirectory(monitor) +add_subdirectory(filter) \ No newline at end of file diff --git a/server/modules/filter/CMakeLists.txt b/server/modules/filter/CMakeLists.txt new file mode 100644 index 000000000..8343f6ca5 --- /dev/null +++ b/server/modules/filter/CMakeLists.txt @@ -0,0 +1,33 @@ +if(BUILD_RABBITMQ) + add_library(mqfilter SHARED mqfilter.c) + set_target_properties(mqfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) + target_link_libraries(mqfilter utils query_classifier log_manager rabbitmq) + install(TARGETS DESTINATION modules) +endif(BUILD_RABBITMQ) + +add_library(regexfilter SHARED regexfilter.c) +set_target_properties(regexfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(regexfilter utils log_manager) +install(TARGETS regexfilter DESTINATION modules) + +add_library(testfilter SHARED testfilter.c) +set_target_properties(testfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(testfilter utils log_manager) +install(TARGETS testfilter DESTINATION modules) + +add_library(qlafilter SHARED qlafilter.c) +set_target_properties(qlafilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(qlafilter utils log_manager) +install(TARGETS qlafilter DESTINATION modules) + +add_library(tee SHARED tee.c) +set_target_properties(tee PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(tee utils log_manager) +install(TARGETS tee DESTINATION modules) + +add_library(topfilter SHARED topfilter.c) +set_target_properties(topfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(topfilter utils log_manager) +install(TARGETS topfilter DESTINATION modules) + +add_subdirectory(hint) \ No newline at end of file diff --git a/server/modules/filter/hint/CMakeLists.txt b/server/modules/filter/hint/CMakeLists.txt new file mode 100644 index 000000000..62d2e9ee2 --- /dev/null +++ b/server/modules/filter/hint/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(hintfilter SHARED hintfilter.c hintparser.c) +set_target_properties(hintfilter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(hintfilter utils ssl log_manager) +install(TARGETS hintfilter DESTINATION modules) \ No newline at end of file diff --git a/server/modules/monitor/CMakeLists.txt b/server/modules/monitor/CMakeLists.txt new file mode 100644 index 000000000..947536b75 --- /dev/null +++ b/server/modules/monitor/CMakeLists.txt @@ -0,0 +1,14 @@ +add_library(mysqlmon SHARED mysql_mon.c) +set_target_properties(mysqlmon PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(mysqlmon utils log_manager mysqld) +install(TARGETS mysqlmon DESTINATION modules) + +add_library(galeramon SHARED galera_mon.c) +set_target_properties(galeramon PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(galeramon utils log_manager mysqld) +install(TARGETS galeramon DESTINATION modules) + +add_library(ndbclustermon SHARED ndbcluster_mon.c) +set_target_properties(ndbclustermon PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(ndbclustermon utils log_manager mysqld) +install(TARGETS ndbclustermon DESTINATION modules) \ No newline at end of file diff --git a/server/modules/protocol/CMakeLists.txt b/server/modules/protocol/CMakeLists.txt new file mode 100644 index 000000000..074c6f748 --- /dev/null +++ b/server/modules/protocol/CMakeLists.txt @@ -0,0 +1,29 @@ +add_library(MySQLClient SHARED mysql_client.c mysql_common.c) +set_target_properties(MySQLClient PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(MySQLClient utils log_manager) +install(TARGETS MySQLClient DESTINATION modules) + +add_library(MySQLBackend SHARED mysql_backend.c mysql_common.c) +set_target_properties(MySQLBackend PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(MySQLBackend utils log_manager) +install(TARGETS MySQLBackend DESTINATION modules) + +add_library(telnetd SHARED telnetd.c) +set_target_properties(telnetd PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(telnetd utils log_manager) +install(TARGETS telnetd DESTINATION modules) + +add_library(HTTPD SHARED httpd.c) +set_target_properties(HTTPD PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(HTTPD utils log_manager) +install(TARGETS HTTPD DESTINATION modules) + +add_library(maxscaled SHARED maxscaled.c) +set_target_properties(maxscaled PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(maxscaled utils log_manager) +install(TARGETS maxscaled DESTINATION modules) + + + + + diff --git a/server/modules/routing/CMakeLists.txt b/server/modules/routing/CMakeLists.txt new file mode 100644 index 000000000..7159471b1 --- /dev/null +++ b/server/modules/routing/CMakeLists.txt @@ -0,0 +1,22 @@ +add_library(testroute SHARED testroute.c) +set_target_properties(testroute PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(testroute utils log_manager) +install(TARGETS testroute DESTINATION modules) + +add_library(readconnroute SHARED readconnroute.c) +set_target_properties(readconnroute PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(readconnroute utils log_manager) +install(TARGETS readconnroute DESTINATION modules) + +add_library(debugcli SHARED debugcli.c debugcmd.c) +set_target_properties(debugcli PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(debugcli utils log_manager) +install(TARGETS debugcli DESTINATION modules) + +add_library(cli SHARED cli.c debugcmd.c) +set_target_properties(cli PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(cli utils log_manager) +install(TARGETS cli DESTINATION modules) + +add_subdirectory(readwritesplit) +add_subdirectory(binlog) \ No newline at end of file diff --git a/server/modules/routing/binlog/CMakeLists.txt b/server/modules/routing/binlog/CMakeLists.txt new file mode 100644 index 000000000..a36324eb1 --- /dev/null +++ b/server/modules/routing/binlog/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(binlogrouter SHARED blr.c blr_master.c blr_cache.c blr_slave.c blr_file.c) +set_target_properties(binlogrouter PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(binlogrouter ssl pthread log_manager mysqld) +install(TARGETS binlogrouter DESTINATION modules) diff --git a/server/modules/routing/readwritesplit/CMakeLists.txt b/server/modules/routing/readwritesplit/CMakeLists.txt new file mode 100644 index 000000000..9c4f3e7e3 --- /dev/null +++ b/server/modules/routing/readwritesplit/CMakeLists.txt @@ -0,0 +1,4 @@ +add_library(readwritesplit SHARED readwritesplit.c) +set_target_properties(readwritesplit PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${CMAKE_INSTALL_PREFIX}/lib) +target_link_libraries(readwritesplit utils ssl pthread log_manager query_classifier mysqld) +install(TARGETS readwritesplit DESTINATION modules) \ No newline at end of file diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt new file mode 100644 index 000000000..a0a932353 --- /dev/null +++ b/utils/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 2.6) +set(UTILS_HEADERS skygw_debug.h skygw_types.h skygw_utils.h) +add_library(utils skygw_utils.cc ${UTILS_HEADERS}) \ No newline at end of file