Skip to content

Commit 15290a7

Browse files
authored
openssl: update to v3.0.8 as v1.1.1 is almost eol (#668)
Add `--libdir=lib` parameter to configure step for hunter-compatibilty. Upstream may now use `lib64` where it deems it appropriate, but we're still generally using `lib` directory. Update the bundled `FindOpenSSL.cmake` file to changes in how in v3 the version is specified. --------- Co-authored-by: res0nance <res0nance@users.noreply.github.com>
1 parent ee22b6b commit 15290a7

File tree

8 files changed

+78
-37
lines changed

8 files changed

+78
-37
lines changed

cmake/configs/default.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ hunter_default_version(OpenCV-Extra VERSION 4.5.3)
114114
hunter_default_version(OpenEXR VERSION 3.1.5-p0)
115115
hunter_default_version(OpenGL-Registry VERSION 0.0.0-d15191e-p0)
116116
hunter_default_version(OpenNMTTokenizer VERSION 1.11.0-p1)
117-
hunter_default_version(OpenSSL VERSION 1.1.1t)
117+
hunter_default_version(OpenSSL VERSION 3.0.8)
118118
hunter_default_version(OpenSceneGraph VERSION 3.6.3-p0)
119119
hunter_default_version(Opus VERSION 1.3.1)
120120
hunter_default_version(PNG VERSION 1.6.26-p6)

cmake/find/FindOpenSSL.cmake

Lines changed: 50 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -305,42 +305,58 @@ if(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
305305
REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
306306

307307
string(COMPARE EQUAL "${openssl_version_str}" "" _is_empty)
308-
if(_is_empty)
309-
message(
310-
FATAL_ERROR
311-
"Incorrect OPENSSL_VERSION_NUMBER define in header"
312-
": ${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h"
313-
)
308+
if(NOT _is_empty)
309+
# Version parsing pre 3.x i.e 1.1.1 etc.
310+
# The version number is encoded as 0xMNNFFPPS: major minor fix patch status
311+
# The status gives if this is a developer or prerelease and is ignored here.
312+
# Major, minor, and fix directly translate into the version numbers shown in
313+
# the string. The patch field translates to the single character suffix that
314+
# indicates the bug fix state, which 00 -> nothing, 01 -> a, 02 -> b and so
315+
# on.
316+
317+
string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]).*$"
318+
"\\1;\\2;\\3;\\4;\\5" OPENSSL_VERSION_LIST "${openssl_version_str}")
319+
list(GET OPENSSL_VERSION_LIST 0 OPENSSL_VERSION_MAJOR)
320+
list(GET OPENSSL_VERSION_LIST 1 OPENSSL_VERSION_MINOR)
321+
from_hex("${OPENSSL_VERSION_MINOR}" OPENSSL_VERSION_MINOR)
322+
list(GET OPENSSL_VERSION_LIST 2 OPENSSL_VERSION_FIX)
323+
from_hex("${OPENSSL_VERSION_FIX}" OPENSSL_VERSION_FIX)
324+
list(GET OPENSSL_VERSION_LIST 3 OPENSSL_VERSION_PATCH)
325+
326+
if (NOT OPENSSL_VERSION_PATCH STREQUAL "00")
327+
from_hex("${OPENSSL_VERSION_PATCH}" _tmp)
328+
# 96 is the ASCII code of 'a' minus 1
329+
math(EXPR OPENSSL_VERSION_PATCH_ASCII "${_tmp} + 96")
330+
unset(_tmp)
331+
# Once anyone knows how OpenSSL would call the patch versions beyond 'z'
332+
# this should be updated to handle that, too. This has not happened yet
333+
# so it is simply ignored here for now.
334+
string(ASCII "${OPENSSL_VERSION_PATCH_ASCII}" OPENSSL_VERSION_PATCH_STRING)
335+
endif ()
336+
337+
set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH_STRING}")
338+
else()
339+
# Version parsing post 3.x
340+
file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" OPENSSL_VERSION_MAJOR
341+
REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_MAJOR[\t ]+([0-9a-fA-F])+.*")
342+
string(COMPARE EQUAL "${OPENSSL_VERSION_MAJOR}" "" _major_is_empty)
343+
file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" OPENSSL_VERSION_MINOR
344+
REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_MINOR[\t ]+([0-9a-fA-F])+.*")
345+
string(COMPARE EQUAL "${OPENSSL_VERSION_MINOR}" "" _minor_is_empty)
346+
file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" OPENSSL_VERSION_PATCH
347+
REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_PATCH[\t ]+([0-9a-fA-F])+.*")
348+
string(COMPARE EQUAL "${OPENSSL_VERSION_PATCH}" "" _patch_is_empty)
349+
350+
if(_major_is_empty OR _minor_is_empty OR _patch_is_empty)
351+
message(
352+
FATAL_ERROR
353+
"Incorrect OPENSSL_VERSION_NUMBER define in header"
354+
": ${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h"
355+
)
356+
endif()
357+
set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_PATCH}")
314358
endif()
315359

