From 2e09973d324ba868906add0f4471aa77810e9a1a Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Tue, 4 Jul 2023 10:37:24 +0300 Subject: [PATCH 1/2] generate opensslconf.h in build dir for cmake --- crypto/CMakeLists.txt | 3 ++- include/CMakeLists.txt | 2 +- ssl/CMakeLists.txt | 3 ++- tls/CMakeLists.txt | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt index cfcba62..a6842f5 100644 --- a/crypto/CMakeLists.txt +++ b/crypto/CMakeLists.txt @@ -996,7 +996,8 @@ target_include_directories(crypto_obj x509 ../include/compat PUBLIC - ../include) + ../include + ${CMAKE_BINARY_DIR}/include) if(HOST_AARCH64) target_include_directories(crypto_obj PRIVATE bn/arch/aarch64/) diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index 76f65b6..9c37aa7 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -19,4 +19,4 @@ elseif(HOST_SPARC64) elseif(HOST_X86_64) file(READ arch/amd64/opensslconf.h OPENSSLCONF) endif() -file(WRITE openssl/opensslconf.h "${OPENSSLCONF}") +file(WRITE ${CMAKE_BINARY_DIR}/include/openssl/opensslconf.h "${OPENSSLCONF}") diff --git a/ssl/CMakeLists.txt b/ssl/CMakeLists.txt index 90b5025..1ec1a64 100644 --- a/ssl/CMakeLists.txt +++ b/ssl/CMakeLists.txt @@ -69,7 +69,8 @@ target_include_directories(ssl_obj ../crypto/bio ../include/compat PUBLIC - ../include) + ../include + ${CMAKE_BINARY_DIR}/include) add_library(bs_obj OBJECT ${BS_SRC}) target_include_directories(bs_obj diff --git a/tls/CMakeLists.txt b/tls/CMakeLists.txt index 3d0a619..9993669 100644 --- a/tls/CMakeLists.txt +++ b/tls/CMakeLists.txt @@ -45,7 +45,8 @@ target_include_directories(tls_obj . ../include/compat PUBLIC - ../include) + ../include + ${CMAKE_BINARY_DIR}/include) add_library(tls $ $ $ empty.c) From 83fdd2ee995f470cc66b4689d117dab53458feff Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Tue, 4 Jul 2023 12:36:57 +0300 Subject: [PATCH 2/2] make cross compilation possible on macOS with CMake Sync CMAKE_SYSTEM_PROCESSOR to CMAKE_OSX_ARCHITECTURES. This doesn't support universal binaries, but does allow cross-compiling for a single architecture by setting -DCMAKE_OSX_ARCHITECTURES=(arm64|x86_64) --- CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f35f89..ef99dc7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -299,6 +299,15 @@ if(HAVE_NETINET_IP_H) add_definitions(-DHAVE_NETINET_IP_H) endif() +# This isn't ready for universal binaries yet, since we do conditional +# compilation based on the architecture, but this makes cross compiling for a +# single architecture work on macOS at least. +# +# Don't set CMAKE_OSX_ARCHITECTURES to more than a single value for now. +if(APPLE) + set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}") +endif() + if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(aarch64|arm64)") set(HOST_AARCH64 true) elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm")