From d81509ab8f752f0045ab33f771fcf0ebf0076a85 Mon Sep 17 00:00:00 2001 From: solomonchild Date: Sun, 26 Jan 2020 17:17:25 +0200 Subject: [PATCH 1/5] BSD support --- CMakeLists.txt | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8bd00b3496d5d..97ca52dc06d41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -449,6 +449,75 @@ elseif(WIN32) message(FATAL_ERROR("Windows is not currently supported")) +elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) + set(arch "BSD-x86_64") + message("Building ${arch}") + + find_program(PERL_EXECUTABLE perl) + if(NOT PERL_EXECUTABLE) + message(FATAL_ERROR("Perl not found")) + endif(NOT PERL_EXECUTABLE) + + message("Configuring configdata.pm for \"${arch}\"") + + EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} Configure ${arch} + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + OUTPUT_VARIABLE TEMP + ERROR_VARIABLE ERROR + ) + if(ERROR) + MESSAGE(FATAL_ERROR("Error while configuring: ${ERROR}")) + endif(ERROR) + + EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} util/mkbuildinf.pl "cc -fPIC -pthread -Wall -O3 -DL_ENDIAN -DOPENSSL_PIC -D_THREAD_SAFE -D_REENTRANT -DNDEBUG" "BSD-x86_64" + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + OUTPUT_FILE crypto/buildinf.h + ERROR_VARIABLE ERROR) + if(ERROR) + MESSAGE(FATAL_ERROR("Error while generating mkbuildinf: ${ERROR}")) + endif(ERROR) + + foreach(el crypto/include/internal/bn_conf.h;crypto/include/internal/dso_conf.h;include/openssl/opensslconf.h) + MESSAGE("Generating ${el}") + EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} + "-I${CMAKE_CURRENT_LIST_DIR}" -Mconfigdata "util/dofile.pl" "-oMakefile" ${el}.in + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + OUTPUT_FILE ${el} + ERROR_VARIABLE error) + if(error) + message(FATAL_ERROR("Error while generating: ${error}")) + endif(error) + endforeach() + + SET(ssl_SRCS ${COMMON_ssl_SRCS}) + + add_library(ssl STATIC ${ssl_SRCS}) + + TARGET_INCLUDE_DIRECTORIES(ssl PRIVATE include ${CMAKE_CURRENT_SOURCE_DIR}) + TARGET_COMPILE_DEFINITIONS(ssl PRIVATE OPENSSL_PIC OPENSSLDIR="/usr/local/ssl" ENGINESDIR="/usr/local/lib/engines-1.1" NDEBUG L_ENDIAN _THREAD_SAFE _REENTRANT) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -pthread") + + SET(crypto_SRCS + ${COMMON_crypto_SRCS} + crypto/mem_clr.c crypto/camellia/cmll_cbc.c crypto/engine/eng_devcrypto.c + crypto/engine/tb_rsa.c crypto/engine/eng_list.c crypto/engine/eng_table.c + crypto/whrlpool/wp_block.c crypto/engine/tb_pkmeth.c crypto/engine/eng_all.c + crypto/engine/eng_openssl.c crypto/engine/eng_lib.c crypto/rc4/rc4_enc.c + crypto/camellia/camellia.c crypto/engine/eng_cnf.c crypto/bn/bn_asm.c + crypto/engine/eng_err.c crypto/engine/tb_asnmth.c crypto/engine/tb_dsa.c + crypto/engine/tb_cipher.c crypto/sha/keccak1600.c crypto/engine/tb_dh.c + crypto/engine/eng_pkey.c crypto/engine/eng_rdrand.c crypto/engine/tb_eckey.c + crypto/engine/eng_fat.c crypto/engine/tb_rand.c crypto/engine/eng_init.c + crypto/engine/eng_dyn.c crypto/rc4/rc4_skey.c crypto/chacha/chacha_enc.c + crypto/engine/tb_digest.c crypto/engine/eng_ctrl.c + ) + + add_library(crypto STATIC ${crypto_SRCS}) + + TARGET_INCLUDE_DIRECTORIES(crypto PRIVATE crypto/ec/curve448 crypto/include crypto/ec/curve448/arch_32 ${CMAKE_CURRENT_SOURCE_DIR} crypto/modes include crypto) + TARGET_COMPILE_DEFINITIONS(crypto PRIVATE OPENSSL_PIC OPENSSLDIR="/usr/local/ssl" ENGINESDIR="/usr/local/lib/engines-1.1" NDEBUG L_ENDIAN _THREAD_SAFE _REENTRANT) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -pthread") + elseif(UNIX) set(arch "linux-x86_64-clang") From c2da8909ce936a7a5b6a0c6828c34819f655fa8a Mon Sep 17 00:00:00 2001 From: solomonchild Date: Mon, 27 Jan 2020 21:26:14 +0200 Subject: [PATCH 2/5] Fixed configuration step: no-asm added --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 97ca52dc06d41..3134fd00bc105 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -460,7 +460,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) message("Configuring configdata.pm for \"${arch}\"") - EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} Configure ${arch} + EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} Configure ${arch} no-asm WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} OUTPUT_VARIABLE TEMP ERROR_VARIABLE ERROR From 75eed6bc8421f129368bf1d2665322a0404f768f Mon Sep 17 00:00:00 2001 From: solomonchild Date: Mon, 27 Jan 2020 21:30:44 +0200 Subject: [PATCH 3/5] Refactored FreeBSD --- CMakeLists.txt | 48 +++++++++--------------------------------------- 1 file changed, 9 insertions(+), 39 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3134fd00bc105..6de5ce97e18ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -453,49 +453,19 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) set(arch "BSD-x86_64") message("Building ${arch}") - find_program(PERL_EXECUTABLE perl) - if(NOT PERL_EXECUTABLE) - message(FATAL_ERROR("Perl not found")) - endif(NOT PERL_EXECUTABLE) - - message("Configuring configdata.pm for \"${arch}\"") - - EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} Configure ${arch} no-asm - WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} - OUTPUT_VARIABLE TEMP - ERROR_VARIABLE ERROR - ) - if(ERROR) - MESSAGE(FATAL_ERROR("Error while configuring: ${ERROR}")) - endif(ERROR) - - EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} util/mkbuildinf.pl "cc -fPIC -pthread -Wall -O3 -DL_ENDIAN -DOPENSSL_PIC -D_THREAD_SAFE -D_REENTRANT -DNDEBUG" "BSD-x86_64" - WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} - OUTPUT_FILE crypto/buildinf.h - ERROR_VARIABLE ERROR) - if(ERROR) - MESSAGE(FATAL_ERROR("Error while generating mkbuildinf: ${ERROR}")) - endif(ERROR) + find_program(PERL_EXECUTABLE perl) + if(NOT PERL_EXECUTABLE) + message(FATAL_ERROR("Perl not found")) + endif(NOT PERL_EXECUTABLE) - foreach(el crypto/include/internal/bn_conf.h;crypto/include/internal/dso_conf.h;include/openssl/opensslconf.h) - MESSAGE("Generating ${el}") - EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} - "-I${CMAKE_CURRENT_LIST_DIR}" -Mconfigdata "util/dofile.pl" "-oMakefile" ${el}.in - WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} - OUTPUT_FILE ${el} - ERROR_VARIABLE error) - if(error) - message(FATAL_ERROR("Error while generating: ${error}")) - endif(error) - endforeach() + generate_configdata(${arch} no-asm) + generate_mkbuildinf("clang -pthread -m64 -Wa,--noexecstack -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM" "BSD-x86_64") + generate_headers(${arch}) - SET(ssl_SRCS ${COMMON_ssl_SRCS}) - - add_library(ssl STATIC ${ssl_SRCS}) + add_library(ssl STATIC ${COMMON_ssl_SRCS}) TARGET_INCLUDE_DIRECTORIES(ssl PRIVATE include ${CMAKE_CURRENT_SOURCE_DIR}) TARGET_COMPILE_DEFINITIONS(ssl PRIVATE OPENSSL_PIC OPENSSLDIR="/usr/local/ssl" ENGINESDIR="/usr/local/lib/engines-1.1" NDEBUG L_ENDIAN _THREAD_SAFE _REENTRANT) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -pthread") SET(crypto_SRCS ${COMMON_crypto_SRCS} @@ -516,7 +486,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) TARGET_INCLUDE_DIRECTORIES(crypto PRIVATE crypto/ec/curve448 crypto/include crypto/ec/curve448/arch_32 ${CMAKE_CURRENT_SOURCE_DIR} crypto/modes include crypto) TARGET_COMPILE_DEFINITIONS(crypto PRIVATE OPENSSL_PIC OPENSSLDIR="/usr/local/ssl" ENGINESDIR="/usr/local/lib/engines-1.1" NDEBUG L_ENDIAN _THREAD_SAFE _REENTRANT) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -pthread") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -pthread") elseif(UNIX) From 517722baa2b7ee10cb3cac416f7f9eeb2fef86f2 Mon Sep 17 00:00:00 2001 From: solomonchild Date: Mon, 27 Jan 2020 21:32:46 +0200 Subject: [PATCH 4/5] replaced openssldir and enginesdir --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6de5ce97e18ee..27af7c47f4e6a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -465,7 +465,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) add_library(ssl STATIC ${COMMON_ssl_SRCS}) TARGET_INCLUDE_DIRECTORIES(ssl PRIVATE include ${CMAKE_CURRENT_SOURCE_DIR}) - TARGET_COMPILE_DEFINITIONS(ssl PRIVATE OPENSSL_PIC OPENSSLDIR="/usr/local/ssl" ENGINESDIR="/usr/local/lib/engines-1.1" NDEBUG L_ENDIAN _THREAD_SAFE _REENTRANT) + TARGET_COMPILE_DEFINITIONS(ssl PRIVATE OPENSSL_PIC OPENSSLDIR=${OPENSSLDIR} ENGINESDIR=${ENGINESDIR} NDEBUG L_ENDIAN _THREAD_SAFE _REENTRANT) SET(crypto_SRCS ${COMMON_crypto_SRCS} @@ -485,7 +485,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) add_library(crypto STATIC ${crypto_SRCS}) TARGET_INCLUDE_DIRECTORIES(crypto PRIVATE crypto/ec/curve448 crypto/include crypto/ec/curve448/arch_32 ${CMAKE_CURRENT_SOURCE_DIR} crypto/modes include crypto) - TARGET_COMPILE_DEFINITIONS(crypto PRIVATE OPENSSL_PIC OPENSSLDIR="/usr/local/ssl" ENGINESDIR="/usr/local/lib/engines-1.1" NDEBUG L_ENDIAN _THREAD_SAFE _REENTRANT) + TARGET_COMPILE_DEFINITIONS(crypto PRIVATE OPENSSL_PIC OPENSSLDIR=${OPENSSLDIR} ENGINESDIR=${ENGINESDIR} NDEBUG L_ENDIAN _THREAD_SAFE _REENTRANT) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -pthread") elseif(UNIX) From 222605848baffc8edea546034296c76114b3f0e6 Mon Sep 17 00:00:00 2001 From: solomonchild Date: Mon, 27 Jan 2020 21:34:42 +0200 Subject: [PATCH 5/5] Removed NDEBUG' --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 27af7c47f4e6a..eb7244744a155 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -465,7 +465,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) add_library(ssl STATIC ${COMMON_ssl_SRCS}) TARGET_INCLUDE_DIRECTORIES(ssl PRIVATE include ${CMAKE_CURRENT_SOURCE_DIR}) - TARGET_COMPILE_DEFINITIONS(ssl PRIVATE OPENSSL_PIC OPENSSLDIR=${OPENSSLDIR} ENGINESDIR=${ENGINESDIR} NDEBUG L_ENDIAN _THREAD_SAFE _REENTRANT) + TARGET_COMPILE_DEFINITIONS(ssl PRIVATE OPENSSL_PIC OPENSSLDIR=${OPENSSLDIR} ENGINESDIR=${ENGINESDIR} L_ENDIAN _THREAD_SAFE _REENTRANT) SET(crypto_SRCS ${COMMON_crypto_SRCS} @@ -485,7 +485,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL FreeBSD) add_library(crypto STATIC ${crypto_SRCS}) TARGET_INCLUDE_DIRECTORIES(crypto PRIVATE crypto/ec/curve448 crypto/include crypto/ec/curve448/arch_32 ${CMAKE_CURRENT_SOURCE_DIR} crypto/modes include crypto) - TARGET_COMPILE_DEFINITIONS(crypto PRIVATE OPENSSL_PIC OPENSSLDIR=${OPENSSLDIR} ENGINESDIR=${ENGINESDIR} NDEBUG L_ENDIAN _THREAD_SAFE _REENTRANT) + TARGET_COMPILE_DEFINITIONS(crypto PRIVATE OPENSSL_PIC OPENSSLDIR=${OPENSSLDIR} ENGINESDIR=${ENGINESDIR} L_ENDIAN _THREAD_SAFE _REENTRANT) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -pthread") elseif(UNIX)