]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - win/modules/CMakeLists.txt
Migrate Windows builds to installing their dependencies via Conan.
[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 if(EXISTS "${CMAKE_BINARY_DIR}/conanbuildinfo.cmake")\r
6         file(COPY "${INSPIRCD_BASE}/src/modules/extra/m_argon2.cpp" DESTINATION "${INSPIRCD_BASE}/src/modules/")\r
7         file(COPY "${INSPIRCD_BASE}/src/modules/extra/m_pgsql.cpp" DESTINATION "${INSPIRCD_BASE}/src/modules/")\r
8         file(COPY "${INSPIRCD_BASE}/src/modules/extra/m_mysql.cpp" DESTINATION "${INSPIRCD_BASE}/src/modules/")\r
9         file(COPY "${INSPIRCD_BASE}/src/modules/extra/m_regex_pcre.cpp" DESTINATION "${INSPIRCD_BASE}/src/modules/")\r
10         file(COPY "${INSPIRCD_BASE}/src/modules/extra/m_regex_re2.cpp" DESTINATION "${INSPIRCD_BASE}/src/modules/")\r
11         file(COPY "${INSPIRCD_BASE}/src/modules/extra/m_sqlite3.cpp" DESTINATION "${INSPIRCD_BASE}/src/modules/")\r
12 \r
13         include("${CMAKE_BINARY_DIR}/conanbuildinfo.cmake")\r
14         link_directories("${CMAKE_BINARY_DIR}/extradll" "${CMAKE_BINARY_DIR}/extralib")\r
15 \r
16         file(GLOB EXTRA_DLLS "${CMAKE_BINARY_DIR}/extradll/*.dll")\r
17         install(FILES ${EXTRA_DLLS} DESTINATION .)\r
18 \r
19         conan_basic_setup(TARGETS)\r
20 else()\r
21         message("Unable to build extras: conanbuildinfo.cmake does not exist in the build directory!")\r
22 endif()\r
23 \r
24 \r
25 file(GLOB INSPIRCD_MODULES "${INSPIRCD_BASE}/src/coremods/core_*" "${INSPIRCD_BASE}/src/modules/m_*")\r
26 list(SORT INSPIRCD_MODULES)\r
27 \r
28 add_definitions("-DDLL_BUILD")\r
29 \r
30 foreach(MODULE_NAME ${INSPIRCD_MODULES})\r
31         if(IS_DIRECTORY "${MODULE_NAME}")\r
32                 string(REGEX REPLACE "^.*[/\\](.*)$" "\\1" BASE_NAME ${MODULE_NAME})\r
33         else(IS_DIRECTORY "${MODULE_NAME}")\r
34                 string(REGEX REPLACE "^.*[/\\](.*).cpp$" "\\1" BASE_NAME ${MODULE_NAME})\r
35         endif(IS_DIRECTORY "${MODULE_NAME}")\r
36         set(SO_NAME "${BASE_NAME}.so")\r
37 \r
38         if(IS_DIRECTORY "${MODULE_NAME}")\r
39                 file(GLOB MODULES_SUBDIR_SRCS "${MODULE_NAME}/*.cpp")\r
40                 list(SORT MODULES_SUBDIR_SRCS)\r
41                 add_library(${SO_NAME} MODULE ${MODULES_SUBDIR_SRCS})\r
42         else(IS_DIRECTORY "${MODULE_NAME}")\r
43                 add_library(${SO_NAME} MODULE ${MODULE_NAME})\r
44         endif(IS_DIRECTORY "${MODULE_NAME}")\r
45 \r
46         # Generate the module and set its linker flags, also set it to depend on the main executable to be built beforehand\r
47         target_link_libraries(${SO_NAME} inspircd)\r
48         add_dependencies(${SO_NAME} inspircd)\r
49         if(MSVC)\r
50                 target_link_libraries(${SO_NAME} win32_memory)\r
51                 add_dependencies(${SO_NAME} win32_memory)\r
52         endif(MSVC)\r
53 \r
54         if(CONAN_CXX_FLAGS)\r
55                 conan_target_link_libraries("${SO_NAME}")\r
56         endif()\r
57 \r
58         set_target_properties(${SO_NAME} PROPERTIES\r
59                 PREFIX ""\r
60                 SUFFIX ""\r
61                 COMPILE_DEFINITIONS "MODNAME=\"${BASE_NAME}\""\r
62         )\r
63 \r
64         # Set the module to be installed to the module directory\r
65         install(TARGETS ${SO_NAME} DESTINATION ${MODULE_DIR})\r
66 endforeach(MODULE_NAME ${INSPIRCD_MODULES})\r