]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/crashpad/portfile.cmake
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / ports / crashpad / portfile.cmake
1 vcpkg_fail_port_install(
2 ON_ARCH "x86" "arm" "arm64"
3 ON_TARGET "UWP" "LINUX")
4
5 vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
6
7 vcpkg_from_git(
8 OUT_SOURCE_PATH SOURCE_PATH
9 URL https://chromium.googlesource.com/crashpad/crashpad
10 REF 9a31d3f8e9815774026a753a1ff6155347cd549f
11 )
12
13 function(checkout_in_path PATH URL REF)
14 if(EXISTS "${PATH}")
15 return()
16 endif()
17
18 vcpkg_from_git(
19 OUT_SOURCE_PATH DEP_SOURCE_PATH
20 URL "${URL}"
21 REF "${REF}"
22 )
23 file(RENAME "${DEP_SOURCE_PATH}" "${PATH}")
24 file(REMOVE_RECURSE "${DEP_SOURCE_PATH}")
25 endfunction()
26
27 # mini_chromium contains the toolchains and build configuration
28 checkout_in_path(
29 "${SOURCE_PATH}/third_party/mini_chromium/mini_chromium"
30 "https://chromium.googlesource.com/chromium/mini_chromium"
31 "c426ff98e1d9e9d59777fe8b883a5c0ceeca9ca3"
32 )
33
34 function(replace_gn_dependency INPUT_FILE OUTPUT_FILE LIBRARY_NAMES)
35 unset(_LIBRARY_DEB CACHE)
36 find_library(_LIBRARY_DEB NAMES ${LIBRARY_NAMES}
37 PATHS "${CURRENT_INSTALLED_DIR}/debug/lib"
38 NO_DEFAULT_PATH)
39
40 if(_LIBRARY_DEB MATCHES "-NOTFOUND")
41 message(FATAL_ERROR "Could not find debug library with names: ${LIBRARY_NAMES}")
42 endif()
43
44 unset(_LIBRARY_REL CACHE)
45 find_library(_LIBRARY_REL NAMES ${LIBRARY_NAMES}
46 PATHS "${CURRENT_INSTALLED_DIR}/lib"
47 NO_DEFAULT_PATH)
48
49 if(_LIBRARY_REL MATCHES "-NOTFOUND")
50 message(FATAL_ERROR "Could not find library with names: ${LIBRARY_NAMES}")
51 endif()
52
53 set(_INCLUDE_DIR "${CURRENT_INSTALLED_DIR}/include")
54
55 file(REMOVE "${OUTPUT_FILE}")
56 configure_file("${INPUT_FILE}" "${OUTPUT_FILE}" @ONLY)
57 endfunction()
58
59 replace_gn_dependency(
60 "${CMAKE_CURRENT_LIST_DIR}/zlib.gn"
61 "${SOURCE_PATH}/third_party/zlib/BUILD.gn"
62 "z;zlib;zlibd"
63 )
64
65 set(OPTIONS_DBG "is_debug=true")
66 set(OPTIONS_REL "")
67
68 if(CMAKE_HOST_WIN32)
69 # Load toolchains
70 if(NOT VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
71 set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/windows.cmake")
72 endif()
73 include("${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}")
74
75 foreach(_VAR CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS
76 CMAKE_C_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELEASE)
77 string(STRIP "${${_VAR}}" ${_VAR})
78 endforeach()
79
80 set(OPTIONS_DBG "${OPTIONS_DBG} \
81 extra_cflags_c=\"${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG}\" \
82 extra_cflags_cc=\"${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}\"")
83
84 set(OPTIONS_REL "${OPTIONS_REL} \
85 extra_cflags_c=\"${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE}\" \
86 extra_cflags_cc=\"${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}\"")
87
88 set(DISABLE_WHOLE_PROGRAM_OPTIMIZATION "\
89 extra_cflags=\"/GL-\" \
90 extra_ldflags=\"/LTCG:OFF\" \
91 extra_arflags=\"/LTCG:OFF\"")
92
93 set(OPTIONS_DBG "${OPTIONS_DBG} ${DISABLE_WHOLE_PROGRAM_OPTIMIZATION}")
94 set(OPTIONS_REL "${OPTIONS_REL} ${DISABLE_WHOLE_PROGRAM_OPTIMIZATION}")
95 endif()
96
97 vcpkg_configure_gn(
98 SOURCE_PATH "${SOURCE_PATH}"
99 OPTIONS_DEBUG "${OPTIONS_DBG}"
100 OPTIONS_RELEASE "${OPTIONS_REL}"
101 )
102
103 vcpkg_install_gn(
104 SOURCE_PATH "${SOURCE_PATH}"
105 TARGETS client util third_party/mini_chromium/mini_chromium/base handler:crashpad_handler
106 )
107
108 message(STATUS "Installing headers...")
109 set(PACKAGES_INCLUDE_DIR "${CURRENT_PACKAGES_DIR}/include/${PORT}")
110 function(install_headers DIR)
111 file(COPY "${DIR}" DESTINATION "${PACKAGES_INCLUDE_DIR}" FILES_MATCHING PATTERN "*.h")
112 endfunction()
113 install_headers("${SOURCE_PATH}/client")
114 install_headers("${SOURCE_PATH}/util")
115 install_headers("${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/base")
116 install_headers("${SOURCE_PATH}/third_party/mini_chromium/mini_chromium/build")
117
118 # remove empty directories
119 file(REMOVE_RECURSE
120 "${PACKAGES_INCLUDE_DIR}/util/net/testdata"
121 "${PACKAGES_INCLUDE_DIR}/build/ios")
122
123 configure_file("${CMAKE_CURRENT_LIST_DIR}/crashpadConfig.cmake.in"
124 "${CURRENT_PACKAGES_DIR}/share/${PORT}/crashpadConfig.cmake" @ONLY)
125
126 vcpkg_copy_pdbs()
127 file(INSTALL "${SOURCE_PATH}/LICENSE"
128 DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}"
129 RENAME copyright)