Skip to content

Commit b375049

Browse files
authored
CPP-991 Port changes from upstream cmake around OpenSSL version detection into what we have now (#556)
1 parent 4c12333 commit b375049

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

cmake/FindOpenSSL.cmake

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,25 @@ if(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
377377
endif ()
378378

379379
set(OPENSSL_VERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}.${OPENSSL_VERSION_FIX}${OPENSSL_VERSION_PATCH_STRING}")
380+
else ()
381+
# Since OpenSSL 3.0.0, the new version format is MAJOR.MINOR.PATCH and
382+
# a new OPENSSL_VERSION_STR macro contains exactly that
383+
file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" OPENSSL_VERSION_STR
384+
REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_STR[\t ]+\"([0-9])+\\.([0-9])+\\.([0-9])+\".*")
385+
string(REGEX REPLACE "^.*OPENSSL_VERSION_STR[\t ]+\"([0-9]+\\.[0-9]+\\.[0-9]+)\".*$"
386+
"\\1" OPENSSL_VERSION_STR "${OPENSSL_VERSION_STR}")
387+
388+
set(OPENSSL_VERSION "${OPENSSL_VERSION_STR}")
389+
390+
# Setting OPENSSL_VERSION_MAJOR OPENSSL_VERSION_MINOR and OPENSSL_VERSION_FIX
391+
string(REGEX MATCHALL "([0-9])+" OPENSSL_VERSION_NUMBER "${OPENSSL_VERSION}")
392+
list(POP_FRONT OPENSSL_VERSION_NUMBER
393+
OPENSSL_VERSION_MAJOR
394+
OPENSSL_VERSION_MINOR
395+
OPENSSL_VERSION_FIX)
396+
397+
unset(OPENSSL_VERSION_NUMBER)
398+
unset(OPENSSL_VERSION_STR)
380399
endif ()
381400
endif ()
382401

0 commit comments

Comments
 (0)