From 50b31d977ef198800ac09d58afd295193f24ddfe Mon Sep 17 00:00:00 2001 From: Julian Date: Wed, 3 Jan 2024 15:59:59 -0600 Subject: [PATCH] auto build ios (untested on device) --- ios/flutter_libsparkmobile.podspec | 7 +- ios/run_build.sh | 6 ++ scripts/ios/build_all.sh | 87 +------------------ src/CMakeLists.txt | 14 +-- src/deps/CMakeLists/secp256k1/CMakeLists.txt | 4 +- .../CMakeLists/sparkmobile/CMakeLists.txt | 26 +++--- 6 files changed, 39 insertions(+), 105 deletions(-) create mode 100755 ios/run_build.sh diff --git a/ios/flutter_libsparkmobile.podspec b/ios/flutter_libsparkmobile.podspec index 5bb53ab..78115e0 100644 --- a/ios/flutter_libsparkmobile.podspec +++ b/ios/flutter_libsparkmobile.podspec @@ -13,11 +13,10 @@ A new Flutter project. s.license = { :file => '../LICENSE' } s.author = { 'Your Company' => 'email@example.com' } - # This will ensure the source files in Classes/ are included in the native - # builds of apps using this FFI plugin. Podspec does not support relative - # paths, so Classes contains a forwarder C file that relatively imports - # `../src/*` so that the C sources can be shared among all target platforms. s.source = { :path => '.' } + s.prepare_command = <<-CMD + "./run_build.sh" + CMD s.vendored_frameworks = 'flutter_libsparkmobile.framework' s.dependency 'Flutter' s.platform = :ios, '11.0' diff --git a/ios/run_build.sh b/ios/run_build.sh new file mode 100755 index 0000000..eb9c7a1 --- /dev/null +++ b/ios/run_build.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -e +cd ../scripts +./prebuild.sh +cd ios +./build_all.sh diff --git a/scripts/ios/build_all.sh b/scripts/ios/build_all.sh index e3c5650..c1f1180 100755 --- a/scripts/ios/build_all.sh +++ b/scripts/ios/build_all.sh @@ -4,47 +4,12 @@ set -e export IOS_SCRIPTS_DIR=`pwd` export PROJECT_ROOT_DIR="${IOS_SCRIPTS_DIR}/../.." -export PROJECT_SRC_DIR="${PROJECT_ROOT_DIR}/src" -export EXTERNAL_IOS_DIR="${PROJECT_SRC_DIR}/build/ios" -export IOS_TOOLCHAIN_ROOT="${EXTERNAL_IOS_DIR}/toolchain" -export EXTERNAL_IOS_SOURCE_DIR=${EXTERNAL_IOS_DIR}/sources -export EXTERNAL_IOS_LIB_DIR=${EXTERNAL_IOS_DIR}/lib -export EXTERNAL_IOS_INCLUDE_DIR=${EXTERNAL_IOS_DIR}/include +export IOS_SCRIPTS_BUILD_DIR="${IOS_SCRIPTS_DIR}/build" +export IOS_TOOLCHAIN_ROOT="${IOS_SCRIPTS_BUILD_DIR}/toolchain" -mkdir -p $EXTERNAL_IOS_LIB_DIR -mkdir -p $EXTERNAL_IOS_INCLUDE_DIR -mkdir -p $EXTERNAL_IOS_SOURCE_DIR +mkdir -p "${IOS_SCRIPTS_BUILD_DIR}" +cd "${IOS_SCRIPTS_BUILD_DIR}" -OPEN_SSL_URL="https://github.com/x2on/OpenSSL-for-iPhone.git" -OPEN_SSL_DIR_PATH="${EXTERNAL_IOS_SOURCE_DIR}/OpenSSL" - -echo "============================ OpenSSL ============================" - -if [ ! -d "$OPEN_SSL_DIR_PATH" ] ; then - echo "Cloning Open SSL from - $OPEN_SSL_URL" - git clone "$OPEN_SSL_URL" "$OPEN_SSL_DIR_PATH" - - cd "$OPEN_SSL_DIR_PATH" || exit 1 - git checkout b77ace70b2594de69c88d0748326d2a1190bbac1 - sed -i '' "s/IOS_MIN_SDK_VERSION=\"12.0\"/IOS_MIN_SDK_VERSION=\"10.0\"/g" build-libssl.sh - -else - cd "$OPEN_SSL_DIR_PATH" || exit 1 -fi - - -#./build-libssl.sh --version=1.1.1k --archs="arm64" --targets="ios64-cross-arm64" --deprecated -./build-libssl.sh \ ---version=1.1.1k \ ---archs="x86_64 arm64 armv7s armv7" \ ---targets="ios-sim-cross-x86_64 ios64-cross-arm64 ios-cross-armv7 ios-cross-armv7s" \ ---deprecated - -cp -R "${OPEN_SSL_DIR_PATH}"/include/* "${EXTERNAL_IOS_INCLUDE_DIR}/" -cp -R "${OPEN_SSL_DIR_PATH}"/lib/* "${EXTERNAL_IOS_LIB_DIR}/" - - -#TOOLCHAIN_URL="https://github.com/cristeab/ios-cmake.git" TOOLCHAIN_URL="https://github.com/leetal/ios-cmake.git" TOOLCHAIN_DIR_PATH="${IOS_TOOLCHAIN_ROOT}" @@ -52,18 +17,6 @@ if [ ! -d "$TOOLCHAIN_DIR_PATH" ] ; then git clone $TOOLCHAIN_URL $TOOLCHAIN_DIR_PATH fi -cd "${IOS_SCRIPTS_DIR}" - -if [ ! -d build ] ; then - mkdir build -fi - -cd build - -#cmake ../../../src --trace \ -# -DCMAKE_TOOLCHAIN_FILE="${IOS_TOOLCHAIN_ROOT}/toolchain/iOS.cmake" \ -# -DBUILD_FOR_SYSTEM_NAME="ios" && make -j12 - cmake ../../../src \ -G Xcode \ -DPLATFORM=OS64COMBINED \ @@ -73,36 +26,4 @@ cmake --build . --config Debug cmake --install . --config Debug cd Debug-iphoneos -#cmake ../../../src \ -# -G Xcode \ -# -DPLATFORM=SIMULATOR64 \ -#-DBUILD_FOR_SYSTEM_NAME="ios" \ -#-DCMAKE_TOOLCHAIN_FILE=${IOS_TOOLCHAIN_ROOT}/ios.toolchain.cmake -#cmake --build . --config Debug -#cmake --install . --config Debug -#cd Debug-iphonesimulator - -#cmake ../../../src \ -# -G Xcode \ -# -DPLATFORM=SIMULATOR64 \ -#-DBUILD_FOR_SYSTEM_NAME="ios" \ -#-DCMAKE_TOOLCHAIN_FILE=${IOS_TOOLCHAIN_ROOT}/ios.toolchain.cmake -#cmake --build . --config Release -#cmake --install . --config Release -#cd Release-iphonesimulator - -# -DENABLE_STRICT_TRY_COMPILE=ON \ - - -#sed -i '' "s//\n\tMinimumOSVersion<\/key>\n\t11.0<\/string>/g" flutter_libsparkmobile.framework/Info.plist cp -R flutter_libsparkmobile.framework "${PROJECT_ROOT_DIR}/ios/" - -#cmake ../../../src \ -#-DBUILD_FOR_SYSTEM_NAME="ios" \ -# -DENABLE_STRICT_TRY_COMPILE=ON \ -#-DCMAKE_TOOLCHAIN_FILE=${IOS_TOOLCHAIN_ROOT}/ios.toolchain.cmake \ -#-DPLATFORM=SIMULATOR64 -#make -j12 -# -#sed -i '' "s//\n\tMinimumOSVersion<\/key>\n\t11.0<\/string>/g" ./flutter_libsparkmobile.framework/Info.plist -#cp -R flutter_libsparkmobile.framework "${PROJECT_ROOT_DIR}/ios/" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 49646ea..0763c56 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -5,6 +5,12 @@ 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 "windows") + set(SPARK_USE_OPENSSL_CMAKE TRUE) +else() + set(SPARK_USE_OPENSSL_CMAKE FALSE) +endif() + SET(SPARK_SCRIPTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../scripts") if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows") SET(SPARK_PREBUILD_SCRIPT "prebuild.bat") @@ -20,10 +26,8 @@ if(BUILD_FOR_SYSTEM_NAME STREQUAL "macos" OR BUILD_FOR_SYSTEM_NAME STREQUAL "ios set(CMAKE_CXX_STANDARD 17) endif() -if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows") - SET(OPENSSL_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/build/${BUILD_FOR_SYSTEM_NAME}") -elseif(BUILD_FOR_SYSTEM_NAME STREQUAL "macos" OR BUILD_FOR_SYSTEM_NAME STREQUAL "ios") - SET(OPENSSL_ROOT_DIR "${CMAKE_SOURCE_DIR}/build/${BUILD_FOR_SYSTEM_NAME}") +if(SPARK_USE_OPENSSL_CMAKE) + # nothing else() SET(OPENSSL_ROOT_DIR "${CMAKE_SOURCE_DIR}/build/${BUILD_FOR_SYSTEM_NAME}/prefix_${ANDROID_ABI}") endif() @@ -44,7 +48,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" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos") +if(SPARK_USE_OPENSSL_CMAKE) add_subdirectory("deps/openssl-cmake" EXCLUDE_FROM_ALL) endif() diff --git a/src/deps/CMakeLists/secp256k1/CMakeLists.txt b/src/deps/CMakeLists/secp256k1/CMakeLists.txt index 0f80cb8..c28ae06 100644 --- a/src/deps/CMakeLists/secp256k1/CMakeLists.txt +++ b/src/deps/CMakeLists/secp256k1/CMakeLists.txt @@ -16,7 +16,7 @@ else() ADD_DEFINITIONS(-fPIC) endif() -if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos") +if(SPARK_USE_OPENSSL_CMAKE) #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" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos") +if(SPARK_USE_OPENSSL_CMAKE) TARGET_INCLUDE_DIRECTORIES(secp256k1_spark PUBLIC) else() TARGET_INCLUDE_DIRECTORIES(secp256k1_spark PUBLIC ${OPENSSL_INCLUDE_DIR}) diff --git a/src/deps/CMakeLists/sparkmobile/CMakeLists.txt b/src/deps/CMakeLists/sparkmobile/CMakeLists.txt index edbf540..d906e6b 100644 --- a/src/deps/CMakeLists/sparkmobile/CMakeLists.txt +++ b/src/deps/CMakeLists/sparkmobile/CMakeLists.txt @@ -9,10 +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 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") +if(SPARK_USE_OPENSSL_CMAKE) SET(OPENSSL_LIBRARIES "ssl" "crypto") else() SET(OPENSSL_INCLUDE_DIR "${OPENSSL_ROOT_DIR}/include") @@ -69,7 +66,7 @@ set_property(SOURCE src/spark.cpp src/util.cpp PROPERTY COMPILE_FLAGS ${MY_CUSTOM_COMPILE_FLAGS} ) -if(BUILD_FOR_SYSTEM_NAME STREQUAL "windows" OR BUILD_FOR_SYSTEM_NAME STREQUAL "macos") +if(SPARK_USE_OPENSSL_CMAKE) #nothing else() LINK_DIRECTORIES(${OPENSSL_LIBRARIES_DIR}) @@ -121,12 +118,19 @@ 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 "ios") - target_include_directories(sparkmobile PUBLIC secp256k1_spark ${OPENSSL_INCLUDE_DIR} "${SPARK_MISSING_HEADERS_DIR}") -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}") +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() else() - target_include_directories(sparkmobile PUBLIC secp256k1_spark ${OPENSSL_INCLUDE_DIR}) + 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() endif() + +