]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/glibmm/CMakeLists.txt
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / ports / glibmm / CMakeLists.txt
CommitLineData
1e59de90
TL
1cmake_minimum_required(VERSION 3.9)\r
2project(glibmm)\r
3\r
4set(CMAKE_CXX_STANDARD 17)\r
5\r
6set(GLIBMM_DLL_SUFFIX 2)\r
7set(GLIBMM_LIB_SUFFIX 2.0)\r
8set(GLIBMM_EXTRA_LIB_SUFFIX 2.4)\r
9\r
10find_path(GLIB_INCLUDE_DIR NAMES glib.h)\r
11find_library(GLIB_LIBRARY NAMES glib-2.0)\r
12find_library(GIO_LIBRARY NAMES gio-2.0)\r
13find_library(GOBJECT_LIBRARY NAMES gobject-2.0)\r
14find_library(GMODULE_LIBRARY NAMES gmodule-2.0)\r
15find_library(GTHREAD_LIBRARY NAMES gthread-2.0)\r
16find_program(GLIB_COMPILE_SCHEMAS NAMES glib-compile-schemas)\r
17find_library(PCRE_LIBRARY NAMES pcre)\r
18find_library(SIGC_LIBRARY NAMES sigc-2.0)\r
19find_library(FFI_LIBRARY NAMES ffi libffi)\r
20\r
21include_directories(${GLIB_INCLUDE_DIR})\r
22link_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
33find_package(Intl REQUIRED)\r
34find_package(Iconv REQUIRED)\r
35link_libraries(${Intl_LIBRARIES} Iconv::Iconv)\r
36\r
37if(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
42endif()\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
47if (WIN32)\r
48 set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)\r
49endif()\r
50\r
51if(NOT BUILD_SHARED_LIBS)\r
52 add_definitions(-DGLIBMM_STATIC_LIB -DGIOMM_STATIC_LIB)\r
53endif()\r
54\r
55if(WIN32)\r
56 add_compile_options(/FI${WARNINGS_HEADER} -DSIZEOF_WCHAR_T=2)\r
57else()\r
58 set(THREADS_PREFER_PTHREAD_FLAG ON)\r
59 find_package(Threads REQUIRED)\r
60 link_libraries(Threads::Threads ${CMAKE_DL_LIBS})\r
61endif()\r
62\r
63if(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
66else()\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
83endif()\r
84\r
85file(GLOB GLIBMM_SOURCES glib/glibmm/*.cc)\r
86add_library(glibmm ${GLIBMM_SOURCES})\r
87target_compile_definitions(glibmm PRIVATE -DGLIBMM_BUILD)\r
88target_include_directories(glibmm PUBLIC glib ${CMAKE_BINARY_DIR}/config/glib)\r
89set_target_properties(glibmm PROPERTIES OUTPUT_NAME glibmm-${GLIBMM_DLL_SUFFIX} ARCHIVE_OUTPUT_NAME glibmm-${GLIBMM_LIB_SUFFIX})\r
90\r
91set(GLIBMM_EXTRA_SOURCES tools/extra_defs_gen/generate_extra_defs.cc)\r
92add_library(glibmm_generate_extra_defs ${GLIBMM_EXTRA_SOURCES})\r
93target_include_directories(glibmm_generate_extra_defs PUBLIC glib ${CMAKE_BINARY_DIR}/config/glib)\r
94set_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
98set(prefix ${CMAKE_INSTALL_PREFIX})\r
99set(exec_prefix ${CMAKE_INSTALL_PREFIX})\r
100set(libdir ${CMAKE_INSTALL_PREFIX}/lib)\r
101set(includedir ${CMAKE_INSTALL_PREFIX}/include)\r
102set(GLIBMM_API_VERSION 2.0)\r
103set(GLIBMM_MODULE_NAME glibmm)\r
104set(PACKAGE_VERSION 2.52.1)\r
105configure_file("${CMAKE_CURRENT_SOURCE_DIR}/glib/glibmm.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/glibmm.pc" @ONLY)\r
106install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glibmm.pc" DESTINATION lib/pkgconfig)\r
107install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glibmm.pc" DESTINATION lib/pkgconfig RENAME glibmm-2.4.pc)\r
108\r
109file(GLOB GIOMM_SOURCES gio/giomm/*.cc)\r
110if(WIN32)\r
111 list(FILTER GIOMM_SOURCES EXCLUDE REGEX "desktopappinfo.cc\$|/unix[^/]+.cc\$")\r
112endif()\r
113add_library(giomm ${GIOMM_SOURCES})\r
114target_compile_definitions(giomm PRIVATE -DGIOMM_BUILD)\r
115target_link_libraries(giomm PUBLIC glibmm)\r
116target_include_directories(giomm PUBLIC gio ${CMAKE_BINARY_DIR}/config/gio)\r
117\r
118install(\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
125if(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
144endif()\r
145\r
146if(NOT DISABLE_EXAMPLES)\r
147 add_executable(options examples/options/main.cc)\r
148 target_link_libraries(options PRIVATE giomm)\r
149endif()\r