]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - win/modules/CMakeLists.txt
Fix building modules which depend on vendor libs on Windows.
[user/henk/code/inspircd.git] / win / modules / CMakeLists.txt
index 386d3600d48561cf803e0ae0e78cc83d0a239b66..094078aabd88c936acf87163d5373553205655e8 100644 (file)
@@ -2,44 +2,49 @@
 # so copy the file out of extra/\r
 file(COPY "${INSPIRCD_BASE}/src/modules/extra/m_regex_stdlib.cpp" DESTINATION "${INSPIRCD_BASE}/src/modules/")\r
 \r
-file(GLOB INSPIRCD_MODULES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${INSPIRCD_BASE}/src/commands/*.cpp" "${INSPIRCD_BASE}/src/modules/*.cpp")\r
+file(GLOB INSPIRCD_MODULES "${INSPIRCD_BASE}/src/coremods/core_*" "${INSPIRCD_BASE}/src/modules/m_*")\r
 list(SORT INSPIRCD_MODULES)\r
 \r
 add_definitions("-DDLL_BUILD")\r
 \r
+file(GLOB INSPIRCD_VENDORS "${INSPIRCD_BASE}/vendor/**")\r
+foreach(INSPIRCD_VENDOR ${INSPIRCD_VENDORS})\r
+       if(NOT IS_DIRECTORY ${INSPIRCD_VENDOR})\r
+               list(REMOVE_ITEM INSPIRCD_VENDORS ${INSPIRCD_VENDOR})\r
+       endif()\r
+endforeach()\r
+\r
 foreach(MODULE_NAME ${INSPIRCD_MODULES})\r
-       string(REGEX REPLACE "^.*[/\\](.*).cpp$" "\\1" BASE_NAME ${MODULE_NAME})\r
+       if(IS_DIRECTORY "${MODULE_NAME}")\r
+               string(REGEX REPLACE "^.*[/\\](.*)$" "\\1" BASE_NAME ${MODULE_NAME})\r
+       else(IS_DIRECTORY "${MODULE_NAME}")\r
+               string(REGEX REPLACE "^.*[/\\](.*).cpp$" "\\1" BASE_NAME ${MODULE_NAME})\r
+       endif(IS_DIRECTORY "${MODULE_NAME}")\r
        set(SO_NAME "${BASE_NAME}.so")\r
-       add_library(${SO_NAME} MODULE ${MODULE_NAME})\r
-       set_target_properties(${SO_NAME} PROPERTIES\r
-               PREFIX ""\r
-               SUFFIX ""\r
-               COMPILE_DEFINITIONS "MODNAME=\"${BASE_NAME}\""\r
-       )\r
 \r
+       if(IS_DIRECTORY "${MODULE_NAME}")\r
+               file(GLOB MODULES_SUBDIR_SRCS "${MODULE_NAME}/*.cpp")\r
+               list(SORT MODULES_SUBDIR_SRCS)\r
+               add_library(${SO_NAME} MODULE ${MODULES_SUBDIR_SRCS})\r
+       else(IS_DIRECTORY "${MODULE_NAME}")\r
+               add_library(${SO_NAME} MODULE ${MODULE_NAME})\r
+       endif(IS_DIRECTORY "${MODULE_NAME}")\r
+\r
+       # Generate the module and set its linker flags, also set it to depend on the main executable to be built beforehand\r
        target_link_libraries(${SO_NAME} inspircd)\r
        add_dependencies(${SO_NAME} inspircd)\r
+       target_include_directories(${SO_NAME} PRIVATE ${INSPIRCD_VENDORS})\r
        if(MSVC)\r
                target_link_libraries(${SO_NAME} win32_memory)\r
                add_dependencies(${SO_NAME} win32_memory)\r
        endif(MSVC)\r
-       install(TARGETS ${SO_NAME} DESTINATION modules)\r
-endforeach(MODULE_NAME ${INSPIRCD_MODULES})\r
 \r
-file(GLOB INSPIRCD_MODULES_SPANNINGTREE RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "${INSPIRCD_BASE}/src/modules/m_spanningtree/*.cpp")\r
-list(SORT INSPIRCD_MODULES_SPANNINGTREE)\r
-\r
-add_library(m_spanningtree.so MODULE ${INSPIRCD_MODULES_SPANNINGTREE})\r
-set_target_properties(m_spanningtree.so PROPERTIES\r
-       PREFIX ""\r
-       SUFFIX ""\r
-       COMPILE_DEFINITIONS "MODNAME=\"m_spanningtree\""\r
-)\r
-\r
-target_link_libraries(m_spanningtree.so inspircd)\r
-add_dependencies(m_spanningtree.so inspircd)\r
-if(MSVC)\r
-       target_link_libraries(m_spanningtree.so win32_memory)\r
-       add_dependencies(m_spanningtree.so win32_memory)\r
-endif(MSVC)\r
-install(TARGETS m_spanningtree.so DESTINATION modules)
\ No newline at end of file
+       set_target_properties(${SO_NAME} PROPERTIES\r
+               PREFIX ""\r
+               SUFFIX ""\r
+               COMPILE_DEFINITIONS "MODNAME=\"${BASE_NAME}\""\r
+       )\r
+\r
+       # Set the module to be installed to the module directory\r
+       install(TARGETS ${SO_NAME} DESTINATION ${MODULE_DIR})\r
+endforeach(MODULE_NAME ${INSPIRCD_MODULES})\r