summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCzarek Nakamoto <cyjan@mrcyjanek.net>2024-04-02 17:09:22 +0200
committerCzarek Nakamoto <cyjan@mrcyjanek.net>2024-04-02 17:09:22 +0200
commite2ad1410071041f7953c1600ac47b6052b366f3a (patch)
tree2ddf57a52c38ca39436c465ec0f0d2764e83e577
parente4cde6dfb8c8283fdfebe35669101a9a67eef80b (diff)
feat: iOS buildsv0.18.3.3-RC15
includes patches to - randomx: https://github.com/tevador/RandomX/pull/294 - randomwow: https://git.wownero.com/wownero/RandomWOW/pulls/2
-rw-r--r--.gitmodules3
-rwxr-xr-xbuild_single.sh89
m---------external/ios-cmake0
-rwxr-xr-xexternal/ios/build_boost.sh25
-rwxr-xr-xexternal/ios/build_libiconv.sh16
-rwxr-xr-xexternal/ios/build_monero_all.sh14
-rwxr-xr-xexternal/ios/build_openssl.sh19
-rwxr-xr-xexternal/ios/build_sodium.sh19
-rwxr-xr-xexternal/ios/build_unbound.sh28
-rwxr-xr-xexternal/ios/build_zmq.sh22
-rwxr-xr-xexternal/ios/config.sh12
-rwxr-xr-xexternal/ios/install_missing_headers.sh69
-rw-r--r--monero_libwallet2_api_c/CMakeLists.txt19
-rw-r--r--patches/monero/0006-fix-missing-___clear_cache-when-targetting-iOS.patch33
-rw-r--r--patches/wownero/0008-fix-missing-___clear_cache-when-targetting-iOS.patch33
15 files changed, 378 insertions, 23 deletions
diff --git a/.gitmodules b/.gitmodules
index 991dc74..e788dc1 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -7,3 +7,6 @@
[submodule "external/polyseed"]
path = external/polyseed
url = https://github.com/tevador/polyseed
+[submodule "external/ios-cmake"]
+ path = external/ios-cmake
+ url = https://github.com/leetal/ios-cmake
diff --git a/build_single.sh b/build_single.sh
index c499e95..3d8d2eb 100755
--- a/build_single.sh
+++ b/build_single.sh
@@ -103,19 +103,15 @@ case "$HOST_ABI" in
export CC="clang"
export CXX="clang++"
;;
+ "host-apple-ios")
+ export CC="clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk"
+ export CXX="clang++ -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk"
+ ;;
+ *)
+ echo "Unsupported target."
+ exit 1
+ ;;
esac
-
-if [[ "x$CC" == "x" ]];
-then
- echo "No C compiler found for abi: '$HOST_ABI'. Adjust the switch case in $0"
- exit 1
-fi
-
-if [[ "x$CXX" == "x" ]];
-then
- echo "No C++ compiler found for abi: '$HOST_ABI'. Adjust the switch case in $0"
- exit 1
-fi
pushd $repo/contrib/depends
case "$HOST_ABI" in
"x86_64-linux-gnu" | "i686-linux-gnu" | "aarch64-linux-gnu" | "x86_64-linux-android" | "i686-linux-android" | "aarch64-linux-android" | "arm-linux-androideabi" | "i686-w64-mingw32" | "x86_64-w64-mingw32" | "x86_64-apple-darwin11" | "aarch64-apple-darwin11")
@@ -156,6 +152,43 @@ pushd $repo/contrib/depends
verbose_copy "${HOMEBREW_PREFIX}/lib/libsodium.a" ${MACOS_LIBS_DIR}/lib/libsodium.a
verbose_copy "${HOMEBREW_PREFIX}/lib/libevent.a" ${MACOS_LIBS_DIR}/lib/libevent.a
;;
+ "host-apple-ios")
+ echo "===================================="
+ echo "= ="
+ echo "= CHECK README.md IF BUILD FAILS ="
+ echo "= ="
+ echo "===================================="
+ # pushd external/ios
+ # ./build_all.sh
+ # popd
+ POLYSEED_DIR=../../../external/polyseed/build/${HOST_ABI}
+ rm -rf ${POLYSEED_DIR}
+ mkdir -p ${POLYSEED_DIR}
+ pushd ${POLYSEED_DIR}
+ CC="${CC}" CXX="${CXX}" cmake -DCMAKE_TOOLCHAIN_FILE=../../../ios-cmake/ios.toolchain.cmake -DPLATFORM=OS64 ../..
+ make $NPROC
+ popd
+ IOS_LIBS_DIR="${PWD}/host-apple-ios"
+ rm -rf ${IOS_LIBS_DIR}
+ mkdir -p ${IOS_LIBS_DIR}/lib
+ export IOS_PREFIX="$(realpath "${PWD}/../../../external/ios/build/ios")"
+ verbose_copy "${IOS_PREFIX}/lib/libunbound.a" ${IOS_LIBS_DIR}/lib/libunbound.a
+ verbose_copy "${IOS_PREFIX}/lib/libboost_chrono.a" ${IOS_LIBS_DIR}/lib/libboost_chrono.a
+ verbose_copy "${IOS_PREFIX}/lib/libboost_locale.a" ${IOS_LIBS_DIR}/lib/libboost_locale.a
+ verbose_copy "${IOS_PREFIX}/lib/libboost_date_time.a" ${IOS_LIBS_DIR}/lib/libboost_date_time.a
+ verbose_copy "${IOS_PREFIX}/lib/libboost_filesystem.a" ${IOS_LIBS_DIR}/lib/libboost_filesystem.a
+ verbose_copy "${IOS_PREFIX}/lib/libboost_program_options.a" ${IOS_LIBS_DIR}/lib/libboost_program_options.a
+ verbose_copy "${IOS_PREFIX}/lib/libboost_regex.a" ${IOS_LIBS_DIR}/lib/libboost_regex.a
+ verbose_copy "${IOS_PREFIX}/lib/libboost_serialization.a" ${IOS_LIBS_DIR}/lib/libboost_serialization.a
+ verbose_copy "${IOS_PREFIX}/lib/libboost_system.a" ${IOS_LIBS_DIR}/lib/libboost_system.a
+ verbose_copy "${IOS_PREFIX}/lib/libboost_thread.a" ${IOS_LIBS_DIR}/lib/libboost_thread.a
+ verbose_copy "${IOS_PREFIX}/lib/libboost_wserialization.a" ${IOS_LIBS_DIR}/lib/libboost_wserialization.a
+ verbose_copy "${POLYSEED_DIR}/libpolyseed.a" ${IOS_LIBS_DIR}/lib/libpolyseed.a
+ verbose_copy "${IOS_PREFIX}/lib/libssl.a" ${IOS_LIBS_DIR}/lib/libssl.a
+ verbose_copy "${IOS_PREFIX}/lib/libcrypto.a" ${IOS_LIBS_DIR}/lib/libcrypto.a
+ verbose_copy "${IOS_PREFIX}/lib/libsodium.a" ${IOS_LIBS_DIR}/lib/libsodium.a
+ # verbose_copy "${IOS_PREFIX}/lib/libevent.a" ${IOS_LIBS_DIR}/lib/libevent.a
+ ;;
*)
echo "Unable to build dependencies for '$HOST_ABI'."
exit 1
@@ -205,6 +238,15 @@ pushd $repo/build/${HOST_ABI}
"host-apple-darwin")
env CC="${CC}" CXX="${CXX}" cmake -D USE_DEVICE_TREZOR=OFF -D BUILD_GUI_DEPS=1 -D BUILD_TESTS=OFF -D STATIC=ON -D BUILD_64=ON -D CMAKE_BUILD_TYPE=$buildType ../..
;;
+ "host-apple-ios")
+ PREFIX="$(realpath "${PWD}/../../../external/ios/build/ios")"
+ # echo $PREFIX
+ # exit 1
+ env \
+ CMAKE_INCLUDE_PATH="${PREFIX}/include" \
+ CMAKE_LIBRARY_PATH="${PREFIX}/lib" \
+ CC="${CC}" CXX="${CXX}" cmake -D IOS=ON -D ARCH=arm64 -D CMAKE_BUILD_DYPE=$buildType -D STATIC=ON -D BUILD_GUI_DEPS=1 -D UNBOUND_INCLUDE_DIR="${PREFIX}/lib" ../..
+ ;;
*)
echo "we don't know how to compile monero for '$HOST_ABI'"
exit 1
@@ -222,10 +264,23 @@ fi
pushd ${repo}_libwallet2_api_c
rm -rf build/${HOST_ABI} || true
mkdir -p build/${HOST_ABI} -p
- cd build/${HOST_ABI}
-
- env CC="${CC}" CXX="${CXX}" cmake -DMONERO_FLAVOR=$repo -DCMAKE_BUILD_TYPE=Debug -DHOST_ABI=${HOST_ABI} ../..
- CC="${CC}" CXX="${CXX}" make $NPROC
+ pushd build/${HOST_ABI}
+ case $HOST_ABI in
+ "x86_64-linux-gnu" | "i686-linux-gnu" | "aarch64-linux-gnu" | "x86_64-linux-android" | "i686-linux-android" | "aarch64-linux-android" | "arm-linux-androideabi" | "i686-w64-mingw32" | "x86_64-w64-mingw32" | "x86_64-apple-darwin11" | "aarch64-apple-darwin11")
+ env CC="${CC}" CXX="${CXX}" cmake -DMONERO_FLAVOR=$repo -DCMAKE_BUILD_TYPE=Debug -DHOST_ABI=${HOST_ABI} ../..
+ CC="${CC}" CXX="${CXX}" make $NPROC
+ ;;
+ "host-apple-ios")
+ export -n CC CXX
+ cmake -DCMAKE_TOOLCHAIN_FILE=../../../external/ios-cmake/ios.toolchain.cmake -DPLATFORM=OS64 -DMONERO_FLAVOR=$repo -DCMAKE_BUILD_TYPE=Debug -DHOST_ABI=${HOST_ABI} ../..
+ make $NPROC
+ ;;
+ *)
+ echo "Unable to build ${repo}_libwallet2_api_c for ${HOST_ABI}"
+ exit 1
+ ;;
+ esac
+ popd
popd
mkdir -p release/$repo 2>/dev/null || true
@@ -237,7 +292,7 @@ pushd release/$repo
cp ../../$repo/build/${HOST_ABI}/external/polyseed/libpolyseed.${APPENDIX} ${HOST_ABI}_libpolyseed.${APPENDIX}
rm ${HOST_ABI}_libpolyseed.${APPENDIX}.xz || true
xz -e ${HOST_ABI}_libpolyseed.${APPENDIX}
- elif [[ "${HOST_ABI}" == "x86_64-apple-darwin11" || "${HOST_ABI}" == "aarch64-apple-darwin11" || "${HOST_ABI}" == "host-apple-darwin" ]];
+ elif [[ "${HOST_ABI}" == "x86_64-apple-darwin11" || "${HOST_ABI}" == "aarch64-apple-darwin11" || "${HOST_ABI}" == "host-apple-darwin" || "${HOST_ABI}" == "host-apple-ios" ]];
then
APPENDIX="${APPENDIX}dylib"
else
diff --git a/external/ios-cmake b/external/ios-cmake
new file mode 160000
+Subproject 06465b27698424cf4a04a5ca4904d50a3c966c4
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
diff --git a/monero_libwallet2_api_c/CMakeLists.txt b/monero_libwallet2_api_c/CMakeLists.txt
index 67a6901..896e492 100644
--- a/monero_libwallet2_api_c/CMakeLists.txt
+++ b/monero_libwallet2_api_c/CMakeLists.txt
@@ -14,6 +14,8 @@ elseif(${HOST_ABI} STREQUAL "i686-w64-mingw32")
set(CMAKE_LINKER "i686-w64-mingw32-ld")
set(TARGET "i686-w64-mingw32")
# set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
+elseif(${HOST_ABI} STREQUAL "host-apple-ios")
+ set(CMAKE_SYSTEM_NAME iOS)
endif()
add_library( wallet2_api_c
@@ -58,6 +60,9 @@ if(${HOST_ABI} STREQUAL "x86_64-linux-android" OR ${HOST_ABI} STREQUAL "aarch64-
elseif(${HOST_ABI} STREQUAL "x86_64-w64-mingw32" OR ${HOST_ABI} STREQUAL "i686-w64-mingw32")
set(BOOST_WTF "-mt-s")
set(BOOST_WTF_PART "_win32")
+elseif(${HOST_ABI} STREQUAL "host-apple-ios")
+ set(BOOST_WTF "")
+ set(BOOST_WTF_PART "")
else()
set(BOOST_WTF "-mt")
set(BOOST_WTF_PART "")
@@ -74,8 +79,8 @@ set_target_properties(boost_locale PROPERTIES IMPORTED_LOCATION
${EXTERNAL_LIBS_DIR}/lib/libboost_locale${BOOST_WTF}.a)
# win extra
-add_library(iconv STATIC IMPORTED)
-set_target_properties(iconv PROPERTIES IMPORTED_LOCATION
+add_library(iconv-win STATIC IMPORTED)
+set_target_properties(iconv-win PROPERTIES IMPORTED_LOCATION
${EXTERNAL_LIBS_DIR}/lib/libiconv.a)
add_library(boost_date_time STATIC IMPORTED)
@@ -282,6 +287,8 @@ if (${HOST_ABI} STREQUAL "x86_64-apple-darwin11" OR ${HOST_ABI} STREQUAL "aarch6
# set_target_properties(wallet2_api_c PROPERTIES LINK_FLAGS "-Wl,-F/Library/Frameworks")
elseif(${HOST_ABI} STREQUAL "host-apple-darwin")
set(EXTRA_LIBS_APPLE "-framework IOKit" "-framework CoreFoundation" "-framework Cocoa" apple_nghttp2 event)
+elseif(${HOST_ABI} STREQUAL "host-apple-ios")
+ set(EXTRA_LIBS_APPLE "-framework IOKit" "-framework CoreFoundation" iconv)
endif()
# target_compile_options(wallet2_api_c PRIVATE -static-libstdc++)
@@ -289,10 +296,10 @@ endif()
if(${HOST_ABI} STREQUAL "x86_64-w64-mingw32" OR ${HOST_ABI} STREQUAL "i686-w64-mingw32")
set_target_properties(wallet2_api_c PROPERTIES SUFFIX ".dll")
- set(EXTRA_LIBS_WINDOWS wsock32 ws2_32 iconv iphlpapi crypt32 hidapi)
+ set(EXTRA_LIBS_WINDOWS wsock32 ws2_32 iconv-win iphlpapi crypt32 hidapi)
endif()
-if(${HOST_ABI} STREQUAL "x86_64-apple-darwin11" OR ${HOST_ABI} STREQUAL "aarch64-apple-darwin11" OR ${HOST_ABI} STREQUAL "host-apple-darwin")
+if(${HOST_ABI} STREQUAL "x86_64-apple-darwin11" OR ${HOST_ABI} STREQUAL "aarch64-apple-darwin11" OR ${HOST_ABI} STREQUAL "host-apple-darwin" OR ${HOST_ABI} STREQUAL "host-apple-ios")
set_target_properties(wallet2_api_c PROPERTIES SUFFIX ".dylib")
set_target_properties(wallet2_api_c PROPERTIES NO_SONAME 1)
@@ -304,11 +311,11 @@ elseif(${MONERO_FLAVOR} STREQUAL "wownero")
target_compile_definitions(wallet2_api_c PRIVATE FLAVOR_WOWNERO)
endif()
-if(NOT ${HOST_ABI} STREQUAL "x86_64-apple-darwin11" AND NOT ${HOST_ABI} STREQUAL "aarch64-apple-darwin11" AND NOT ${HOST_ABI} STREQUAL "host-apple-darwin")
+if(NOT ${HOST_ABI} STREQUAL "x86_64-apple-darwin11" AND NOT ${HOST_ABI} STREQUAL "aarch64-apple-darwin11" AND NOT ${HOST_ABI} STREQUAL "host-apple-darwin" AND NOT ${HOST_ABI} STREQUAL "host-apple-ios")
set_target_properties(wallet2_api_c PROPERTIES LINK_FLAGS "-Wl,--exclude-libs,ALL")
endif()
-if(${HOST_ABI} STREQUAL "x86_64-apple-darwin11" OR ${HOST_ABI} STREQUAL "aarch64-apple-darwin11" OR ${HOST_ABI} STREQUAL "host-apple-darwin")
+if(${HOST_ABI} STREQUAL "x86_64-apple-darwin11" OR ${HOST_ABI} STREQUAL "aarch64-apple-darwin11" OR ${HOST_ABI} STREQUAL "host-apple-darwin" OR ${HOST_ABI} STREQUAL "host-apple-ios")
if (${MONERO_FLAVOR} STREQUAL "monero")
set(EXPORTED_SYMBOLS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/monero_libwallet2_api_c.exp)
elseif(${MONERO_FLAVOR} STREQUAL "wownero")
diff --git a/patches/monero/0006-fix-missing-___clear_cache-when-targetting-iOS.patch b/patches/monero/0006-fix-missing-___clear_cache-when-targetting-iOS.patch
new file mode 100644
index 0000000..05fb499
--- /dev/null
+++ b/patches/monero/0006-fix-missing-___clear_cache-when-targetting-iOS.patch
@@ -0,0 +1,33 @@
+From ac747342eb270cf09e6a09b41b89548509d5882b Mon Sep 17 00:00:00 2001
+From: Czarek Nakamoto <cyjan@mrcyjanek.net>
+Date: Tue, 2 Apr 2024 16:51:56 +0200
+Subject: [PATCH] fix missing ___clear_cache when targetting iOS
+
+---
+ .gitmodules | 2 +-
+ external/randomx | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/.gitmodules b/.gitmodules
+index 73a23fb35..7ea87a009 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -9,7 +9,7 @@
+ url = https://github.com/trezor/trezor-common.git
+ [submodule "external/randomx"]
+ path = external/randomx
+- url = https://github.com/tevador/RandomX
++ url = https://github.com/MrCyjaneK/RandomX
+ [submodule "external/utf8proc"]
+ path = external/utf8proc
+ url = https://github.com/JuliaStrings/utf8proc.git
+diff --git a/external/randomx b/external/randomx
+index 102f8acf9..cccda3a50 160000
+--- a/external/randomx
++++ b/external/randomx
+@@ -1 +1 @@
+-Subproject commit 102f8acf90a7649ada410de5499a7ec62e49e1da
++Subproject commit cccda3a50f8f5aeb1a7520901d822085fd7881c5
+--
+2.44.0
+
diff --git a/patches/wownero/0008-fix-missing-___clear_cache-when-targetting-iOS.patch b/patches/wownero/0008-fix-missing-___clear_cache-when-targetting-iOS.patch
new file mode 100644
index 0000000..899584c
--- /dev/null
+++ b/patches/wownero/0008-fix-missing-___clear_cache-when-targetting-iOS.patch
@@ -0,0 +1,33 @@
+From 287f5e9bc0e893f807b8ebd5d1e3707616eded0d Mon Sep 17 00:00:00 2001
+From: Czarek Nakamoto <cyjan@mrcyjanek.net>
+Date: Tue, 2 Apr 2024 17:07:19 +0200
+Subject: [PATCH] fix missing ___clear_cache when targetting iOS
+
+---
+ .gitmodules | 4 ++--
+ external/randomwow | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/.gitmodules b/.gitmodules
+index 86009b6b6..f723bd2d8 100644
+--- a/.gitmodules
++++ b/.gitmodules
+@@ -20,6 +20,6 @@
+ url = https://github.com/tevador/polyseed.git
+ [submodule "external/randomwow"]
+ path = external/randomwow
+- url = https://git.wownero.com/wownero/RandomWOW
+- branch = 1.2.1-wow
++ url = https://github.com/mrcyjanek/RandomWOW
++ branch = cyjan-fix-ios
+
+diff --git a/external/randomwow b/external/randomwow
+index 27b099b6d..03cfddb45 160000
+--- a/external/randomwow
++++ b/external/randomwow
+@@ -1 +1 @@
+-Subproject commit 27b099b6dd6fef6e17f58c6dfe00009e9c5df587
++Subproject commit 03cfddb45ba4341b1913c069bcc4f16c2fc6fe71
+--
+2.44.0
+