]> git.proxmox.com Git - ceph.git/blame - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/portable-snippets/CMakeLists.txt
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / ports / portable-snippets / CMakeLists.txt
CommitLineData
1e59de90
TL
1cmake_minimum_required(VERSION 3.14)\r
2\r
3project(portable-snippets LANGUAGES C)\r
4\r
5include(GNUInstallDirs)\r
6\r
7option(PSNIP_INSTALL_HEADERS "Install header files" ON)\r
8\r
9# https://stackoverflow.com/questions/7787823/cmake-how-to-get-the-name-of-all-subdirectories-of-a-directory\r
10function (list_subdir output_variable path)\r
11 file(GLOB sub_entries RELATIVE ${path} ${path}/*)\r
12\r
13 set(dirlist "")\r
14\r
15 foreach (entry ${sub_entries})\r
16 if (IS_DIRECTORY ${path}/${entry})\r
17 list(APPEND dirlist ${entry})\r
18 endif ()\r
19 endforeach ()\r
20\r
21 set(${output_variable} ${dirlist} PARENT_SCOPE)\r
22endfunction ()\r
23\r
24function (check_if_header_only output_variable files)\r
25 set(is_header_only 1)\r
26\r
27 foreach (entry ${files})\r
28 get_filename_component(file_ext ${entry} EXT)\r
29 if (file_ext STREQUAL .c)\r
30 set(is_header_only 0)\r
31 endif ()\r
32 endforeach ()\r
33\r
34 set(${output_variable} ${is_header_only} PARENT_SCOPE)\r
35endfunction ()\r
36\r
37list_subdir(subdirs ${CMAKE_CURRENT_LIST_DIR})\r
38list(REMOVE_ITEM subdirs tests)\r
39\r
40set(namespace unofficial::portable-snippets)\r
41\r
42foreach (subdir ${subdirs})\r
43 set(module ${subdir})\r
44 set(module_path "${CMAKE_CURRENT_LIST_DIR}/${subdir}")\r
45\r
46 file(GLOB entries\r
47 LIST_DIRECTORIES false\r
48 ${module_path}/*.h\r
49 ${module_path}/*.c\r
50 )\r
51\r
52 check_if_header_only(header_only "${entries}")\r
53\r
54 if (header_only)\r
55 add_library(${module} INTERFACE)\r
56\r
57 target_include_directories(\r
58 ${module}\r
59 INTERFACE\r
60 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>\r
61 )\r
62 else ()\r
63 add_library(${module} STATIC ${entries})\r
64\r
65 set_target_properties(\r
66 ${module}\r
67 PROPERTIES\r
68 PREFIX ""\r
69 OUTPUT_NAME "psnip-${module}"\r
70 )\r
71\r
72 target_include_directories(\r
73 ${module}\r
74 PUBLIC\r
75 $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}>\r
76 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>\r
77 )\r
78\r
79 list(FILTER entries EXCLUDE REGEX "\.c$")\r
80 endif ()\r
81\r
82 add_library(${namespace}::${module} ALIAS ${module})\r
83\r
84 if (PSNIP_INSTALL_HEADERS)\r
85 install(FILES ${entries} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${subdir})\r
86 endif ()\r
87\r
88 install(TARGETS ${module} EXPORT unofficial-portable-snippets-config)\r
89endforeach ()\r
90\r
91install(\r
92 EXPORT unofficial-portable-snippets-config\r
93 NAMESPACE ${namespace}::\r
94 DESTINATION share/unofficial-portable-snippets\r
95 PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ\r
96)\r