diff options
Diffstat (limited to 'src/modules/CMakeLists.txt')
-rw-r--r-- | src/modules/CMakeLists.txt | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt index ea05a95..4c86688 100644 --- a/src/modules/CMakeLists.txt +++ b/src/modules/CMakeLists.txt @@ -1,5 +1,35 @@ +include_directories(${INCLUDES}) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${MAD_BINARY_DIR}/src/modules) -set(CMAKE_SHARED_MODULE_PREFIX "") + +set(STATIC_MODULES "") + +macro(mad_module name) + string(TOUPPER ${name} upper_name) + + set(WITH_${upper_name} ON CACHE BOOL "Enable module '${name}'") + + mark_as_advanced(WITH_STATIC_${upper_name}) + set(WITH_STATIC_${upper_name} OFF CACHE BOOL "Link module '${name}' statically") + + if(WITH_${upper_name}) + if(WITH_STATIC_${upper_name}) + add_library(${name} STATIC ${ARGN}) + set(STATIC_MODULES ${STATIC_MODULES} ${name} PARENT_SCOPE) + else(WITH_STATIC_${upper_name}) + add_library(${name} MODULE ${ARGN}) + set_property(TARGET ${name} PROPERTY PREFIX "") + endif(WITH_STATIC_${upper_name}) + endif(WITH_${upper_name}) +endmacro(mad_module) + +macro(mad_module_libraries name) + string(TOUPPER ${name} upper_name) + + if(WITH_${upper_name}) + target_link_libraries(${name} ${ARGN}) + endif(WITH_${upper_name}) +endmacro(mad_module_libraries) add_subdirectory(FileLogger) add_subdirectory(SystemBackendPosix) @@ -8,3 +38,18 @@ add_subdirectory(SystemBackendProc) if(MYSQL_FOUND) add_subdirectory(UserBackendMysql) endif(MYSQL_FOUND) + +SET(STATIC_MODULE_LOADERS "") +SET(STATIC_MODULE_LIST "") + +foreach(module ${STATIC_MODULES}) + SET(STATIC_MODULE_LOADERS "${STATIC_MODULE_LOADERS}Mad::Common::Module* ${module}_create(Mad::Common::Application *application);\n") + SET(STATIC_MODULE_LIST "${STATIC_MODULE_LIST}std::make_pair(\"${module}\", &${module}_create),\n") +endforeach(module ${STATIC_MODULES}) + +configure_file(modules.cpp.in ${MAD_BINARY_DIR}/src/modules/modules.cpp) + +add_library(modules STATIC + modules.cpp modules.h +) +target_link_libraries(modules ${STATIC_MODULES}) |