Make maxutils a standalone library

The only way to cleanly separate the maxutils library from the MaxScale
CMake project is to make it a standalone CMake project. With the help of
ExternalProject, it should be relatively easy to use.
This commit is contained in:
Markus Mäkelä 2018-06-19 14:23:48 +03:00
parent b96228f95c
commit 7254a7c525
No known key found for this signature in database
GPG Key ID: 72D48FCE664F7B19
8 changed files with 33 additions and 6 deletions

View File

@ -57,6 +57,10 @@ include_directories(BEFORE ${MARIADB_CONNECTOR_INCLUDE_DIR})
include(cmake/BuildJansson.cmake)
include(cmake/BuildMicroHttpd.cmake)
# Build the MaxUtils libraries
include(cmake/BuildMaxUtils.cmake)
include_directories(${MAXUTILS_INCLUDE_DIR})
include_directories(${JANSSON_INCLUDE_DIR})
if(NOT OPENSSL_FOUND)
@ -166,7 +170,6 @@ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${DEBUG_FLAGS} -DSS_DEBUG -D
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wno-deprecated-declarations -Wno-uninitialized -std=c++11")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -ggdb -Wno-deprecated-declarations -Wno-uninitialized -std=c++11")
include_directories(maxutils/maxbase/include)
include_directories(include)
include_directories(server/inih)
include_directories(server/modules/include)
@ -178,7 +181,6 @@ if (BUILD_CDC)
add_subdirectory(avro)
endif()
add_subdirectory(maxutils)
add_subdirectory(plugins)
add_subdirectory(query_classifier)
add_subdirectory(server)

View File

@ -0,0 +1,9 @@
# Build the maxutils library
ExternalProject_Add(maxutils
SOURCE_DIR ${CMAKE_SOURCE_DIR}/maxutils
BINARY_DIR ${CMAKE_BINARY_DIR}/maxutils
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/maxutils/install)
set(MAXUTILS_INCLUDE_DIR ${CMAKE_BINARY_DIR}/maxutils/install/include CACHE INTERNAL "")
set(MAXUTILS_LIBRARIES ${CMAKE_BINARY_DIR}/maxutils/install/lib/libmaxbase.a CACHE INTERNAL "")

View File

@ -1 +1,4 @@
project(maxutils)
cmake_minimum_required(VERSION 2.8)
set(CMAKE_CXX_FLAGS "-fPIC -std=c++11 -ggdb -Wall -Werror -Wno-unused-function")
add_subdirectory(maxbase)

View File

@ -1,4 +1,3 @@
include_directories(include)
add_library(maxbase SHARED src/eventcount.cc src/stopwatch.cc)
set_target_properties(maxbase PROPERTIES VERSION "1.0.0")
install_module(maxbase core)
add_subdirectory(include/maxbase)
add_subdirectory(src)

View File

@ -0,0 +1,10 @@
set(TYPES "*.h" "*.hh")
foreach(type ${TYPES})
file(GLOB HEADERS ${type})
foreach(var ${HEADERS})
get_filename_component(header ${var} NAME)
install(FILES ${header} DESTINATION include/maxbase)
endforeach()
endforeach()

View File

@ -0,0 +1,3 @@
add_library(maxbase STATIC eventcount.cc stopwatch.cc)
set_target_properties(maxbase PROPERTIES VERSION "1.0.0" LINK_FLAGS -Wl,-z,defs)
install(TARGETS maxbase DESTINATION lib)

View File

@ -66,6 +66,7 @@ endif()
target_link_libraries(maxscale-common
${MARIADB_CONNECTOR_LIBRARIES}
${MAXUTILS_LIBRARIES}
${LZMA_LINK_FLAGS}
${PCRE2_LIBRARIES}
${JANSSON_LIBRARIES}

View File

@ -1,4 +1,4 @@
add_library(throttlefilter SHARED throttlefilter.cc throttlesession.cc)
target_link_libraries(throttlefilter maxbase maxscale-common mysqlcommon)
target_link_libraries(throttlefilter maxscale-common mysqlcommon)
set_target_properties(throttlefilter PROPERTIES VERSION "1.0.0")
install_module(throttlefilter core)