From 0de989cfe1df3960e04b71796971d23601dd1679 Mon Sep 17 00:00:00 2001 From: Fs Date: Sat, 20 Jan 2024 15:27:30 +0800 Subject: [PATCH] use convenient variable LINUX and BSD to judge their platform Signed-off-by: Fs --- CMakeLists.txt | 16 +++++++++++++--- crypto/CMakeLists.txt | 27 +++++++++++++-------------- crypto/_cryptoDir/objects.cmake | 11 ----------- 3 files changed, 26 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f21180..e22aae6 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) @@ -182,7 +192,7 @@ foreach (_CIPHER IN ITEMS string(CONCAT _CIPHER_HELP "enable OpenSSL cipher " ${_CIPHER}) if (_CIPHER STREQUAL "afalgeng") - cmake_dependent_option("${_CIPHER_STR}" "${_CIPHER_HELP}" "${_CIPHER_DEFAULT}" "CMAKE_SYSTEM_NAME MATCHES \"[Ll]inux\";OPENSSL_ENGINE" OFF) + cmake_dependent_option("${_CIPHER_STR}" "${_CIPHER_HELP}" "${_CIPHER_DEFAULT}" "LINUX;OPENSSL_ENGINE" OFF) elseif (_CIPHER STREQUAL "mdc2") cmake_dependent_option("${_CIPHER_STR}" "${_CIPHER_HELP}" "${_CIPHER_DEFAULT}" "OPENSSL_DES" OFF) elseif (_CIPHER STREQUAL "ecdsa") @@ -417,7 +427,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") @@ -441,7 +451,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 d7da562..15e557e 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -57,7 +57,7 @@ endif() if ( WIN32 OR ( ANDROID AND ( ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) OR ( OPENSSL_TARGET_ARCH STREQUAL "x64" ) ) ) OR APPLE - OR ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) + OR BSD OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) # TODO: Solaris on sparcv7 and sparcv9-64 have RC4_CHAR ) set(OPENSSL_RC4_INT "int") @@ -66,11 +66,11 @@ 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 ( 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) @@ -143,7 +143,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" ) ) set(OPENSSL_PERLASM_SCHEME "elf") endif() elseif ( OPENSSL_TARGET_ARCH STREQUAL "x64" ) @@ -153,7 +153,7 @@ if (OPENSSL_ASM OR OPENSSL_UPLINK) set(OPENSSL_PERLASM_SCHEME "mingw64") elseif (MSVC) set(OPENSSL_PERLASM_SCHEME "masm") - elseif ( ANDROID OR ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) ) + elseif ( ANDROID OR BSD OR LINUX OR ( CMAKE_SYSTEM_NAME MATCHES "SunOS" ) ) set(OPENSSL_PERLASM_SCHEME "elf") elseif ( APPLE AND NOT IOS ) set(OPENSSL_PERLASM_SCHEME "macosx") @@ -161,20 +161,20 @@ if (OPENSSL_ASM OR OPENSSL_UPLINK) set(OPENSSL_PERLASM_SCHEME "osx32") endif() elseif ( OPENSSL_TARGET_ARCH STREQUAL "arm32" ) - if ( ANDROID OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) ) + if ( ANDROID OR LINUX ) set(OPENSSL_PERLASM_SCHEME "linux32") elseif (IOS) set(OPENSSL_PERLASM_SCHEME "ios32") endif() elseif ( OPENSSL_TARGET_ARCH STREQUAL "arm64" ) - if ( ANDROID OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" ) OR ( CMAKE_SYSTEM_NAME MATCHES "BSD" ) ) + if ( ANDROID OR LINUX OR BSD ) set(OPENSSL_PERLASM_SCHEME "linux64") elseif (IOS) set(OPENSSL_PERLASM_SCHEME "ios64") 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() @@ -245,7 +245,7 @@ endif() if (CMAKE_SYSTEM_NAME MATCHES "SunOS") set(LIBCRYPTO_CFLAGS ${LIBCRYPTO_CFLAGS} "-DFILIO_H") endif() -if (ANDROID OR ( CMAKE_SYSTEM_NAME MATCHES "[Ll]inux" )) +if (ANDROID OR LINUX) set(LIBCRYPTO_CFLAGS ${LIBCRYPTO_CFLAGS} "-DOPENSSL_USE_NODELETE") endif() if (OPENSSL_SSE2) @@ -253,12 +253,11 @@ if (OPENSSL_SSE2) 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 ) set(LIBCRYPTO_CFLAGS ${LIBCRYPTO_CFLAGS} "-D_REENTRANT") elseif (WIN32 AND NOT MSVC) @@ -269,11 +268,11 @@ 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") diff --git a/crypto/_cryptoDir/objects.cmake b/crypto/_cryptoDir/objects.cmake index e0d9f72..729c076 100644 --- a/crypto/_cryptoDir/objects.cmake +++ b/crypto/_cryptoDir/objects.cmake @@ -67,20 +67,9 @@ if (OPENSSL_ASM) x86_64cpuid${OPENSSL_ASM_PREPROCESSED} ) elseif ( ( OPENSSL_TARGET_ARCH STREQUAL "x86" ) AND ( NOT OPENSSL_386 ) ) - # TODO: properly set up applink and uplink set(LIBCRYPTO_CURRENTDIR_ASM_SOURCES x86cpuid${OPENSSL_ASM_PREPROCESSED} ) - if (false) - if ( WIN32 ) - set(LIBCRYPTO_CURRENTDIR_ASM_SOURCES - ${LIBCRYPTO_CRYPTODIR_ASM_SOURCES} - ${CMAKE_SOURCE_DIR}/ms/applink.c - ${CMAKE_SOURCE_DIR}/ms/uplink.c - uplink-x86${OPENSSL_ASM_PREPROCESSED} - ) - endif() - endif() elseif ( OPENSSL_TARGET_ARCH STREQUAL "arm32" ) set(LIBCRYPTO_CURRENTDIR_ASM_SOURCES armv4cpuid.S