macos auto build with openssl cmake

This commit is contained in:
Julian
2024-01-03 15:31:35 -06:00
parent da4e94ca1a
commit 56c6111b9d
8 changed files with 9 additions and 154 deletions

View File

@@ -4,18 +4,6 @@ set -e
export MACOS_SCRIPTS_DIR=`pwd`
export PROJECT_ROOT_DIR="${MACOS_SCRIPTS_DIR}/../.."
export MOBILE_LIB_ROOT="${PROJECT_ROOT_DIR}/src"
export EXTERNAL_MACOS_DIR="${MOBILE_LIB_ROOT}/build/macos"
export EXTERNAL_MACOS_SOURCE_DIR=${EXTERNAL_MACOS_DIR}/sources
export EXTERNAL_MACOS_LIB_DIR=${EXTERNAL_MACOS_DIR}/lib
export EXTERNAL_MACOS_INCLUDE_DIR=${EXTERNAL_MACOS_DIR}/include
mkdir -p $EXTERNAL_MACOS_DIR
mkdir -p $EXTERNAL_MACOS_LIB_DIR
mkdir -p $EXTERNAL_MACOS_INCLUDE_DIR
mkdir -p $EXTERNAL_MACOS_SOURCE_DIR
./build_openssl_arm64.sh
if [ ! -d build ] ; then
mkdir build

View File

@@ -1,4 +0,0 @@
#!/bin/sh
. ./build_openssl_common.sh
build_openssl_arm64

View File

