From 704159e1fc6f71d4edc92ae815fe62a01f9f99fa Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Sat, 29 Mar 2014 14:15:56 +0100 Subject: [PATCH] Build coremods on Windows, add general support to the cmake script for building modules consisting of multiple compilation units Instead of special casing m_spanningtree create one project for each subdir in src/modules/ and src/coremods/ --- win/modules/CMakeLists.txt | 49 ++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/win/modules/CMakeLists.txt b/win/modules/CMakeLists.txt index 386d3600d..b3e59de61 100644 --- a/win/modules/CMakeLists.txt +++ b/win/modules/CMakeLists.txt @@ -2,44 +2,41 @@ # so copy the file out of extra/ file(COPY "${INSPIRCD_BASE}/src/modules/extra/m_regex_stdlib.cpp" DESTINATION "${INSPIRCD_BASE}/src/modules/") -file(GLOB INSPIRCD_MODULES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${INSPIRCD_BASE}/src/commands/*.cpp" "${INSPIRCD_BASE}/src/modules/*.cpp") +file(GLOB INSPIRCD_MODULES "${INSPIRCD_BASE}/src/coremods/core_*" "${INSPIRCD_BASE}/src/modules/m_*") list(SORT INSPIRCD_MODULES) add_definitions("-DDLL_BUILD") foreach(MODULE_NAME ${INSPIRCD_MODULES}) - string(REGEX REPLACE "^.*[/\\](.*).cpp$" "\\1" BASE_NAME ${MODULE_NAME}) + if(IS_DIRECTORY "${MODULE_NAME}") + string(REGEX REPLACE "^.*[/\\](.*)$" "\\1" BASE_NAME ${MODULE_NAME}) + else(IS_DIRECTORY "${MODULE_NAME}") + string(REGEX REPLACE "^.*[/\\](.*).cpp$" "\\1" BASE_NAME ${MODULE_NAME}) + endif(IS_DIRECTORY "${MODULE_NAME}") set(SO_NAME "${BASE_NAME}.so") - add_library(${SO_NAME} MODULE ${MODULE_NAME}) - set_target_properties(${SO_NAME} PROPERTIES - PREFIX "" - SUFFIX "" - COMPILE_DEFINITIONS "MODNAME=\"${BASE_NAME}\"" - ) + if(IS_DIRECTORY "${MODULE_NAME}") + file(GLOB MODULES_SUBDIR_SRCS "${MODULE_NAME}/*.cpp") + list(SORT MODULES_SUBDIR_SRCS) + add_library(${SO_NAME} MODULE ${MODULES_SUBDIR_SRCS}) + else(IS_DIRECTORY "${MODULE_NAME}") + add_library(${SO_NAME} MODULE ${MODULE_NAME}) + endif(IS_DIRECTORY "${MODULE_NAME}") + + # Generate the module and set its linker flags, also set it to depend on the main executable to be built beforehand target_link_libraries(${SO_NAME} inspircd) add_dependencies(${SO_NAME} inspircd) if(MSVC) target_link_libraries(${SO_NAME} win32_memory) add_dependencies(${SO_NAME} win32_memory) endif(MSVC) - install(TARGETS ${SO_NAME} DESTINATION modules) -endforeach(MODULE_NAME ${INSPIRCD_MODULES}) -file(GLOB INSPIRCD_MODULES_SPANNINGTREE RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${INSPIRCD_BASE}/src/modules/m_spanningtree/*.cpp") -list(SORT INSPIRCD_MODULES_SPANNINGTREE) - -add_library(m_spanningtree.so MODULE ${INSPIRCD_MODULES_SPANNINGTREE}) -set_target_properties(m_spanningtree.so PROPERTIES - PREFIX "" - SUFFIX "" - COMPILE_DEFINITIONS "MODNAME=\"m_spanningtree\"" -) + set_target_properties(${SO_NAME} PROPERTIES + PREFIX "" + SUFFIX "" + COMPILE_DEFINITIONS "MODNAME=\"${BASE_NAME}\"" + ) -target_link_libraries(m_spanningtree.so inspircd) -add_dependencies(m_spanningtree.so inspircd) -if(MSVC) - target_link_libraries(m_spanningtree.so win32_memory) - add_dependencies(m_spanningtree.so win32_memory) -endif(MSVC) -install(TARGETS m_spanningtree.so DESTINATION modules) \ No newline at end of file + # Set the module to be installed to the module directory + install(TARGETS ${SO_NAME} DESTINATION modules) +endforeach(MODULE_NAME ${INSPIRCD_MODULES}) -- 2.39.2