316-
# The version number is encoded as 0xMNNFFPPS: major minor fix patch status
317-
# The status gives if this is a developer or prerelease and is ignored here.
318-
# Major, minor, and fix directly translate into the version numbers shown in
319-
# the string. The patch field translates to the single character suffix that
320-
# indicates the bug fix state, which 00 -> nothing, 01 -> a, 02 -> b and so
321-
# on.
322-
323-
string(REGEX REPLACE "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]).*$"
324-
"\\1;\\2;\\3;\\4;\\5" OPENSSL_VERSION_LIST "${openssl_version_str}")
325-
list(GET OPENSSL_VERSION_LIST 0 OPENSSL_VERSION_MAJOR)
326-
list(GET OPENSSL_VERSION_LIST 1 OPENSSL_VERSION_MINOR)
327-
from_hex("${OPENSSL_VERSION_MINOR}" OPENSSL_VERSION_MINOR)
328-
list(GET OPENSSL_VERSION_LIST 2 OPENSSL_VERSION_FIX)
329-
from_hex("${OPENSSL_VERSION_FIX}" OPENSSL_VERSION_FIX)
330-
list(GET OPENSSL_VERSION_LIST 3 OPENSSL_VERSION_PATCH)
331-
332-
if (NOT OPENSSL_VERSION_PATCH STREQUAL "00")
333-
from_hex("${OPENSSL_VERSION_PATCH}" _tmp)
334-
# 96 is the ASCII code of 'a' minus 1
335-
math(EXPR OPENSSL_VERSION_PATCH_ASCII "${_tmp} + 96")
336-
unset(_tmp)
337-
# Once anyone knows how OpenSSL would call the patch versions beyond 'z'
338-
# this should be updated to handle that, too. This has not happened yet
339-
# so it is simply ignored here for now.
340-
string(ASCII "${OPENSSL_VERSION_PATCH_ASCII}" OPENSSL_VERSION_PATCH_STRING)
341-
endif ()
342-
343-
set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH_STRING}")
344360
endif ()
345361

346362
include(FindPackageHandleStandardArgs)

cmake/projects/OpenSSL/ep-stages/configure.cmake.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ if("@openssl_install_dir@" STREQUAL "")
99
endif()
1010

1111
execute_process(COMMAND
12-
perl Configure @arch@ @opt@ "--prefix=@openssl_install_dir@" RESULT_VARIABLE result)
12+
perl Configure @arch@ @opt@ "--prefix=@openssl_install_dir@" "--libdir=lib" RESULT_VARIABLE result)
1313

1414
if(NOT result EQUAL 0)
1515
message(FATAL_ERROR "OpenSSL configure failed: ${result}")

cmake/projects/OpenSSL/ep-stages/configure_1_1_plus.cmake.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ if("@openssl_dir@" STREQUAL "")
1313
endif()
1414

1515
execute_process(COMMAND
16-
perl Configure @arch@ @opt@ @shared@ "--prefix=@openssl_install_dir@" "--openssldir=@openssl_dir@" RESULT_VARIABLE result)
16+
perl Configure @arch@ @opt@ @shared@ "--prefix=@openssl_install_dir@" "--libdir=lib" "--openssldir=@openssl_dir@" RESULT_VARIABLE result)
1717

1818
if(NOT result EQUAL 0)
1919
message(FATAL_ERROR "OpenSSL configure failed: ${result}")

cmake/projects/OpenSSL/hunter.cmake

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,28 @@ hunter_add_version(
649649
072cf2bc8e19c7c59a42e7e20977fe3037c9c9f3
650650
)
651651

652+
hunter_add_version(
653+
PACKAGE_NAME
654+
OpenSSL
655+
VERSION
656+
"3.1.0"
657+
URL
658+
"https://github.com/openssl/openssl/archive/openssl-3.1.0.tar.gz"
659+
SHA1
660+
1adb0f773af645b9f54738301920e5c74360b76d
661+
)
662+
663+
hunter_add_version(
664+
PACKAGE_NAME
665+
OpenSSL
666+
VERSION
667+
"3.0.8"
668+
URL
669+
"https://github.com/openssl/openssl/archive/openssl-3.0.8.tar.gz"
670+
SHA1
671+
49816d51f0c4e306f72a6928780d3fb2815d05ac
672+
)
673+
652674
if(MINGW)
653675
hunter_pick_scheme(DEFAULT url_sha1_openssl)
654676
elseif(WIN32)

cmake/projects/OpenSSL/schemes/url_sha1_openssl.cmake.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ ExternalProject_Add(
160160
${configure_command}
161161
${configure_opts}
162162
"--prefix=@HUNTER_PACKAGE_INSTALL_PREFIX@"
163+
"--libdir=lib"
163164
BUILD_COMMAND
164165
${build_command}
165166
BUILD_IN_SOURCE

cmake/projects/OpenSSL/schemes/url_sha1_openssl_ios.cmake.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ foreach(variant @IPHONEOS_ARCHS@ @IPHONESIMULATOR_ARCHS@)
151151
"${configure_opts}"
152152
"no-async"
153153
"--prefix=@HUNTER_PACKAGE_INSTALL_PREFIX@"
154+
"--libdir=lib"
154155
"-arch ${variant}"
155156
"-isysroot ${SDK_ROOT}"
156157
BUILD_COMMAND

cmake/projects/OpenSSL/schemes/url_sha1_openssl_macos.cmake.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ foreach(arch ${configure_architectures})
194194
"${configure_arch}"
195195
"${configure_opts}"
196196
"--prefix=@HUNTER_PACKAGE_INSTALL_PREFIX@"
197+
"--libdir=lib"
197198
BUILD_COMMAND
198199
"${build_command}"
199200
BUILD_IN_SOURCE

0 commit comments

Comments
 (0)