@@ -1,122 +0,0 @@
#!/bin/sh
export MACOS_SCRIPTS_DIR=`pwd`
export PROJECT_ROOT_DIR="${MACOS_SCRIPTS_DIR}/../.."
export MOBILE_LIB_ROOT="${PROJECT_ROOT_DIR}/src"
export EXTERNAL_MACOS_DIR="${MOBILE_LIB_ROOT}/build/macos"
export EXTERNAL_MACOS_SOURCE_DIR=${EXTERNAL_MACOS_DIR}/sources
export EXTERNAL_MACOS_LIB_DIR=${EXTERNAL_MACOS_DIR}/lib
export EXTERNAL_MACOS_INCLUDE_DIR=${EXTERNAL_MACOS_DIR}/include
OPEN_SSL_DIR_NAME="OpenSSL"
OPEN_SSL_x86_64_DIR_NAME="${OPEN_SSL_DIR_NAME}-x86_64"
OPEN_SSL_ARM_DIR_NAME="${OPEN_SSL_DIR_NAME}-arm"
OPEN_SSL_X86_64_DIR_PATH="${EXTERNAL_MACOS_SOURCE_DIR}/${OPEN_SSL_x86_64_DIR_NAME}"
OPEN_SSL_ARM_DIR_PATH="${EXTERNAL_MACOS_SOURCE_DIR}/${OPEN_SSL_ARM_DIR_NAME}"
build_openssl_init_common() {
DIR=$1
# Use 1.1.1s becasue of https://github.com/openssl/openssl/issues/18720
OPENSSL_VERSION="1.1.1s"
echo "============================ OpenSSL ============================"
cd $EXTERNAL_MACOS_SOURCE_DIR
curl -O https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz
tar -xvzf openssl-$OPENSSL_VERSION.tar.gz
rm -rf $DIR
rm -rf $OPEN_SSL_DIR_PATH
mv openssl-$OPENSSL_VERSION $DIR
tar -xvzf openssl-$OPENSSL_VERSION.tar.gz
mv openssl-$OPENSSL_VERSION $OPEN_SSL_ARM_DIR_NAME
}
build_openssl_init_arm64() {
DIR=$OPEN_SSL_ARM_DIR_PATH
build_openssl_init_common ${DIR}
}
build_openssl_init_x86_64() {
DIR=$OPEN_SSL_X86_64_DIR_PATH
build_openssl_init_common ${DIR}
}
build_openssl_compile_common() {
ARCH=$1
DIR=""
XARCH=""
case $ARCH in
arm64)
DIR=$OPEN_SSL_ARM_DIR_PATH
XARCH="darwin64-arm64-cc";;
x86_64)
DIR=$OPEN_SSL_X86_64_DIR_PATH
XARCH="darwin64-x86_64-cc";;
esac
echo "Build OpenSSL for ${ARCH}"
cd $DIR
./Configure $XARCH
make
}
build_openssl_compile_arm64() {
ARCH=arm64
build_openssl_compile_common "${ARCH}"
}
build_openssl_compile_x86_64() {
ARCH=x86_64
build_openssl_compile_common "${ARCH}"
}
build_openssl_install_common() {
DIR=$1
cp -R ${DIR}/include/* "${EXTERNAL_MACOS_INCLUDE_DIR}/"
cp -R ${DIR}/libcrypto.a ${EXTERNAL_MACOS_LIB_DIR}/libcrypto.a
cp -R ${DIR}/libssl.a ${EXTERNAL_MACOS_LIB_DIR}/libssl.a
}
build_openssl_install_arm64() {
build_openssl_install_common "${OPEN_SSL_ARM_DIR_PATH}"
}
build_openssl_install_x86_64() {
build_openssl_install_common "${OPEN_SSL_X86_64_DIR_PATH}"
}
build_openssl_install_universal() {
OPEN_SSL_DIR_PATH="${EXTERNAL_MACOS_SOURCE_DIR}/${OPEN_SSL_DIR_NAME}"
mv ${OPEN_SSL_ARM_DIR_PATH}/include/* $OPEN_SSL_DIR_PATH/include
build_openssl_install_common "${OPEN_SSL_DIR_PATH}"
}
build_openssl_arm64() {
build_openssl_init_arm64
build_openssl_compile_arm64
build_openssl_install_arm64
}
build_openssl_x86_64() {
build_openssl_init_x86_64
build_openssl_compile_x86_64
build_openssl_install_x86_64
}
build_openssl_combine() {
OPEN_SSL_DIR_PATH="${EXTERNAL_MACOS_SOURCE_DIR}/${OPEN_SSL_DIR_NAME}"
echo "Create universal bin"
mkdir -p $OPEN_SSL_DIR_PATH/include
lipo -create ${OPEN_SSL_ARM_DIR_PATH}/libcrypto.a ${OPEN_SSL_X86_64_DIR_PATH}/libcrypto.a -output ${OPEN_SSL_DIR_PATH}/libcrypto.a
lipo -create ${OPEN_SSL_ARM_DIR_PATH}/libssl.a ${OPEN_SSL_X86_64_DIR_PATH}/libssl.a -output ${OPEN_SSL_DIR_PATH}/libssl.a
}
build_openssl_universal() {
build_openssl_init_arm64
build_openssl_compile_arm64
build_openssl_init_x86_64
build_openssl_compile_x86_64
build_openssl_combine
build_openssl_install_universal
}

View File

@@ -1,4 +0,0 @@
#!/bin/sh
. ./build_openssl_common.sh
build_openssl_universal

View File

@@ -1,4 +0,0 @@
#!/bin/sh
. ./build_openssl_common.sh
build_openssl_x86_64

View File

@@ -44,7 +44,7 @@ set(BOOST_URL "https://boostorg.jfrog.io/artifactory/main/release/1.71.0/source/
set(BOOST_URL_SHA256 "85a94ac71c28e59cf97a96714e4c58a18550c227ac8b0388c260d6c717e47a69")
add_subdirectory("deps/boost-cmake")
if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows")
if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos")
add_subdirectory("deps/openssl-cmake" EXCLUDE_FROM_ALL)
endif()

View File

@@ -16,7 +16,7 @@ else()
ADD_DEFINITIONS(-fPIC)
endif()
if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows")
if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos")
#nothing
else()
LINK_DIRECTORIES(${OPENSSL_LIBRARIES_DIR})
@@ -77,7 +77,7 @@ endif()
# TODO: emult static precomputation
# TODO: ecdh module
# TODO: RECOVERY module
if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows")
if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos")
TARGET_INCLUDE_DIRECTORIES(secp256k1_spark PUBLIC)
else()
TARGET_INCLUDE_DIRECTORIES(secp256k1_spark PUBLIC ${OPENSSL_INCLUDE_DIR})

View File

@@ -9,7 +9,7 @@ endif()
set(OPENSSL_USE_STATIC_LIBS OFF CACHE BOOL "" FORCE)
set(OPENSSL_USE_STATIC_LIBS TRUE)
if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR WIN32)
if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR WIN32 OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos")
# SET(OPENSSL_ROOT_DIR "${CMAKE_CURRENT_BINARY_DIR}/../")
# SET(OPENSSL_LIBRARIES_DIR "${OPENSSL_ROOT_DIR}lib")
# SET(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}include")
@@ -69,7 +69,7 @@ set_property(SOURCE src/spark.cpp
src/util.cpp
PROPERTY COMPILE_FLAGS ${MY_CUSTOM_COMPILE_FLAGS} )
if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows")
if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos")
#nothing
else()
LINK_DIRECTORIES(${OPENSSL_LIBRARIES_DIR})
@@ -113,7 +113,7 @@ add_library(sparkmobile ${CUSTOM_LIB_TYPE}
if(BUILD_FOR_SYSTEM_NAME STREQUAL "android")
target_link_libraries(sparkmobile ${OPENSSL_LIBRARIES} secp256k1_spark Boost::thread ${log-lib})
elseif(BUILD_FOR_SYSTEM_NAME STREQUAL "windows")
elseif(BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos")
target_link_libraries(sparkmobile secp256k1_spark Boost::thread ${log-lib})
else()
target_link_libraries(sparkmobile ${OPENSSL_LIBRARIES} secp256k1_spark Boost::thread)
@@ -121,9 +121,10 @@ endif()
add_dependencies(sparkmobile secp256k1_spark)
if(BUILD_FOR_SYSTEM_NAME STREQUAL "macos" OR BUILD_FOR_SYSTEM_NAME STREQUAL "ios")
#if(BUILD_FOR_SYSTEM_NAME STREQUAL "macos" OR BUILD_FOR_SYSTEM_NAME STREQUAL "ios")
if(BUILD_FOR_SYSTEM_NAME STREQUAL "ios")
target_include_directories(sparkmobile PUBLIC secp256k1_spark ${OPENSSL_INCLUDE_DIR} "${SPARK_MISSING_HEADERS_DIR}")
elseif(BUILD_FOR_SYSTEM_NAME STREQUAL "windows")
elseif(BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos")
target_include_directories(sparkmobile PUBLIC secp256k1_spark "${SPARK_MISSING_HEADERS_DIR}")
else()
target_include_directories(sparkmobile PUBLIC secp256k1_spark ${OPENSSL_INCLUDE_DIR})