]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | cmake_minimum_required(VERSION 3.9)\r |
2 | project(glibmm)\r | |
3 | \r | |
4 | set(CMAKE_CXX_STANDARD 17)\r | |
5 | \r | |
6 | set(GLIBMM_DLL_SUFFIX 2)\r | |
7 | set(GLIBMM_LIB_SUFFIX 2.0)\r | |
8 | set(GLIBMM_EXTRA_LIB_SUFFIX 2.4)\r | |
9 | \r | |
10 | find_path(GLIB_INCLUDE_DIR NAMES glib.h)\r | |
11 | find_library(GLIB_LIBRARY NAMES glib-2.0)\r | |
12 | find_library(GIO_LIBRARY NAMES gio-2.0)\r | |
13 | find_library(GOBJECT_LIBRARY NAMES gobject-2.0)\r | |
14 | find_library(GMODULE_LIBRARY NAMES gmodule-2.0)\r | |
15 | find_library(GTHREAD_LIBRARY NAMES gthread-2.0)\r | |
16 | find_program(GLIB_COMPILE_SCHEMAS NAMES glib-compile-schemas)\r | |
17 | find_library(PCRE_LIBRARY NAMES pcre)\r | |
18 | find_library(SIGC_LIBRARY NAMES sigc-2.0)\r | |
19 | find_library(FFI_LIBRARY NAMES ffi libffi)\r | |
20 | \r | |
21 | include_directories(${GLIB_INCLUDE_DIR})\r | |
22 | link_libraries(\r | |
23 | ${GIO_LIBRARY}\r | |
24 | ${GOBJECT_LIBRARY}\r | |
25 | ${GMODULE_LIBRARY}\r | |
26 | ${GTHREAD_LIBRARY}\r | |
27 | ${GLIB_LIBRARY}\r | |
28 | ${PCRE_LIBRARY}\r | |
29 | ${SIGC_LIBRARY}\r | |
30 | ${FFI_LIBRARY}\r | |
31 | )\r | |
32 | \r | |
33 | find_package(Intl REQUIRED)\r | |
34 | find_package(Iconv REQUIRED)\r | |
35 | link_libraries(${Intl_LIBRARIES} Iconv::Iconv)\r | |
36 | \r | |
37 | if(APPLE)\r | |
38 | find_library(COREFOUNDATION_LIBRARY CoreFoundation)\r | |
39 | find_library(CORESERVICES_LIBRARY CoreServices)\r | |
40 | find_library(FOUNDATION_LIBRARY Foundation)\r | |
41 | link_libraries(${COREFOUNDATION_LIBRARY} ${CORESERVICES_LIBRARY} ${FOUNDATION_LIBRARY})\r | |
42 | endif()\r | |
43 | \r | |
44 | # Activate workaround for exporting all symbols from Windows DLLs to mimic the \r | |
45 | # behavior on Linux, where dynamic libraries always export all symbols.\r | |
46 | # The same approach was already used by the upstream MSVC build (see MSVC_NMake/gendef/gendef.cc)\r | |
47 | if (WIN32)\r | |
48 | set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)\r | |
49 | endif()\r | |
50 | \r | |
51 | if(NOT BUILD_SHARED_LIBS)\r | |
52 | add_definitions(-DGLIBMM_STATIC_LIB -DGIOMM_STATIC_LIB)\r | |
53 | endif()\r | |
54 | \r | |
55 | if(WIN32)\r | |
56 | add_compile_options(/FI${WARNINGS_HEADER} -DSIZEOF_WCHAR_T=2)\r | |
57 | else()\r | |
58 | set(THREADS_PREFER_PTHREAD_FLAG ON)\r | |
59 | find_package(Threads REQUIRED)\r | |
60 | link_libraries(Threads::Threads ${CMAKE_DL_LIBS})\r | |
61 | endif()\r | |
62 | \r | |
63 | if(WIN32)\r | |
64 | configure_file(MSVC_Net2013/giomm/giommconfig.h ${CMAKE_BINARY_DIR}/config/gio/giommconfig.h COPYONLY)\r | |
65 | configure_file(MSVC_Net2013/glibmm/glibmmconfig.h ${CMAKE_BINARY_DIR}/config/glib/glibmmconfig.h COPYONLY)\r | |
66 | else()\r | |
67 | set(ENV{GLIB_COMPILE_SCHEMAS} "${GLIB_COMPILE_SCHEMAS}")\r | |
68 | set(ENV{GLIBMM_CFLAGS} -I${GLIB_INCLUDE_DIR})\r | |
69 | set(ENV{GLIBMM_LIBS} "${GLIB_LIBRARY}")\r | |
70 | set(ENV{GIOMM_CFLAGS} -I${GLIB_INCLUDE_DIR})\r | |
71 | set(ENV{GIOMM_LIBS} "${GIO_LIBRARY}")\r | |
72 | set(ENV{PKG_CONFIG} "echo")\r | |
73 | \r | |
74 | file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/config)\r | |
75 | execute_process(\r | |
76 | COMMAND "${CMAKE_SOURCE_DIR}/configure"\r | |
77 | WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/config\r | |
78 | RESULT_VARIABLE res\r | |
79 | )\r | |
80 | if(NOT res EQUAL 0)\r | |
81 | message(FATAL_ERROR "Configure failed.")\r | |
82 | endif()\r | |
83 | endif()\r | |
84 | \r | |
85 | file(GLOB GLIBMM_SOURCES glib/glibmm/*.cc)\r | |
86 | add_library(glibmm ${GLIBMM_SOURCES})\r | |
87 | target_compile_definitions(glibmm PRIVATE -DGLIBMM_BUILD)\r | |
88 | target_include_directories(glibmm PUBLIC glib ${CMAKE_BINARY_DIR}/config/glib)\r | |
89 | set_target_properties(glibmm PROPERTIES OUTPUT_NAME glibmm-${GLIBMM_DLL_SUFFIX} ARCHIVE_OUTPUT_NAME glibmm-${GLIBMM_LIB_SUFFIX})\r | |
90 | \r | |
91 | set(GLIBMM_EXTRA_SOURCES tools/extra_defs_gen/generate_extra_defs.cc)\r | |
92 | add_library(glibmm_generate_extra_defs ${GLIBMM_EXTRA_SOURCES})\r | |
93 | target_include_directories(glibmm_generate_extra_defs PUBLIC glib ${CMAKE_BINARY_DIR}/config/glib)\r | |
94 | set_target_properties(glibmm_generate_extra_defs PROPERTIES \r | |
95 | OUTPUT_NAME glibmm_generate_extra_defs-${GLIBMM_EXTRA_LIB_SUFFIX}\r | |
96 | ARCHIVE_OUTPUT_NAME glibmm_generate_extra_defs-${GLIBMM_EXTRA_LIB_SUFFIX})\r | |
97 | \r | |
98 | set(prefix ${CMAKE_INSTALL_PREFIX})\r | |
99 | set(exec_prefix ${CMAKE_INSTALL_PREFIX})\r | |
100 | set(libdir ${CMAKE_INSTALL_PREFIX}/lib)\r | |
101 | set(includedir ${CMAKE_INSTALL_PREFIX}/include)\r | |
102 | set(GLIBMM_API_VERSION 2.0)\r | |
103 | set(GLIBMM_MODULE_NAME glibmm)\r | |
104 | set(PACKAGE_VERSION 2.52.1)\r | |
105 | configure_file("${CMAKE_CURRENT_SOURCE_DIR}/glib/glibmm.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/glibmm.pc" @ONLY)\r | |
106 | install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glibmm.pc" DESTINATION lib/pkgconfig)\r | |
107 | install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glibmm.pc" DESTINATION lib/pkgconfig RENAME glibmm-2.4.pc)\r | |
108 | \r | |
109 | file(GLOB GIOMM_SOURCES gio/giomm/*.cc)\r | |
110 | if(WIN32)\r | |
111 | list(FILTER GIOMM_SOURCES EXCLUDE REGEX "desktopappinfo.cc\$|/unix[^/]+.cc\$")\r | |
112 | endif()\r | |
113 | add_library(giomm ${GIOMM_SOURCES})\r | |
114 | target_compile_definitions(giomm PRIVATE -DGIOMM_BUILD)\r | |
115 | target_link_libraries(giomm PUBLIC glibmm)\r | |
116 | target_include_directories(giomm PUBLIC gio ${CMAKE_BINARY_DIR}/config/gio)\r | |
117 | \r | |
118 | install(\r | |
119 | TARGETS glibmm giomm glibmm_generate_extra_defs\r | |
120 | RUNTIME DESTINATION bin\r | |
121 | ARCHIVE DESTINATION lib\r | |
122 | LIBRARY DESTINATION lib\r | |
123 | )\r | |
124 | \r | |
125 | if(NOT DISABLE_INSTALL_HEADERS)\r | |
126 | install(\r | |
127 | FILES\r | |
128 | ${CMAKE_BINARY_DIR}/config/gio/giommconfig.h\r | |
129 | gio/giomm.h\r | |
130 | ${CMAKE_BINARY_DIR}/config/glib/glibmmconfig.h\r | |
131 | glib/glibmm.h\r | |
132 | DESTINATION include\r | |
133 | )\r | |
134 | install(\r | |
135 | DIRECTORY gio/giomm glib/glibmm\r | |
136 | DESTINATION include\r | |
137 | FILES_MATCHING PATTERN *.h\r | |
138 | )\r | |
139 | install(\r | |
140 | DIRECTORY tools/extra_defs_gen/\r | |
141 | DESTINATION include/glibmm_generate_extra_defs/\r | |
142 | FILES_MATCHING PATTERN *.h\r | |
143 | )\r | |
144 | endif()\r | |
145 | \r | |
146 | if(NOT DISABLE_EXAMPLES)\r | |
147 | add_executable(options examples/options/main.cc)\r | |
148 | target_link_libraries(options PRIVATE giomm)\r | |
149 | endif()\r |