Skip to content

Commit 0887534

Browse files
martinzinkCopilot
andauthored
MINIFICPP-2784 Fixing OpenSSL cmake (#2168)
https://issues.apache.org/jira/browse/MINIFICPP-2784 The bundled openssl was not strict enough and sometimes it used the system headers while building, this caused build errors on systems where the openssl headers were not compatible with our bundled version. (e.g. arch linux, trixie, etc) This also fixes the currently failing CI jobs namely 🟢 MiNiFi-CPP memcheck 🟢 Check supported Compilers --------- * MINIFICPP-2784 Fixing OpenSSL cmake * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * BundledLibcURL.cmake -> FetchLibcURL.cmake, BundledLibSSH2.cmake -> FetchLibSSH2.cmake --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
1 parent 7699fea commit 0887534

25 files changed

Lines changed: 394 additions & 343 deletions

cmake/BundledAwsSdkCpp.cmake

Lines changed: 48 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,25 @@
1616
# under the License.
1717

1818
function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
19-
set(PATCH_FILE1 "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/dll-export-injection.patch")
20-
set(PATCH_FILE2 "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/bundle-openssl.patch")
21-
set(PATCH_FILE3 "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/fix-finding-s2n.patch")
19+
find_package(OpenSSL REQUIRED)
20+
find_package(ZLIB REQUIRED)
21+
set(DLL_EXPORT_INJECTION_PATCH "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/dll-export-injection.patch")
22+
set(FIX_FINDING_S2N_PATCH "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/fix-finding-s2n.patch")
23+
set(S2N_OPENSSL_PATCH "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/s2n.patch")
24+
set(AWS_C_CAL_OPENSSL_PATCH "${SOURCE_DIR}/thirdparty/aws-sdk-cpp/aws-c-cal.patch")
25+
26+
if (WIN32)
27+
set(REMOVE_FIND_CMAKE_COMMAND "powershell -Command \\\"Remove-Item -Path ./* -Include 'FindOpenSSL.cmake', 'Findcrypto.cmake' -Recurse -Force\\\"")
28+
else ()
29+
set(REMOVE_FIND_CMAKE_COMMAND "find . -type f -iname 'FindOpenSSL.cmake' -delete -o -iname 'Findcrypto.cmake' -delete")
30+
endif ()
31+
2232
set(AWS_SDK_CPP_PATCH_COMMAND ${Bash_EXECUTABLE} -c "set -x &&\
23-
(\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE1}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE1}\") &&\
24-
(\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE2}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE2}\") &&\
25-
(\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${PATCH_FILE3}\" || \"${Patch_EXECUTABLE}\" -p1 -N -i \"${PATCH_FILE3}\") &&\
33+
(\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${DLL_EXPORT_INJECTION_PATCH}\" || \"${Patch_EXECUTABLE}\" -f -p1 -N -i \"${DLL_EXPORT_INJECTION_PATCH}\") &&\
34+
(\"${Patch_EXECUTABLE}\" -p1 -R -s -f --dry-run -i \"${FIX_FINDING_S2N_PATCH}\" || \"${Patch_EXECUTABLE}\" -f -p1 -N -i \"${FIX_FINDING_S2N_PATCH}\") &&\
35+
(\"${Patch_EXECUTABLE}\" -d crt/aws-crt-cpp/crt/s2n -p1 -R -s -f --dry-run -i \"${S2N_OPENSSL_PATCH}\" || \"${Patch_EXECUTABLE}\" -d crt/aws-crt-cpp/crt/s2n -f -p1 -N -i \"${S2N_OPENSSL_PATCH}\") &&\
36+
(\"${Patch_EXECUTABLE}\" -d crt/aws-crt-cpp/crt/aws-c-cal -p1 -R -s -f --dry-run -i \"${AWS_C_CAL_OPENSSL_PATCH}\" || \"${Patch_EXECUTABLE}\" -d crt/aws-crt-cpp/crt/aws-c-cal -f -p1 -N -i \"${AWS_C_CAL_OPENSSL_PATCH}\") &&\
37+
${REMOVE_FIND_CMAKE_COMMAND} &&\
2638
:")
2739

2840
if (WIN32)
@@ -68,9 +80,20 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
6880
LIST(APPEND AWSSDK_LIBRARIES_LIST "${BINARY_DIR}/thirdparty/libaws-install/${BYPRODUCT}")
6981
ENDFOREACH(BYPRODUCT)
7082

83+
string(REPLACE ";" "%" ESCAPED_CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}")
84+
7185
set(AWS_SDK_CPP_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
72-
-DCMAKE_PREFIX_PATH=${BINARY_DIR}/thirdparty/libaws-install
73-
-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libaws-install
86+
"-DCMAKE_PREFIX_PATH=${BINARY_DIR}/thirdparty/libaws-install"
87+
"-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libaws-install"
88+
"-DCMAKE_MODULE_PATH=${ESCAPED_CMAKE_MODULE_PATH}"
89+
"-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}"
90+
"-DFIND_OPENSSL_PATH=${SOURCE_DIR}/cmake/ssl/FindOpenSSL.cmake"
91+
"-DFIND_CRYPTO_PATH=${SOURCE_DIR}/cmake/ssl/FindCrypto.cmake"
92+
"-DCURL_ROOT_DIR=${CURL_ROOT_DIR}"
93+
"-DZLIB_INCLUDE_DIR=${ZLIB_INCLUDE_DIRS}"
94+
"-DZLIB_INCLUDE_DIRS=${ZLIB_INCLUDE_DIRS}"
95+
"-DZLIB_LIBRARY=${ZLIB_LIBRARIES}"
96+
-DUSE_OPENSSL=ON
7497
-DBUILD_ONLY=kinesis%s3%s3-crt
7598
-DENABLE_TESTING=OFF
7699
-DBUILD_SHARED_LIBS=OFF
@@ -112,20 +135,20 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
112135
# Create imported targets
113136
file(MAKE_DIRECTORY ${LIBAWS_INCLUDE_DIR})
114137

115-
add_library(AWS::aws-c-common STATIC IMPORTED)
138+
add_library(AWS::aws-c-common STATIC IMPORTED GLOBAL)
116139
set_target_properties(AWS::aws-c-common PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-common.${SUFFIX}")
117140
add_dependencies(AWS::aws-c-common aws-sdk-cpp-external)
118141
target_include_directories(AWS::aws-c-common INTERFACE ${LIBAWS_INCLUDE_DIR})
119142

120143
if (NOT WIN32 AND NOT APPLE)
121-
add_library(AWS::s2n STATIC IMPORTED)
144+
add_library(AWS::s2n STATIC IMPORTED GLOBAL)
122145
set_target_properties(AWS::s2n PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}s2n.${SUFFIX}")
123146
add_dependencies(AWS::s2n aws-sdk-cpp-external)
124147
target_include_directories(AWS::s2n INTERFACE ${LIBAWS_INCLUDE_DIR})
125148
target_link_libraries(AWS::s2n INTERFACE OpenSSL::Crypto)
126149
endif()
127150

128-
add_library(AWS::aws-c-io STATIC IMPORTED)
151+
add_library(AWS::aws-c-io STATIC IMPORTED GLOBAL)
129152
set_target_properties(AWS::aws-c-io PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-io.${SUFFIX}")
130153
add_dependencies(AWS::aws-c-io aws-sdk-cpp-external)
131154
target_include_directories(AWS::aws-c-io INTERFACE ${LIBAWS_INCLUDE_DIR})
@@ -134,60 +157,60 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
134157
target_link_libraries(AWS::aws-c-io INTERFACE ncrypt.lib)
135158
endif()
136159

137-
add_library(AWS::aws-checksums STATIC IMPORTED)
160+
add_library(AWS::aws-checksums STATIC IMPORTED GLOBAL)
138161
set_target_properties(AWS::aws-checksums PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-checksums.${SUFFIX}")
139162
add_dependencies(AWS::aws-checksums aws-sdk-cpp-external)
140163
target_include_directories(AWS::aws-checksums INTERFACE ${LIBAWS_INCLUDE_DIR})
141164

142-
add_library(AWS::aws-c-event-stream STATIC IMPORTED)
165+
add_library(AWS::aws-c-event-stream STATIC IMPORTED GLOBAL)
143166
set_target_properties(AWS::aws-c-event-stream PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-event-stream.${SUFFIX}")
144167
add_dependencies(AWS::aws-c-event-stream aws-sdk-cpp-external)
145168
target_include_directories(AWS::aws-c-event-stream INTERFACE ${LIBAWS_INCLUDE_DIR})
146169
target_link_libraries(AWS::aws-c-event-stream INTERFACE AWS::aws-checksums AWS::aws-c-io)
147170

148-
add_library(AWS::aws-c-auth STATIC IMPORTED)
171+
add_library(AWS::aws-c-auth STATIC IMPORTED GLOBAL)
149172
set_target_properties(AWS::aws-c-auth PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-auth.${SUFFIX}")
150173
add_dependencies(AWS::aws-c-auth aws-sdk-cpp-external)
151174
target_include_directories(AWS::aws-c-auth INTERFACE ${LIBAWS_INCLUDE_DIR})
152175

153-
add_library(AWS::aws-c-s3 STATIC IMPORTED)
176+
add_library(AWS::aws-c-s3 STATIC IMPORTED GLOBAL)
154177
set_target_properties(AWS::aws-c-s3 PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-s3.${SUFFIX}")
155178
add_dependencies(AWS::aws-c-s3 aws-sdk-cpp-external)
156179
target_include_directories(AWS::aws-c-s3 INTERFACE ${LIBAWS_INCLUDE_DIR})
157180
target_link_libraries(AWS::aws-c-s3 INTERFACE AWS::aws-c-auth)
158181

159-
add_library(AWS::aws-c-mqtt STATIC IMPORTED)
182+
add_library(AWS::aws-c-mqtt STATIC IMPORTED GLOBAL)
160183
set_target_properties(AWS::aws-c-mqtt PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-mqtt.${SUFFIX}")
161184
add_dependencies(AWS::aws-c-mqtt aws-sdk-cpp-external)
162185
target_include_directories(AWS::aws-c-mqtt INTERFACE ${LIBAWS_INCLUDE_DIR})
163186

164-
add_library(AWS::aws-c-http STATIC IMPORTED)
187+
add_library(AWS::aws-c-http STATIC IMPORTED GLOBAL)
165188
set_target_properties(AWS::aws-c-http PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-http.${SUFFIX}")
166189
add_dependencies(AWS::aws-c-http aws-sdk-cpp-external)
167190
target_include_directories(AWS::aws-c-http INTERFACE ${LIBAWS_INCLUDE_DIR})
168191

169-
add_library(AWS::aws-c-cal STATIC IMPORTED)
192+
add_library(AWS::aws-c-cal STATIC IMPORTED GLOBAL)
170193
set_target_properties(AWS::aws-c-cal PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-cal.${SUFFIX}")
171194
add_dependencies(AWS::aws-c-cal aws-sdk-cpp-external)
172195
target_include_directories(AWS::aws-c-cal INTERFACE ${LIBAWS_INCLUDE_DIR})
173196

174-
add_library(AWS::aws-c-compression STATIC IMPORTED)
197+
add_library(AWS::aws-c-compression STATIC IMPORTED GLOBAL)
175198
set_target_properties(AWS::aws-c-compression PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-compression.${SUFFIX}")
176199
add_dependencies(AWS::aws-c-compression aws-sdk-cpp-external)
177200
target_include_directories(AWS::aws-c-compression INTERFACE ${LIBAWS_INCLUDE_DIR})
178201

179-
add_library(AWS::aws-c-sdkutils STATIC IMPORTED)
202+
add_library(AWS::aws-c-sdkutils STATIC IMPORTED GLOBAL)
180203
set_target_properties(AWS::aws-c-sdkutils PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-c-sdkutils.${SUFFIX}")
181204
add_dependencies(AWS::aws-c-sdkutils aws-sdk-cpp-external)
182205
target_include_directories(AWS::aws-c-sdkutils INTERFACE ${LIBAWS_INCLUDE_DIR})
183206

184-
add_library(AWS::aws-crt-cpp STATIC IMPORTED)
207+
add_library(AWS::aws-crt-cpp STATIC IMPORTED GLOBAL)
185208
set_target_properties(AWS::aws-crt-cpp PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-crt-cpp.${SUFFIX}")
186209
add_dependencies(AWS::aws-crt-cpp aws-sdk-cpp-external)
187210
target_include_directories(AWS::aws-crt-cpp INTERFACE ${LIBAWS_INCLUDE_DIR})
188211
target_link_libraries(AWS::aws-crt-cpp INTERFACE AWS::aws-c-io AWS::aws-c-s3 AWS::aws-c-mqtt AWS::aws-c-http AWS::aws-c-cal AWS::aws-c-compression AWS::aws-c-sdkutils)
189212

190-
add_library(AWS::aws-cpp-sdk-core STATIC IMPORTED)
213+
add_library(AWS::aws-cpp-sdk-core STATIC IMPORTED GLOBAL)
191214
set_target_properties(AWS::aws-cpp-sdk-core PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-cpp-sdk-core.${SUFFIX}")
192215
add_dependencies(AWS::aws-cpp-sdk-core aws-sdk-cpp-external)
193216
target_include_directories(AWS::aws-cpp-sdk-core INTERFACE ${LIBAWS_INCLUDE_DIR})
@@ -201,19 +224,19 @@ function(use_bundled_libaws SOURCE_DIR BINARY_DIR)
201224
target_link_libraries(AWS::aws-cpp-sdk-core INTERFACE AWS::s2n)
202225
endif()
203226

204-
add_library(AWS::aws-cpp-sdk-s3 STATIC IMPORTED)
227+
add_library(AWS::aws-cpp-sdk-s3 STATIC IMPORTED GLOBAL)
205228
set_target_properties(AWS::aws-cpp-sdk-s3 PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-cpp-sdk-s3.${SUFFIX}")
206229
add_dependencies(AWS::aws-cpp-sdk-s3 aws-sdk-cpp-external)
207230
target_include_directories(AWS::aws-cpp-sdk-s3 INTERFACE ${LIBAWS_INCLUDE_DIR})
208231
target_link_libraries(AWS::aws-cpp-sdk-s3 INTERFACE AWS::aws-cpp-sdk-core)
209232

210-
add_library(AWS::aws-cpp-sdk-s3-crt STATIC IMPORTED)
233+
add_library(AWS::aws-cpp-sdk-s3-crt STATIC IMPORTED GLOBAL)
211234
set_target_properties(AWS::aws-cpp-sdk-s3-crt PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-cpp-sdk-s3-crt.${SUFFIX}")
212235
add_dependencies(AWS::aws-cpp-sdk-s3-crt aws-sdk-cpp-external)
213236
target_include_directories(AWS::aws-cpp-sdk-s3-crt INTERFACE ${LIBAWS_INCLUDE_DIR})
214237
target_link_libraries(AWS::aws-cpp-sdk-s3-crt INTERFACE AWS::aws-cpp-sdk-core AWS::aws-crt-cpp)
215238

216-
add_library(AWS::aws-cpp-sdk-kinesis STATIC IMPORTED)
239+
add_library(AWS::aws-cpp-sdk-kinesis STATIC IMPORTED GLOBAL)
217240
set_target_properties(AWS::aws-cpp-sdk-kinesis PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/thirdparty/libaws-install/${LIBDIR}/${PREFIX}aws-cpp-sdk-kinesis.${SUFFIX}")
218241
add_dependencies(AWS::aws-cpp-sdk-kinesis aws-sdk-cpp-external)
219242
target_include_directories(AWS::aws-cpp-sdk-kinesis INTERFACE ${LIBAWS_INCLUDE_DIR})

cmake/BundledLibArchive.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ function(use_bundled_libarchive SOURCE_DIR BINARY_DIR)
2626

2727
set(LIBARCHIVE_CMAKE_ARGS ${PASSTHROUGH_CMAKE_ARGS}
2828
"-DCMAKE_INSTALL_PREFIX=${BINARY_DIR}/thirdparty/libarchive-install"
29+
"-DCURL_ROOT_DIR=${CURL_ROOT_DIR}"
30+
"-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}"
2931
-DCMAKE_INSTALL_LIBDIR=lib
3032
-DLIBARCHIVE_STATIC=1
3133
-DBUILD_SHARED_LIBS=OFF

cmake/BundledLibSSH2.cmake

Lines changed: 0 additions & 79 deletions
This file was deleted.

0 commit comments

Comments
 (0)