Compare commits

...

3 Commits

Author SHA1 Message Date
Denis Angell
a516266e5d fix apple build
Co-Authored-By: Denis Angell <dangell@transia.co>
2024-10-21 15:54:13 +02:00
Denis Angell
f0cabd162c Merge branch 'dev' into sha-optimization 2024-10-21 15:36:52 +02:00
Denis Angell
a6f596bc8b avx512
Co-Authored-By: Denis Angell <dangell@transia.co>
2024-10-21 15:32:54 +02:00

View File

@@ -2,34 +2,92 @@
NIH dep: openssl
#]===================================================================]
#[===============================================[
OPENSSL_ROOT_DIR is the only variable that
FindOpenSSL honors for locating, so convert any
OPENSSL_ROOT vars to this
#]===============================================]
if (NOT DEFINED OPENSSL_ROOT_DIR)
if (DEFINED ENV{OPENSSL_ROOT})
set (OPENSSL_ROOT_DIR $ENV{OPENSSL_ROOT})
elseif (HOMEBREW)
execute_process (COMMAND ${HOMEBREW} --prefix openssl
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif ()
file (TO_CMAKE_PATH "${OPENSSL_ROOT_DIR}" OPENSSL_ROOT_DIR)
endif ()
# Include modules
include(ExternalProject)
include(CheckCCompilerFlag)
check_c_compiler_flag("-mavx512f" COMPILER_SUPPORTS_AVX512)
option(ENABLE_AVX512 "Enable AVX512 instructions" ${COMPILER_SUPPORTS_AVX512})
set(OPENSSL_NISTP "")
set(OPENSSL_AVX512 "")
if(APPLE)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
set(OPENSSL_PLATFORM "darwin64-arm64-cc")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
set(OPENSSL_PLATFORM "darwin64-x86_64-cc")
else()
message(FATAL_ERROR "Unsupported macOS architecture: ${CMAKE_SYSTEM_PROCESSOR}")
endif()
elseif(UNIX AND NOT APPLE)
set(OPENSSL_PLATFORM "linux-x86_64")
set(OPENSSL_NISTP "enable-ec_nistp_64_gcc_128")
set(OPENSSL_AVX512 "-march=skylake-avx512")
else()
message(FATAL_ERROR "Unsupported platform")
endif()
ExternalProject_Add(openssl_src
PREFIX ${nih_cache_path}
GIT_REPOSITORY https://github.com/openssl/openssl.git
GIT_TAG OpenSSL_1_1_1u
CONFIGURE_COMMAND
${nih_cache_path}/src/openssl_src/Configure
-DBUILD_SHARED_LIBS=OFF
-DBUILD_STATIC_LIBS=ON
${OPENSSL_PLATFORM}
${OPENSSL_NISTP}
${OPENSSL_AVX512}
enable-rmd160
no-ssl2
LOG_BUILD ON
LOG_CONFIGURE ON
LOG_DOWNLOAD ON
BUILD_IN_SOURCE 1
BUILD_COMMAND $(MAKE)
TEST_COMMAND ""
INSTALL_COMMAND ""
BUILD_BYPRODUCTS
<BINARY_DIR>/libssl.a
<BINARY_DIR>/libcrypto.a
)
ExternalProject_Get_Property (openssl_src BINARY_DIR)
set (openssl_src_BINARY_DIR "${BINARY_DIR}")
add_library (OpenSSL::SSL STATIC IMPORTED GLOBAL)
add_library (OpenSSL::Crypto STATIC IMPORTED GLOBAL)
add_dependencies(OpenSSL::SSL openssl_src)
add_dependencies(OpenSSL::Crypto openssl_src)
execute_process(
COMMAND
mkdir -p "${openssl_src_BINARY_DIR}/include"
)
set_target_properties(OpenSSL::SSL PROPERTIES
IMPORTED_LOCATION_DEBUG
"${openssl_src_BINARY_DIR}/libssl.a"
IMPORTED_LOCATION_RELEASE
"${openssl_src_BINARY_DIR}/libssl.a"
INTERFACE_INCLUDE_DIRECTORIES
"${openssl_src_BINARY_DIR}/include"
)
set_target_properties(OpenSSL::Crypto PROPERTIES
IMPORTED_LOCATION_DEBUG
"${openssl_src_BINARY_DIR}/libcrypto.a"
IMPORTED_LOCATION_RELEASE
"${openssl_src_BINARY_DIR}/libcrypto.a"
INTERFACE_INCLUDE_DIRECTORIES
"${openssl_src_BINARY_DIR}/include"
)
if (static)
set (OPENSSL_USE_STATIC_LIBS ON)
endif ()
set (OPENSSL_MSVC_STATIC_RT ON)
find_package (OpenSSL 1.1.1 REQUIRED)
target_link_libraries (ripple_libs
INTERFACE
OpenSSL::SSL
OpenSSL::Crypto)
# disable SSLv2...this can also be done when building/configuring OpenSSL
set_target_properties(OpenSSL::SSL PROPERTIES
INTERFACE_COMPILE_DEFINITIONS OPENSSL_NO_SSL2)
#[=========================================================[
https://gitlab.kitware.com/cmake/cmake/issues/16885
depending on how openssl is built, it might depend
@@ -46,3 +104,9 @@ if (TARGET ZLIB::ZLIB)
INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
set (has_zlib TRUE)
endif ()
if(ENABLE_AVX512 AND COMPILER_SUPPORTS_AVX512 AND NOT APPLE)
add_compile_options(-mavx512f)
add_compile_options(-march=skylake-avx512)
endif()
add_link_options(-lssl -lcrypto)