From e2ad1410071041f7953c1600ac47b6052b366f3a Mon Sep 17 00:00:00 2001 From: Czarek Nakamoto Date: Tue, 2 Apr 2024 17:09:22 +0200 Subject: feat: iOS builds includes patches to - randomx: https://github.com/tevador/RandomX/pull/294 - randomwow: https://git.wownero.com/wownero/RandomWOW/pulls/2 --- external/ios/build_boost.sh | 25 ++++++++++++ external/ios/build_libiconv.sh | 16 ++++++++ external/ios/build_monero_all.sh | 14 +++++++ external/ios/build_openssl.sh | 19 +++++++++ external/ios/build_sodium.sh | 19 +++++++++ external/ios/build_unbound.sh | 28 +++++++++++++ external/ios/build_zmq.sh | 22 +++++++++++ external/ios/config.sh | 12 ++++++ external/ios/install_missing_headers.sh | 69 +++++++++++++++++++++++++++++++++ 9 files changed, 224 insertions(+) create mode 100755 external/ios/build_boost.sh create mode 100755 external/ios/build_libiconv.sh create mode 100755 external/ios/build_monero_all.sh create mode 100755 external/ios/build_openssl.sh create mode 100755 external/ios/build_sodium.sh create mode 100755 external/ios/build_unbound.sh create mode 100755 external/ios/build_zmq.sh create mode 100755 external/ios/config.sh create mode 100755 external/ios/install_missing_headers.sh (limited to 'external/ios') diff --git a/external/ios/build_boost.sh b/external/ios/build_boost.sh new file mode 100755 index 0000000..1341c69 --- /dev/null +++ b/external/ios/build_boost.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -e + +. ./config.sh + +MIN_IOS_VERSION=10.0 +BOOST_URL="https://github.com/cake-tech/Apple-Boost-BuildScript.git" +BOOST_DIR_PATH="${EXTERNAL_IOS_SOURCE_DIR}/Apple-Boost-BuildScript" +BOOST_VERSION=1.84.0 +BOOST_LIBS="random regex graph random chrono thread filesystem system date_time locale serialization program_options" + +echo "============================ Boost ============================" + +echo "Cloning Apple-Boost-BuildScript from - $BOOST_URL" +git clone -b build $BOOST_URL $BOOST_DIR_PATH +cd $BOOST_DIR_PATH +./boost.sh -ios \ + --min-ios-version ${MIN_IOS_VERSION} \ + --boost-libs "${BOOST_LIBS}" \ + --boost-version ${BOOST_VERSION} \ + --no-framework + +mv ${BOOST_DIR_PATH}/build/boost/${BOOST_VERSION}/ios/release/prefix/include/* $EXTERNAL_IOS_INCLUDE_DIR +mv ${BOOST_DIR_PATH}/build/boost/${BOOST_VERSION}/ios/release/prefix/lib/* $EXTERNAL_IOS_LIB_DIR \ No newline at end of file diff --git a/external/ios/build_libiconv.sh b/external/ios/build_libiconv.sh new file mode 100755 index 0000000..ad59e8a --- /dev/null +++ b/external/ios/build_libiconv.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +. config.sh + +ICONV_DIR_PATH="${EXTERNAL_IOS_SOURCE_DIR}/libiconv" + +rm -rf $ICONV_DIR_PATH +mkdir -p $ICONV_DIR_PATH +pushd $ICONV_DIR_PATH + wget https://ftp.gnu.org/gnu/libiconv/libiconv-1.15.tar.gz -O -| tar xzv + pushd libiconv-1.15 + + popd +popd \ No newline at end of file diff --git a/external/ios/build_monero_all.sh b/external/ios/build_monero_all.sh new file mode 100755 index 0000000..3f73933 --- /dev/null +++ b/external/ios/build_monero_all.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +rm -rf build + +. ./config.sh +./install_missing_headers.sh +./build_openssl.sh +./build_boost.sh +./build_sodium.sh +./build_zmq.sh +./build_unbound.sh + diff --git a/external/ios/build_openssl.sh b/external/ios/build_openssl.sh new file mode 100755 index 0000000..1a2439b --- /dev/null +++ b/external/ios/build_openssl.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -e + +. ./config.sh + +OPEN_SSL_URL="https://github.com/x2on/OpenSSL-for-iPhone.git" +OPEN_SSL_DIR_PATH="${EXTERNAL_IOS_SOURCE_DIR}/OpenSSL" + +echo "============================ OpenSSL ============================" + +echo "Cloning Open SSL from - $OPEN_SSL_URL" +git clone $OPEN_SSL_URL $OPEN_SSL_DIR_PATH +cd $OPEN_SSL_DIR_PATH +./build-libssl.sh --version=1.1.1q --targets="ios-cross-arm64" --deprecated + +mv ${OPEN_SSL_DIR_PATH}/include/* $EXTERNAL_IOS_INCLUDE_DIR +mv ${OPEN_SSL_DIR_PATH}/lib/libcrypto-iOS.a ${EXTERNAL_IOS_LIB_DIR}/libcrypto.a +mv ${OPEN_SSL_DIR_PATH}/lib/libssl-iOS.a ${EXTERNAL_IOS_LIB_DIR}/libssl.a \ No newline at end of file diff --git a/external/ios/build_sodium.sh b/external/ios/build_sodium.sh new file mode 100755 index 0000000..0d4b955 --- /dev/null +++ b/external/ios/build_sodium.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -e + +. ./config.sh + +SODIUM_PATH="${EXTERNAL_IOS_SOURCE_DIR}/libsodium" +SODIUM_URL="https://github.com/jedisct1/libsodium.git" + +echo "============================ SODIUM ============================" + +echo "Cloning SODIUM from - $SODIUM_URL" +git clone $SODIUM_URL $SODIUM_PATH +cd $SODIUM_PATH +git checkout 443617d7507498f7477703f0b51cb596d4539262 +./dist-build/apple-xcframework.sh + +mv ${SODIUM_PATH}/libsodium-apple/ios/include/* $EXTERNAL_IOS_INCLUDE_DIR +mv ${SODIUM_PATH}/libsodium-apple/ios/lib/* $EXTERNAL_IOS_LIB_DIR \ No newline at end of file diff --git a/external/ios/build_unbound.sh b/external/ios/build_unbound.sh new file mode 100755 index 0000000..86d1007 --- /dev/null +++ b/external/ios/build_unbound.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +set -e + +. ./config.sh + +UNBOUND_VERSION=release-1.16.2 +UNBOUND_HASH="cbed768b8ff9bfcf11089a5f1699b7e5707f1ea5" +UNBOUND_URL="https://www.nlnetlabs.nl/downloads/unbound/unbound-${UNBOUND_VERSION}.tar.gz" +UNBOUND_DIR_PATH="${EXTERNAL_IOS_SOURCE_DIR}/unbound-1.16.2" + +echo "============================ Unbound ============================" +rm -rf ${UNBOUND_DIR_PATH} +git clone https://github.com/NLnetLabs/unbound.git -b ${UNBOUND_VERSION} ${UNBOUND_DIR_PATH} +cd $UNBOUND_DIR_PATH +test `git rev-parse HEAD` = ${UNBOUND_HASH} || exit 1 + +export IOS_SDK=iPhone +export IOS_CPU=arm64 +export IOS_PREFIX=$EXTERNAL_IOS_DIR +export AUTOTOOLS_HOST=aarch64-apple-ios +export AUTOTOOLS_BUILD="$(./config.guess)" +source ./contrib/ios/setenv_ios.sh +./contrib/ios/install_tools.sh +./contrib/ios/install_expat.sh +./configure --build="$AUTOTOOLS_BUILD" --host="$AUTOTOOLS_HOST" --prefix="$IOS_PREFIX" --with-ssl="$IOS_PREFIX" --with-libexpat="$IOS_PREFIX" +make +make install \ No newline at end of file diff --git a/external/ios/build_zmq.sh b/external/ios/build_zmq.sh new file mode 100755 index 0000000..0f71bdf --- /dev/null +++ b/external/ios/build_zmq.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -e + +. ./config.sh + +ZMQ_PATH="${EXTERNAL_IOS_SOURCE_DIR}/libzmq" +ZMQ_URL="https://github.com/zeromq/libzmq.git" + +echo "============================ ZMQ ============================" + +echo "Cloning ZMQ from - $ZMQ_URL" +git clone $ZMQ_URL $ZMQ_PATH +cd $ZMQ_PATH +mkdir cmake-build +cd cmake-build +cmake .. +make + + +cp ${ZMQ_PATH}/include/* $EXTERNAL_IOS_INCLUDE_DIR +cp ${ZMQ_PATH}/cmake-build/lib/libzmq.a $EXTERNAL_IOS_LIB_DIR \ No newline at end of file diff --git a/external/ios/config.sh b/external/ios/config.sh new file mode 100755 index 0000000..f21f7f0 --- /dev/null +++ b/external/ios/config.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +export IOS_SCRIPTS_DIR="$(pwd)" +export CW_ROOT="${IOS_SCRIPTS_DIR}" +export EXTERNAL_DIR="${CW_ROOT}/build" +export EXTERNAL_IOS_DIR="${EXTERNAL_DIR}/ios" +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" + +mkdir -p "$EXTERNAL_IOS_LIB_DIR" +mkdir -p "$EXTERNAL_IOS_INCLUDE_DIR" \ No newline at end of file diff --git a/external/ios/install_missing_headers.sh b/external/ios/install_missing_headers.sh new file mode 100755 index 0000000..5ae794a --- /dev/null +++ b/external/ios/install_missing_headers.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +set -e + +. ./config.sh + +echo "Installing missing headers" + +# vmmeter +mkdir -p ${EXTERNAL_IOS_INCLUDE_DIR}/sys + +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/sys/vmmeter.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/vmmeter.h ${EXTERNAL_IOS_INCLUDE_DIR}/sys/vmmeter.h +fi + +# netinet +mkdir -p ${EXTERNAL_IOS_INCLUDE_DIR}/netinet +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/netinet/ip_var.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/netinet/ip_var.h ${EXTERNAL_IOS_INCLUDE_DIR}/netinet/ip_var.h +fi + +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/netinet/udp_var.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/netinet/udp_var.h ${EXTERNAL_IOS_INCLUDE_DIR}/netinet/udp_var.h +fi + +# IOKit +mkdir -p ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOTypes.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/IOTypes.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOTypes.h +fi + +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOMapTypes.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/IOMapTypes.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOMapTypes.h +fi + +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOKitLib.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/IOKitLib.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOKitLib.h +fi + +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOReturn.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/IOReturn.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOReturn.h +fi + +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/OSMessageNotification.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/OSMessageNotification.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/OSMessageNotification.h +fi + +# IOKit/ps +mkdir -p ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/ps + +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/ps/IOPSKeys.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/ps/IOPSKeys.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/ps/IOPSKeys.h +fi + +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/ps/IOPowerSources.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/ps/IOPowerSources.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/ps/IOPowerSources.h +fi + + +# libkern +mkdir -p ${EXTERNAL_IOS_INCLUDE_DIR}/libkern + +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/libkern/OSTypes.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libkern/OSTypes.h ${EXTERNAL_IOS_INCLUDE_DIR}/libkern/OSTypes.h +fi + +if [ ! -f ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOKitKeys.h ]; then + cp /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/IOKit.framework/Versions/A/Headers/IOKitKeys.h ${EXTERNAL_IOS_INCLUDE_DIR}/IOKit/IOKitKeys.h +fi -- cgit v1.2.3