Skip to content

Commit

Permalink
use convenient variable LINUX and BSD to judge their platform
Browse files Browse the repository at this point in the history
Signed-off-by: Fs <[email protected]>
  • Loading branch information
Fsu0413 committed Jan 20, 2024
1 parent 83798c1 commit 1a1593e
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 29 deletions.
14 changes: 12 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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")
Expand All @@ -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")
Expand Down
55 changes: 28 additions & 27 deletions crypto/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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})
Expand All @@ -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")
Expand All @@ -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)
Expand All @@ -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")
Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -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" )
)
Expand Down Expand Up @@ -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()
Expand All @@ -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()

Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand Down

0 comments on commit 1a1593e

Please sign in to comment.