diff --git a/CMakeLists.txt b/CMakeLists.txt index c95df9d..8b8b962 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,16 @@ project(OpenSSL LANGUAGES C ) +if (CMAKE_VERSION VERSION_LESS 3.25) + # set variable LINUX and BSD (which wasn't introduced until CMake 3.25) + # Note: We don't actually judge the variant of Linux or BSD so just make it "if"-compatible + if (CMAKE_SYSTEM_NAME MATCHES "[Ll]inux") + set(LINUX true) + elseif (CMAKE_SYSTEM_NAME MATCHES "BSD" OR CMAKE_SYSTEM_NAME STREQUAL "DragonFly") + set(BSD "${CMAKE_SYSTEM_NAME}") + endif() +endif() + get_filename_component(OPENSSL_C_COMPILER "${CMAKE_C_COMPILER}" NAME_WLE) if (PROJECT_VERSION_MAJOR LESS 3) @@ -335,7 +345,7 @@ elseif (ANDROID) else() set(OPENSSL_BUILD_PLATFORM "android") endif() -elseif (CMAKE_SYSTEM_NAME MATCHES "[Ll]inux") +elseif (LINUX) if (OPENSSL_TARGET_ARCH STREQUAL "x64") if (CMAKE_C_COMPILER_ID MATCHES "[Cc]lang") set(OPENSSL_BUILD_PLATFORM "linux-x86_64-clang") @@ -355,7 +365,7 @@ elseif (CMAKE_SYSTEM_NAME MATCHES "[Ll]inux") set(OPENSSL_BUILD_PLATFORM "linux-generic32") endif() endif() -elseif (CMAKE_SYSTEM_NAME MATCHES "BSD") +elseif (BSD) if (OPENSSL_TARGET_ARCH STREQUAL "x64") set(OPENSSL_BUILD_PLATFORM "BSD-x86_64") elseif (OPENSSL_TARGET_ARCH STREQUAL "x86") diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index 806953c..3aafc72 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -53,7 +53,6 @@ endforeach() set(OPENSSL_CPUID_OBJ ${OPENSSL_ASM}) # bn_ops -# TODO: reconsider following, use OPENSSL_TARGET_ARCH #cmakedefine I386_ONLY set(I386_ONLY ${OPENSSL_386}) @@ -77,9 +76,9 @@ set(OPENSSL_RC2_INT "int") #define RC4_INT unsigned @OPENSSL_RC4_INT@ if ( WIN32 OR ( ANDROID AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) - OR ( ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) AND ( ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) OR ( OPENSSL_TARGET_ARCH STREQUAL "x64" ) ) ) + OR ( LINUX AND ( ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) OR ( OPENSSL_TARGET_ARCH STREQUAL "x64" ) ) ) OR ( APPLE AND NOT IOS ) - OR ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) + OR BSD OR ( ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) AND ( NOT ( ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) AND ( CMAKE_C_COMPILER_ID MATCHES "SunPro" ) ) ) ) # TODO: Solaris on sparcv7 and sparcv9-64 have RC4_CHAR ) set(OPENSSL_RC4_INT "int") @@ -88,11 +87,11 @@ else() endif() #define EXTERNALCMAKE_RC4_CHUNK_TYPE @OPENSSL_RC4_CHUNK_TYPE@ -if ( ( ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) AND ( OPENSSL_TARGET_ARCH STREQUAL "x64" ) ) +if ( ( BSD AND ( OPENSSL_TARGET_ARCH STREQUAL "x64" ) ) OR ( CYGWIN AND ( OPENSSL_TARGET_ARCH STREQUAL "x64" ) ) OR ( ANDROID AND NOT ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR APPLE - OR ( ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) AND NOT ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) + OR ( LINUX AND NOT ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) AND ( NOT ( ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) AND ( CMAKE_C_COMPILER_ID MATCHES "GNU" ) ) ) ) ) set(OPENSSL_RC4_CHUNK_TYPE 1) @@ -103,12 +102,12 @@ else() endif() #define DES_LONG unsigned @OPENSSL_DES_INT@ -if( ( CMAKE_SYSTEM_NAME MATCHES "BSD" AND NOT ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) +if( ( BSD AND NOT ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( CYGWIN AND ( OPENSSL_TARGET_ARCH STREQUAL "x64" ) ) OR ( WIN32 AND ( OPENSSL_TARGET_ARCH STREQUAL "x64" ) ) OR ( ANDROID AND NOT ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( APPLE AND NOT IOS ) - OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" AND NOT ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) + OR ( LINUX AND NOT ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) AND ( OPENSSL_TARGET_ARCH STREQUAL "x64" ) ) ) set(OPENSSL_DES_INT "int") @@ -117,12 +116,12 @@ else() endif() #cmakedefine BN_LLONG -if ( ( ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) +if ( ( BSD AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( CYGWIN AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( WIN32 AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( ANDROID AND ( ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) OR ( OPENSSL_TARGET_ARCH STREQUAL "arm32" ) ) ) OR IOS - OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" AND ( ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) OR ( OPENSSL_TARGET_ARCH STREQUAL "arm32" ) ) ) + OR ( LINUX AND ( ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) OR ( OPENSSL_TARGET_ARCH STREQUAL "arm32" ) ) ) OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) # # TODO: Solaris on sparcv7 and sparcv9-64 have BN_LLONG ) set(BN_LLONG YES) @@ -171,11 +170,11 @@ else() endif() #cmakedefine RC4_INDEX -if ( ( ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) +if ( ( BSD AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( CYGWIN AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( WIN32 AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( ANDROID AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) - OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) + OR ( LINUX AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) AND ( CMAKE_C_COMPILER_ID MATCHES "GNU" ) ) ) set(RC4_INDEX YES) @@ -186,7 +185,7 @@ endif() #define EXTERNALCMAKE_BF_PTR @OPENSSL_BF_PTR@ if ( ( ANDROID AND NOT ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR IOS - OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" AND ( OPENSSL_TARGET_ARCH MATCHES "arm")) + OR ( LINUX AND ( OPENSSL_TARGET_ARCH MATCHES "arm")) OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) AND ( CMAKE_C_COMPILER_ID MATCHES "SunPro" ) ) ) set(OPENSSL_BF_PTR 1) @@ -195,11 +194,11 @@ else() endif() #cmakedefine DES_PTR -if ( ( ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) +if ( ( BSD AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( CYGWIN AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" )) OR ( ANDROID AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( WIN32 AND NOT MSVC AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) - OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" AND ( OPENSSL_TARGET_ARCH STREQUAL "x86") ) + OR ( LINUX AND ( OPENSSL_TARGET_ARCH STREQUAL "x86") ) OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) ) set(DES_PTR YES) @@ -208,11 +207,11 @@ else() endif() #cmakedefine DES_RISC1 -if ( ( ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) +if ( ( BSD AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( CYGWIN AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( ANDROID AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( WIN32 AND NOT MSVC AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) - OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" AND ( OPENSSL_TARGET_ARCH STREQUAL "x86") ) + OR ( LINUX AND ( OPENSSL_TARGET_ARCH STREQUAL "x86") ) OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) AND ( CMAKE_C_COMPILER_ID MATCHES "GNU" ) ) ) set(DES_RISC1 YES) @@ -224,11 +223,11 @@ endif() set(DES_RISC2 NO) #cmakedefine DES_UNROLL -if ( ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) +if ( BSD OR CYGWIN OR ANDROID OR APPLE - OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) + OR LINUX OR ( WIN32 AND NOT MSVC AND ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) ) OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) ) @@ -370,7 +369,7 @@ if (OPENSSL_ASM OR OPENSSL_UPLINK) set(OPENSSL_PERLASM_SCHEME "win32") elseif (ANDROID) set(OPENSSL_PERLASM_SCHEME "android") - elseif( CMAKE_SYSTEM_NAME MATCHES "BSD" OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) ) + elseif ( BSD OR LINUX OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) ) if (CMAKE_C_COMPILER_ID MATCHES "SunPro") message(FATAL_ERROR "OpenSSL 1.0.2 does not support ASM on this platform - Please set OPENSSL_ASM to OFF and reconfigure") endif() @@ -383,21 +382,21 @@ if (OPENSSL_ASM OR OPENSSL_UPLINK) set(OPENSSL_PERLASM_SCHEME "mingw64") elseif (MSVC) set(OPENSSL_PERLASM_SCHEME "masm") - elseif ( ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) ) + elseif ( BSD OR LINUX OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) ) set(OPENSSL_PERLASM_SCHEME "elf") endif() elseif ( OPENSSL_TARGET_ARCH STREQUAL "arm32" ) - if ( ANDROID OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) ) + if ( ANDROID OR LINUX ) set(OPENSSL_PERLASM_SCHEME "void") endif() elseif ( OPENSSL_TARGET_ARCH STREQUAL "arm64" ) - if ( ANDROID OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) ) + if ( ANDROID OR LINUX ) set(OPENSSL_PERLASM_SCHEME "linux64") endif() endif() endif() - if ( NOT OPENSSL_PERLASM_SCHEME AND ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) ) + if ( NOT OPENSSL_PERLASM_SCHEME AND LINUX ) set(OPENSSL_PERLASM_SCHEME "void") endif() @@ -504,11 +503,12 @@ endif() if (OPENSSL_THREADS) set(LIBCRYPTO_CFLAGS ${LIBCRYPTO_CFLAGS} "-DOPENSSL_THREADS") - if ( ( CMAKE_SYSTEM_NAME MATCHES "BSD" )) + if (BSD) set(LIBCRYPTO_CFLAGS ${LIBCRYPTO_CFLAGS} "-D_THREAD_SAFE" "-D_REENTRANT") elseif ( ANDROID OR APPLE - OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) + OR LINUX + OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) ) set(LIBCRYPTO_CFLAGS ${LIBCRYPTO_CFLAGS} "-D_REENTRANT") elseif (WIN32 AND NOT MSVC) @@ -519,11 +519,12 @@ if (BUILD_SHARED_LIBS) set(LIBCRYPTO_CFLAGS ${LIBCRYPTO_CFLAGS} "-DOPENSSL_PIC") endif() if (OPENSSL_DSO) - if ( ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) + if ( BSD OR CYGWIN OR ANDROID OR APPLE - OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) + OR LINUX + OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) ) set(LIBCRYPTO_CFLAGS ${LIBCRYPTO_CFLAGS} "-DDSO_DLFCN" "-DHAVE_DLFCN_H") elseif (WIN32)