]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - win/modules/CMakeLists.txt
Fix building modules which depend on vendor libs on Windows.
[user/henk/code/inspircd.git] / win / modules / CMakeLists.txt
1 # m_regex_stdlib is supported by every version of Visual Studio we support,\r
2 # so copy the file out of extra/\r
3 file(COPY "${INSPIRCD_BASE}/src/modules/extra/m_regex_stdlib.cpp" DESTINATION "${INSPIRCD_BASE}/src/modules/")\r
4 \r
5 file(GLOB INSPIRCD_MODULES "${INSPIRCD_BASE}/src/coremods/core_*" "${INSPIRCD_BASE}/src/modules/m_*")\r
6 list(SORT INSPIRCD_MODULES)\r
7 \r
8 add_definitions("-DDLL_BUILD")\r
9 \r
10 file(GLOB INSPIRCD_VENDORS "${INSPIRCD_BASE}/vendor/**")\r
11 foreach(INSPIRCD_VENDOR ${INSPIRCD_VENDORS})\r
12         if(NOT IS_DIRECTORY ${INSPIRCD_VENDOR})\r
13                 list(REMOVE_ITEM INSPIRCD_VENDORS ${INSPIRCD_VENDOR})\r
14         endif()\r
15 endforeach()\r
16 \r
17 foreach(MODULE_NAME ${INSPIRCD_MODULES})\r
18         if(IS_DIRECTORY "${MODULE_NAME}")\r
19                 string(REGEX REPLACE "^.*[/\\](.*)$" "\\1" BASE_NAME ${MODULE_NAME})\r
20         else(IS_DIRECTORY "${MODULE_NAME}")\r
21                 string(REGEX REPLACE "^.*[/\\](.*).cpp$" "\\1" BASE_NAME ${MODULE_NAME})\r
22         endif(IS_DIRECTORY "${MODULE_NAME}")\r
23         set(SO_NAME "${BASE_NAME}.so")\r
24 \r
25         if(IS_DIRECTORY "${MODULE_NAME}")\r
26                 file(GLOB MODULES_SUBDIR_SRCS "${MODULE_NAME}/*.cpp")\r
27                 list(SORT MODULES_SUBDIR_SRCS)\r
28                 add_library(${SO_NAME} MODULE ${MODULES_SUBDIR_SRCS})\r
29         else(IS_DIRECTORY "${MODULE_NAME}")\r
30                 add_library(${SO_NAME} MODULE ${MODULE_NAME})\r
31         endif(IS_DIRECTORY "${MODULE_NAME}")\r
32 \r
33         # Generate the module and set its linker flags, also set it to depend on the main executable to be built beforehand\r
34         target_link_libraries(${SO_NAME} inspircd)\r
35         add_dependencies(${SO_NAME} inspircd)\r
36         target_include_directories(${SO_NAME} PRIVATE ${INSPIRCD_VENDORS})\r
37         if(MSVC)\r
38                 target_link_libraries(${SO_NAME} win32_memory)\r
39                 add_dependencies(${SO_NAME} win32_memory)\r
40         endif(MSVC)\r
41 \r
42         set_target_properties(${SO_NAME} PROPERTIES\r
43                 PREFIX ""\r
44                 SUFFIX ""\r
45                 COMPILE_DEFINITIONS "MODNAME=\"${BASE_NAME}\""\r
46         )\r
47 \r
48         # Set the module to be installed to the module directory\r
49         install(TARGETS ${SO_NAME} DESTINATION ${MODULE_DIR})\r
50 endforeach(MODULE_NAME ${INSPIRCD_MODULES})\r