use openssl-cmake instead of shell scripts for openssl for all platforms

This commit is contained in:
julian
2024-01-04 10:16:42 -06:00
parent 6e2b2650a8
commit c4655376b7
4 changed files with 8 additions and 145 deletions

View File

@@ -1,87 +0,0 @@
#!/bin/bash
set -e
WORKDIR="$(pwd)/../../src/build/android"
export WORKDIR
export API=21
export ANDROID_NDK_ZIP=${WORKDIR}/android-ndk-r20b.zip
export ANDROID_NDK_ROOT=${WORKDIR}/android-ndk-r20b
export ANDROID_NDK_HOME=$ANDROID_NDK_ROOT
export TOOLCHAIN_DIR="${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64"
case :${PATH:=${TOOLCHAIN_DIR}/bin}: in
(*:"${TOOLCHAIN_DIR}/bin":*) ;; (*)
export PATH=${TOOLCHAIN_DIR}/bin:$PATH
esac;
if [ ! -d "$WORKDIR" ] ; then
mkdir -p "$WORKDIR"
fi
# NDK
ANDROID_NDK_SHA256="8381c440fe61fcbb01e209211ac01b519cd6adf51ab1c2281d5daad6ca4c8c8c"
if [ ! -e "$ANDROID_NDK_ZIP" ]; then
curl https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip -o "${ANDROID_NDK_ZIP}"
fi
echo $ANDROID_NDK_SHA256 "$ANDROID_NDK_ZIP" | sha256sum -c || exit 1
unzip "$ANDROID_NDK_ZIP" -d "$WORKDIR"
# openssl
OPENSSL_FILENAME="openssl-1.1.1q.tar.gz"
OPENSSL_FILE_PATH="$WORKDIR/$OPENSSL_FILENAME"
OPENSSL_SRC_DIR="$WORKDIR/openssl-1.1.1q"
OPENSSL_SHA256="d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca"
if [ ! -e "$OPENSSL_FILE_PATH" ]; then
curl https://www.openssl.org/source/$OPENSSL_FILENAME -o "$OPENSSL_FILE_PATH"
fi
echo $OPENSSL_SHA256 "$OPENSSL_FILE_PATH" | sha256sum -c - || exit 1
for arch in "aarch" "aarch64" "i686" "x86_64"
do
case $arch in
"aarch") CLANG=armv7a-linux-androideabi${API}-clang
CXXLANG=armv7a-linux-androideabi${API}-clang++
PREFIX="$WORKDIR/prefix_armeabi-v7a"
X_ARCH="android-arm";;
"aarch64") CLANG=${arch}-linux-android${API}-clang
CXXLANG=${arch}-linux-android${API}-clang++
PREFIX="$WORKDIR/prefix_arm64-v8a"
X_ARCH="android-arm64";;
"i686") CLANG=${arch}-linux-android${API}-clang
CXXLANG=${arch}-linux-android${API}-clang++
PREFIX="$WORKDIR/prefix_x86"
X_ARCH="android-x86";;
"x86_64") CLANG=${arch}-linux-android${API}-clang
CXXLANG=${arch}-linux-android${API}-clang++
PREFIX="$WORKDIR/prefix_x86_64"
X_ARCH="android-x86_64";;
*) CLANG=${arch}-linux-android${API}-clang
CXXLANG=${arch}-linux-android${API}-clang++
PREFIX="$WORKDIR/prefix_${arch}"
X_ARCH="android-${arch}";;
esac
cd "$WORKDIR"
rm -rf "$OPENSSL_SRC_DIR"
tar -xzf "$OPENSSL_FILE_PATH" -C "$WORKDIR"
cd "$OPENSSL_SRC_DIR"
./Configure CC=${CLANG} CXX=${CXXLANG} ${X_ARCH} \
no-asm no-shared no-tests --static \
--prefix="${PREFIX}" \
--openssldir="${PREFIX}" \
-D__ANDROID_API__=$API
sed -i 's/CNF_EX_LIBS=-ldl -pthread//g;s/BIN_CFLAGS=-pie $(CNF_CFLAGS) $(CFLAGS)//g' Makefile
make -j16
make install_sw
done

View File

