auto build ios (untested on device)

This commit is contained in:
Julian
2024-01-03 15:59:59 -06:00
parent 4f902d3218
commit 50b31d977e
6 changed files with 39 additions and 105 deletions

View File

@@ -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'

6
ios/run_build.sh Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
set -e
cd ../scripts
./prebuild.sh
cd ios
./build_all.sh

View File

@@ -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/<dict>/<dict>\n\t<key>MinimumOSVersion<\/key>\n\t<string>11.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/<dict>/<dict>\n\t<key>MinimumOSVersion<\/key>\n\t<string>11.0<\/string>/g" ./flutter_libsparkmobile.framework/Info.plist
#cp -R flutter_libsparkmobile.framework "${PROJECT_ROOT_DIR}/ios/"

View File

@@ -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()

View File

@@ -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})

View File

@@ -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()