initial implementation of the CMake build system

This commit is contained in:
Markus Makela 2014-09-11 18:24:41 +03:00
parent 30c52677b0
commit b3ce971020
16 changed files with 199 additions and 0 deletions

42
CMakeLists.txt Normal file
View File

@ -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=<path to library>")
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)

8
client/CMakeLists.txt Normal file
View File

@ -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)

View File

@ -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)

View File

@ -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)

3
server/CMakeLists.txt Normal file
View File

@ -0,0 +1,3 @@
add_subdirectory(core)
add_subdirectory(modules)
add_subdirectory(inih)

View File

@ -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)

View File

@ -0,0 +1 @@
add_library(inih ini.c)

View File

@ -0,0 +1,5 @@
include_directories(monitor)
add_subdirectory(routing)
add_subdirectory(protocol)
add_subdirectory(monitor)
add_subdirectory(filter)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

3
utils/CMakeLists.txt Normal file
View File

@ -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})