@@ -5,16 +5,8 @@ cmake_minimum_required(VERSION 3.10)
project(flutter_libsparkmobile_library VERSION 0.0.1)
if(BUILD_FOR_SYSTEM_NAME STREQUAL "macos"
OR BUILD_FOR_SYSTEM_NAME STREQUAL "ios"
OR BUILD_FOR_SYSTEM_NAME STREQUAL "linux"
OR BUILD_FOR_SYSTEM_NAME STREQUAL "windows")
set(SPARK_USE_OPENSSL_CMAKE TRUE)
if(BUILD_FOR_SYSTEM_NAME STREQUAL "linux")
ADD_DEFINITIONS(-fPIC)
endif()
else()
set(SPARK_USE_OPENSSL_CMAKE FALSE)
if(BUILD_FOR_SYSTEM_NAME STREQUAL "linux")
ADD_DEFINITIONS(-fPIC)
endif()
SET(SPARK_SCRIPTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../scripts")
@@ -32,12 +24,6 @@ if(BUILD_FOR_SYSTEM_NAME STREQUAL "macos" OR BUILD_FOR_SYSTEM_NAME STREQUAL "ios
set(CMAKE_CXX_STANDARD 17)
endif()
if(SPARK_USE_OPENSSL_CMAKE)
# nothing
else()
SET(OPENSSL_ROOT_DIR "${CMAKE_SOURCE_DIR}/build/${BUILD_FOR_SYSTEM_NAME}/prefix_${ANDROID_ABI}")
endif()
if(BUILD_FOR_SYSTEM_NAME STREQUAL "macos" OR BUILD_FOR_SYSTEM_NAME STREQUAL "ios")
SET(SPARK_MISSING_HEADERS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/deps/missing_headers/darwin")
elseif(BUILD_FOR_SYSTEM_NAME STREQUAL "windows")
@@ -54,9 +40,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(SPARK_USE_OPENSSL_CMAKE)
add_subdirectory("deps/openssl-cmake" EXCLUDE_FROM_ALL)
endif()
add_subdirectory("deps/openssl-cmake" EXCLUDE_FROM_ALL)
add_subdirectory("deps/sparkmobile")

View File

@@ -16,12 +16,6 @@ else()
ADD_DEFINITIONS(-fPIC)
endif()
if(SPARK_USE_OPENSSL_CMAKE)
#nothing
else()
LINK_DIRECTORIES(${OPENSSL_LIBRARIES_DIR})
endif()
# TODO: change this to include when possible
include_directories(. include src/modules/ecdh src)
@@ -77,9 +71,5 @@ endif()
# TODO: emult static precomputation
# TODO: ecdh module
# TODO: RECOVERY module
if(SPARK_USE_OPENSSL_CMAKE)
TARGET_INCLUDE_DIRECTORIES(secp256k1_spark PUBLIC)
else()
TARGET_INCLUDE_DIRECTORIES(secp256k1_spark PUBLIC ${OPENSSL_INCLUDE_DIR})
endif()
TARGET_INCLUDE_DIRECTORIES(secp256k1_spark PUBLIC)
TARGET_LINK_LIBRARIES(secp256k1_spark ${OPENSSL_LIBRARIES})

View File

@@ -9,17 +9,7 @@ endif()
set(OPENSSL_USE_STATIC_LIBS OFF CACHE BOOL "" FORCE)
set(OPENSSL_USE_STATIC_LIBS TRUE)
if(SPARK_USE_OPENSSL_CMAKE)
SET(OPENSSL_LIBRARIES "ssl" "crypto")
else()
SET(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/include")
list(APPEND CMAKE_FIND_ROOT_PATH "${OPENSSL_ROOT_DIR}")
find_package(OpenSSL REQUIRED)
SET(OPENSSL_LIBRARIES_DIR "${OPENSSL_ROOT_DIR}/lib")
LINK_DIRECTORIES(${OPENSSL_LIBRARIES_DIR})
endif()
SET(OPENSSL_LIBRARIES "ssl" "crypto")
add_subdirectory(secp256k1)
@@ -66,12 +56,6 @@ set_property(SOURCE src/spark.cpp
src/util.cpp
PROPERTY COMPILE_FLAGS ${MY_CUSTOM_COMPILE_FLAGS} )
if(SPARK_USE_OPENSSL_CMAKE)
#nothing
else()
LINK_DIRECTORIES(${OPENSSL_LIBRARIES_DIR})
endif()
if(BUILD_FOR_SYSTEM_NAME STREQUAL "ios" OR BUILD_FOR_SYSTEM_NAME STREQUAL "linux" OR BUILD_FOR_SYSTEM_NAME STREQUAL "windows")
SET(CUSTOM_LIB_TYPE STATIC)
else()
@@ -118,18 +102,10 @@ endif()
add_dependencies(sparkmobile secp256k1_spark)
if(SPARK_USE_OPENSSL_CMAKE)
if(BUILD_FOR_SYSTEM_NAME STREQUAL "ios" OR 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)
endif()
if(BUILD_FOR_SYSTEM_NAME STREQUAL "ios" OR 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()
if(BUILD_FOR_SYSTEM_NAME STREQUAL "ios" OR BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos")
target_include_directories(sparkmobile PUBLIC secp256k1_spark ${OPENSSL_INCLUDE_DIR} "${SPARK_MISSING_HEADERS_DIR}")
else()
target_include_directories(sparkmobile PUBLIC secp256k1_spark ${OPENSSL_INCLUDE_DIR})
endif()
target_include_directories(sparkmobile PUBLIC secp256k1_spark)
endif()