]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/icu/portfile.cmake
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / ports / icu / portfile.cmake
1 vcpkg_fail_port_install(ON_TARGET "uwp")
2
3 set(ICU_VERSION_MAJOR 69)
4 set(ICU_VERSION_MINOR 1)
5 set(VERSION "${ICU_VERSION_MAJOR}.${ICU_VERSION_MINOR}")
6 set(VERSION2 "${ICU_VERSION_MAJOR}_${ICU_VERSION_MINOR}")
7 set(VERSION3 "${ICU_VERSION_MAJOR}-${ICU_VERSION_MINOR}")
8
9 vcpkg_download_distfile(
10 ARCHIVE
11 URLS "https://github.com/unicode-org/icu/releases/download/release-${VERSION3}/icu4c-${VERSION2}-src.tgz"
12 FILENAME "icu4c-${VERSION2}-src.tgz"
13 SHA512 d4aeb781715144ea6e3c6b98df5bbe0490bfa3175221a1d667f3e6851b7bd4a638fa4a37d4a921ccb31f02b5d15a6dded9464d98051964a86f7b1cde0ff0aab7
14 )
15 vcpkg_extract_source_archive_ex(
16 OUT_SOURCE_PATH SOURCE_PATH
17 ARCHIVE ${ARCHIVE}
18 PATCHES
19 ${CMAKE_CURRENT_LIST_DIR}/disable-escapestr-tool.patch
20 ${CMAKE_CURRENT_LIST_DIR}/remove-MD-from-configure.patch
21 ${CMAKE_CURRENT_LIST_DIR}/fix_parallel_build_on_windows.patch
22 ${CMAKE_CURRENT_LIST_DIR}/fix-extra.patch
23 )
24
25 vcpkg_find_acquire_program(PYTHON3)
26 set(ENV{PYTHON} "${PYTHON3}")
27
28 list(APPEND CONFIGURE_OPTIONS --disable-samples --disable-tests --disable-layoutex)
29
30 list(APPEND CONFIGURE_OPTIONS_RELEASE --disable-debug --enable-release)
31 list(APPEND CONFIGURE_OPTIONS_DEBUG --enable-debug --disable-release)
32
33 set(RELEASE_TRIPLET ${TARGET_TRIPLET}-rel)
34 set(DEBUG_TRIPLET ${TARGET_TRIPLET}-dbg)
35
36 if(NOT "${TARGET_TRIPLET}" STREQUAL "${HOST_TRIPLET}")
37 # cross compiling
38 list(APPEND CONFIGURE_OPTIONS "--with-cross-build=${_VCPKG_INSTALLED_DIR}/${HOST_TRIPLET}/tools/${PORT}")
39 endif()
40
41 if(VCPKG_TARGET_IS_WINDOWS)
42 if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
43 set(BUILD_TRIPLET --host=x86_64-w64-mingw32)
44 else()
45 set(BUILD_TRIPLET --host=i686-w64-mingw32)
46 endif()
47 endif()
48
49 vcpkg_configure_make(
50 SOURCE_PATH ${SOURCE_PATH}
51 PROJECT_SUBPATH source
52 BUILD_TRIPLET ${BUILD_TRIPLET}
53 OPTIONS ${CONFIGURE_OPTIONS}
54 OPTIONS_RELEASE ${CONFIGURE_OPTIONS_RELEASE}
55 OPTIONS_DEBUG ${CONFIGURE_OPTIONS_DEBUG}
56 )
57
58 if(VCPKG_TARGET_IS_OSX AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic" AND (NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release"))
59
60 vcpkg_build_make()
61 # remove this block if https://unicode-org.atlassian.net/browse/ICU-21458
62 # is resolved and use the configure script instead
63 if(DEFINED CMAKE_INSTALL_NAME_DIR)
64 set(ID_PREFIX "${CMAKE_INSTALL_NAME_DIR}")
65 else()
66 set(ID_PREFIX "@rpath")
67 endif()
68
69 # install_name_tool may be missing if cross-compiling
70 find_program(
71 INSTALL_NAME_TOOL
72 install_name_tool
73 HINTS /usr/bin /Library/Developer/CommandLineTools/usr/bin/
74 DOC "Absolute path of install_name_tool"
75 REQUIRED
76 )
77
78 message(STATUS "setting rpath prefix for macOS dynamic libraries")
79
80 # add ID_PREFIX to libicudata libicui18n libicuio libicutu libicuuc
81 foreach(LIB_NAME libicudata libicui18n libicuio libicutu libicuuc)
82 vcpkg_execute_build_process(
83 COMMAND ${INSTALL_NAME_TOOL} -id "${ID_PREFIX}/${LIB_NAME}.${ICU_VERSION_MAJOR}.dylib"
84 "${LIB_NAME}.${VERSION}.dylib"
85 WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${RELEASE_TRIPLET}/lib"
86 LOGNAME "make-build-fix-rpath-${RELEASE_TRIPLET}"
87 )
88 endforeach()
89
90 # add ID_PREFIX to libicui18n libicuio libicutu dependencies
91 foreach(LIB_NAME libicui18n libicuio)
92 vcpkg_execute_build_process(
93 COMMAND ${INSTALL_NAME_TOOL} -change "libicuuc.${ICU_VERSION_MAJOR}.dylib"
94 "${ID_PREFIX}/libicuuc.${ICU_VERSION_MAJOR}.dylib"
95 "${LIB_NAME}.${VERSION}.dylib"
96 WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${RELEASE_TRIPLET}/lib"
97 LOGNAME "make-build-fix-rpath-${RELEASE_TRIPLET}"
98 )
99 vcpkg_execute_build_process(
100 COMMAND ${INSTALL_NAME_TOOL} -change "libicudata.${ICU_VERSION_MAJOR}.dylib"
101 "${ID_PREFIX}/libicudata.${ICU_VERSION_MAJOR}.dylib"
102 "${LIB_NAME}.${VERSION}.dylib"
103 WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${RELEASE_TRIPLET}/lib"
104 LOGNAME "make-build-fix-rpath-${RELEASE_TRIPLET}"
105 )
106 endforeach()
107
108 # add ID_PREFIX to remaining libicuio libicutu dependencies
109 foreach(LIB_NAME libicuio libicutu)
110 vcpkg_execute_build_process(
111 COMMAND ${INSTALL_NAME_TOOL} -change "libicui18n.${ICU_VERSION_MAJOR}.dylib"
112 "${ID_PREFIX}/libicui18n.${ICU_VERSION_MAJOR}.dylib"
113 "${LIB_NAME}.${VERSION}.dylib"
114 WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${RELEASE_TRIPLET}/lib"
115 LOGNAME "make-build-fix-rpath-${RELEASE_TRIPLET}"
116 )
117 endforeach()
118
119 # add ID_PREFIX to libicuuc dependencies
120 vcpkg_execute_build_process(
121 COMMAND ${INSTALL_NAME_TOOL} -change "libicudata.${ICU_VERSION_MAJOR}.dylib"
122 "${ID_PREFIX}/libicudata.${ICU_VERSION_MAJOR}.dylib"
123 "libicuuc.${VERSION}.dylib"
124 WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${RELEASE_TRIPLET}/lib"
125 LOGNAME "make-build-fix-rpath-${RELEASE_TRIPLET}"
126 )
127
128 # make install
129 vcpkg_execute_build_process(
130 COMMAND bash --noprofile --norc -c "make install"
131 WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${RELEASE_TRIPLET}"
132 LOGNAME "make-install-${RELEASE_TRIPLET}")
133 message(STATUS "Package ${RELEASE_TRIPLET} done")
134
135 else()
136 vcpkg_install_make()
137 endif()
138
139 if(VCPKG_TARGET_IS_MINGW)
140 file(GLOB ICU_TOOLS
141 ${CURRENT_PACKAGES_DIR}/bin/*${VCPKG_HOST_EXECUTABLE_SUFFIX}
142 ${CURRENT_PACKAGES_DIR}/debug/bin/*${VCPKG_HOST_EXECUTABLE_SUFFIX}
143 ${CURRENT_PACKAGES_DIR}/bin/icu-config
144 ${CURRENT_PACKAGES_DIR}/debug/bin/icu-config)
145 file(REMOVE ${ICU_TOOLS})
146 endif()
147
148 file(REMOVE_RECURSE
149 ${CURRENT_PACKAGES_DIR}/share
150 ${CURRENT_PACKAGES_DIR}/debug/share
151 ${CURRENT_PACKAGES_DIR}/lib/icu
152 ${CURRENT_PACKAGES_DIR}/debug/lib/icu
153 ${CURRENT_PACKAGES_DIR}/debug/lib/icud)
154
155 file(GLOB TEST_LIBS
156 ${CURRENT_PACKAGES_DIR}/lib/*test*
157 ${CURRENT_PACKAGES_DIR}/debug/lib/*test*)
158 file(REMOVE ${TEST_LIBS})
159
160 if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
161 if(VCPKG_TARGET_IS_WINDOWS)
162 # rename static libraries to match import libs
163 # see https://gitlab.kitware.com/cmake/cmake/issues/16617
164 foreach(MODULE dt in io tu uc)
165 if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
166 file(RENAME ${CURRENT_PACKAGES_DIR}/lib/sicu${MODULE}${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX} ${CURRENT_PACKAGES_DIR}/lib/icu${MODULE}${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX})
167 endif()
168
169 if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
170 file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/sicu${MODULE}d${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX} ${CURRENT_PACKAGES_DIR}/debug/lib/icu${MODULE}d${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX})
171 endif()
172 endforeach()
173
174 file(GLOB_RECURSE pkg_files LIST_DIRECTORIES false ${CURRENT_PACKAGES_DIR}/*.pc)
175 message(STATUS "${pkg_files}")
176 foreach(pkg_file IN LISTS pkg_files)
177 message(STATUS "${pkg_file}")
178 file(READ ${pkg_file} PKG_FILE)
179 string(REGEX REPLACE "-ls([^ \\t\\n]+)" "-l\\1" PKG_FILE "${PKG_FILE}" )
180 file(WRITE ${pkg_file} "${PKG_FILE}")
181 endforeach()
182 endif()
183
184 # force U_STATIC_IMPLEMENTATION macro
185 foreach(HEADER utypes.h utf_old.h platform.h)
186 file(READ ${CURRENT_PACKAGES_DIR}/include/unicode/${HEADER} HEADER_CONTENTS)
187 string(REPLACE "defined(U_STATIC_IMPLEMENTATION)" "1" HEADER_CONTENTS "${HEADER_CONTENTS}")
188 file(WRITE ${CURRENT_PACKAGES_DIR}/include/unicode/${HEADER} "${HEADER_CONTENTS}")
189 endforeach()
190 endif()
191
192 # Install executables from /tools/icu/sbin to /tools/icu/bin on unix (/bin because icu require this for cross compiling)
193 if(VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX)
194 vcpkg_copy_tools(
195 TOOL_NAMES icupkg gennorm2 gencmn genccode gensprep
196 SEARCH_DIR ${CURRENT_PACKAGES_DIR}/tools/icu/sbin
197 DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin
198 )
199 endif()
200
201 file(REMOVE_RECURSE
202 ${CURRENT_PACKAGES_DIR}/tools/icu/sbin
203 ${CURRENT_PACKAGES_DIR}/tools/icu/debug)
204
205 # To cross compile, we need some files at specific positions. So lets copy them
206 file(GLOB CROSS_COMPILE_DEFS ${CURRENT_BUILDTREES_DIR}/${RELEASE_TRIPLET}/config/icucross.*)
207 file(INSTALL ${CROSS_COMPILE_DEFS} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT}/config)
208
209 if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
210 file(GLOB RELEASE_DLLS ${CURRENT_PACKAGES_DIR}/lib/icu*${ICU_VERSION_MAJOR}.dll)
211 file(COPY ${RELEASE_DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin)
212 endif()
213
214 # copy dlls
215 if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
216 file(GLOB RELEASE_DLLS ${CURRENT_PACKAGES_DIR}/lib/icu*${ICU_VERSION_MAJOR}.dll)
217 file(COPY ${RELEASE_DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
218 endif()
219 if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
220 file(GLOB DEBUG_DLLS ${CURRENT_PACKAGES_DIR}/debug/lib/icu*${ICU_VERSION_MAJOR}.dll)
221 file(COPY ${DEBUG_DLLS} DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
222 endif()
223
224 # remove any remaining dlls in /lib
225 file(GLOB DUMMY_DLLS ${CURRENT_PACKAGES_DIR}/lib/*.dll ${CURRENT_PACKAGES_DIR}/debug/lib/*.dll)
226 if(DUMMY_DLLS)
227 file(REMOVE ${DUMMY_DLLS})
228 endif()
229
230 vcpkg_copy_pdbs()
231 vcpkg_fixup_pkgconfig(SYSTEM_LIBRARIES pthread m)
232
233 # Handle copyright
234 file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)