]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/tools/vcpkg/ports/openssl/unix/CMakeLists.txt
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / tools / vcpkg / ports / openssl / unix / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.9)
2 project(openssl C)
3
4 if(NOT SOURCE_PATH)
5 message(FATAL_ERROR "Requires SOURCE_PATH")
6 endif()
7
8 if(CMAKE_SYSTEM_NAME STREQUAL "Android" OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
9 if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
10 set(PLATFORM linux-x86_64)
11 else()
12 set(PLATFORM linux-generic32)
13 endif()
14 elseif(CMAKE_SYSTEM_NAME STREQUAL "iOS")
15 if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm64")
16 set(PLATFORM ios64-xcrun)
17 elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "arm")
18 set(PLATFORM ios-xcrun)
19 elseif(VCPKG_TARGET_ARCHITECTURE MATCHES "x86" OR
20 VCPKG_TARGET_ARCHITECTURE MATCHES "x64")
21 set(PLATFORM iossimulator-xcrun)
22 else()
23 message(FATAL_ERROR "Unknown iOS target architecture: ${VCPKG_TARGET_ARCHITECTURE}")
24 endif()
25 # disable that makes linkage error (e.g. require stderr usage)
26 list(APPEND DISABLES no-stdio no-ui no-asm)
27 elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
28 if(VCPKG_TARGET_ARCHITECTURE MATCHES "arm64")
29 set(PLATFORM darwin64-arm64-cc)
30 else()
31 set(PLATFORM darwin64-x86_64-cc)
32 endif()
33 elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
34 set(PLATFORM BSD-generic64)
35 elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
36 set(PLATFORM BSD-generic64)
37 elseif(MINGW)
38 if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
39 set(PLATFORM mingw64)
40 else()
41 set(PLATFORM mingw)
42 endif()
43 else()
44 message(FATAL_ERROR "Unknown platform")
45 endif()
46
47 get_filename_component(COMPILER_ROOT "${CMAKE_C_COMPILER}" DIRECTORY)
48
49 message("CMAKE_C_COMPILER=${CMAKE_C_COMPILER}")
50 message("COMPILER_ROOT=${COMPILER_ROOT}")
51 message("CMAKE_SYSROOT=${CMAKE_SYSROOT}")
52 message("CMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}")
53 message("CMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
54 message("CMAKE_C_FLAGS=${CMAKE_C_FLAGS}")
55 message("CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}")
56 message("CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}")
57 message("CMAKE_INCLUDE_SYSTEM_FLAG_C=${CMAKE_INCLUDE_SYSTEM_FLAG_C}")
58 message("CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG=${CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG}")
59
60 set(CFLAGS "${CMAKE_C_FLAGS}")
61 if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
62 set(CFLAGS "-Wno-error=unused-command-line-argument ${CMAKE_C_FLAGS}")
63 endif()
64 if(CMAKE_C_COMPILER_TARGET AND CMAKE_C_COMPILE_OPTIONS_TARGET)
65 set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_TARGET}${CMAKE_C_COMPILER_TARGET}")
66 endif()
67 if(CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN AND CMAKE_C_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN)
68 set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN}${CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN}")
69 endif()
70 if(CMAKE_SYSROOT AND CMAKE_C_COMPILE_OPTIONS_SYSROOT)
71 set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_SYSROOT}${CMAKE_SYSROOT}")
72 elseif(CMAKE_OSX_SYSROOT AND CMAKE_C_COMPILE_OPTIONS_SYSROOT)
73 set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_SYSROOT}${CMAKE_OSX_SYSROOT}")
74 endif()
75 if (CMAKE_OSX_DEPLOYMENT_TARGET AND CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG)
76 set(CFLAGS "${CFLAGS} ${CMAKE_C_OSX_DEPLOYMENT_TARGET_FLAG}${CMAKE_OSX_DEPLOYMENT_TARGET}")
77 endif()
78
79 string(REGEX REPLACE "^ " "" CFLAGS "${CFLAGS}")
80
81 if(CMAKE_HOST_WIN32)
82 file(TO_NATIVE_PATH ENV_PATH "${COMPILER_ROOT};$ENV{PATH}")
83 else()
84 file(TO_NATIVE_PATH ENV_PATH "${COMPILER_ROOT}:$ENV{PATH}")
85 endif()
86 set(ENV{ANDROID_DEV} "${CMAKE_SYSROOT}/usr")
87 set(ENV{CC} "${CMAKE_C_COMPILER}")
88
89 message("ENV{ANDROID_DEV}=$ENV{ANDROID_DEV}")
90
91 get_filename_component(SOURCE_PATH_NAME "${SOURCE_PATH}" NAME)
92 set(BUILDDIR "${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_PATH_NAME}")
93
94 if(NOT EXISTS "${BUILDDIR}")
95 file(COPY ${SOURCE_PATH} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
96 endif()
97
98 get_filename_component(MSYS_BIN_DIR "${MAKE}" DIRECTORY)
99
100 if(BUILD_SHARED_LIBS)
101 set(SHARED shared)
102 file(STRINGS "${BUILDDIR}/include/openssl/opensslv.h" SHLIB_VERSION
103 REGEX "^#[\t ]*define[\t ]+SHLIB_VERSION_NUMBER[\t ]+\".*\".*")
104 string(REGEX REPLACE "^.*SHLIB_VERSION_NUMBER[\t ]+\"([^\"]*)\".*$" "\\1"
105 SHLIB_VERSION "${SHLIB_VERSION}")
106 if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS")
107 set(LIB_EXT dylib)
108 set(LIB_EXTS ${SHLIB_VERSION}.${LIB_EXT})
109 elseif(MINGW)
110 string(REPLACE "." "_" SHLIB_VERSION "${SHLIB_VERSION}")
111 set(BIN_EXT dll)
112 set(LIB_EXT dll.a)
113 else()
114 set(LIB_EXT so)
115 set(LIB_EXTS ${LIB_EXT}.${SHLIB_VERSION})
116 endif()
117 list(APPEND BIN_EXTS ${BIN_EXT})
118 list(APPEND LIB_EXTS ${LIB_EXT})
119 else()
120 set(SHARED no-shared)
121 set(LIB_EXTS a)
122 endif()
123 foreach(lib ssl crypto)
124 foreach(ext ${LIB_EXTS})
125 list(APPEND INSTALL_LIBS "${BUILDDIR}/lib${lib}.${ext}")
126 list(APPEND INSTALL_PKG_CONFIGS "${BUILDDIR}/lib${lib}.pc")
127 endforeach()
128 foreach(ext ${BIN_EXTS})
129 # This might be wrong for targets which don't follow this naming scheme, but I'm not aware of any
130 if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
131 list(APPEND INSTALL_BINS "${BUILDDIR}/lib${lib}-${SHLIB_VERSION}-x64.${ext}")
132 else()
133 list(APPEND INSTALL_BINS "${BUILDDIR}/lib${lib}-${SHLIB_VERSION}.${ext}")
134 endif()
135 endforeach()
136 endforeach()
137
138 if(CMAKE_HOST_WIN32)
139 set(ENV_COMMAND set)
140 set(PATH_VAR ";%PATH%")
141 else()
142 set(ENV_COMMAND export)
143 set(PATH_VAR ":$ENV{PATH}")
144 endif()
145
146
147
148 add_custom_command(
149 OUTPUT "${BUILDDIR}/Makefile"
150 COMMAND ${ENV_COMMAND} CC=${CMAKE_C_COMPILER}
151 COMMAND ${ENV_COMMAND} AR=${CMAKE_AR}
152 COMMAND ${ENV_COMMAND} LD=${CMAKE_LINKER}
153 COMMAND ${ENV_COMMAND} RANLIB=${CMAKE_RANLIB}
154 COMMAND ${ENV_COMMAND} MAKE=${MAKE}
155 COMMAND ${ENV_COMMAND} MAKEDEPPROG=${CMAKE_C_COMPILER}
156 COMMAND ${ENV_COMMAND} "PATH=${MSYS_BIN_DIR}${PATH_VAR}"
157 COMMAND "${PERL}" Configure
158 ${SHARED}
159 enable-static-engine
160 no-zlib
161 no-ssl2
162 no-idea
163 no-bf
164 no-cast
165 no-seed
166 no-md2
167 no-tests
168 ${DISABLES}
169 ${PLATFORM}
170 "--prefix=${CMAKE_INSTALL_PREFIX}"
171 "--openssldir=/etc/ssl"
172 ${CFLAGS}
173 COMMAND "${CMAKE_COMMAND}" "-DDIR=${BUILDDIR}" -P "${CMAKE_CURRENT_LIST_DIR}/remove-deps.cmake"
174 VERBATIM
175 WORKING_DIRECTORY "${BUILDDIR}"
176 )
177
178 add_custom_target(build_libs ALL
179 COMMAND ${ENV_COMMAND} "PATH=${MSYS_BIN_DIR}${PATH_VAR}"
180 COMMAND "${CMAKE_COMMAND}" -E touch "${BUILDDIR}/krb5.h"
181 COMMAND "${MAKE}" -j ${VCPKG_CONCURRENCY} build_libs
182 VERBATIM
183 WORKING_DIRECTORY "${BUILDDIR}"
184 DEPENDS "${BUILDDIR}/Makefile"
185 BYPRODUCTS ${INSTALL_LIBS}
186 )
187
188 if((CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") AND BUILD_SHARED_LIBS)
189 if(DEFINED CMAKE_INSTALL_NAME_DIR)
190 set(ID_PREFIX "${CMAKE_INSTALL_NAME_DIR}")
191 else()
192 set(ID_PREFIX "@rpath")
193 endif()
194
195 add_custom_command(
196 TARGET build_libs
197 COMMAND /usr/bin/install_name_tool -id "${ID_PREFIX}/libssl.${SHLIB_VERSION}.dylib"
198 "${BUILDDIR}/libssl.${SHLIB_VERSION}.dylib"
199 COMMAND /usr/bin/install_name_tool -id "${ID_PREFIX}/libcrypto.${SHLIB_VERSION}.dylib"
200 "${BUILDDIR}/libcrypto.1.1.dylib"
201 COMMAND /usr/bin/install_name_tool -change "${CMAKE_INSTALL_PREFIX}/lib/libcrypto.${SHLIB_VERSION}.dylib"
202 "${ID_PREFIX}/libcrypto.${SHLIB_VERSION}.dylib"
203 "${BUILDDIR}/libssl.${SHLIB_VERSION}.dylib"
204 VERBATIM
205 )
206 endif()
207
208 install(
209 FILES ${INSTALL_LIBS}
210 DESTINATION lib
211 )
212 install(
213 FILES ${INSTALL_BINS}
214 DESTINATION bin
215 )
216 install(
217 FILES ${INSTALL_PKG_CONFIGS}
218 DESTINATION lib/pkgconfig
219 )