This should make it possible to build for iPhone 8, iPhone X and other iOs devices with that or new chips.
Fixes #11720
It seems I need to make some additional change...
make HOST=aarch64-apple-darwin14 NO_QT=1
heartbeat_test.c => ../test/heartbeat_test.c
making links in engines...
making links in tools...
make[2]: Nothing to be done for `links'.
generating dummy tests (if needed)...
make[2]: Nothing to be done for `generate'.
Since you've disabled or enabled at least one algorithm, you need to do
the following before building:
make depend
Configured for iphoneos-cross.
Building openssl...
making all in crypto...
/usr/bin/perl ../util/mkbuildinf.pl "-I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -pipe -O2 -I/Volumes/SSD/src/bitcoin/depends/aarch64-apple-darwin14/include -O3 -isysroot /SDKs/ -fomit-frame-pointer -fno-common" "iphoneos-cross" >buildinf.h
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -mmacosx-version-min=10.8 -I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -pipe -O2 -I/Volumes/SSD/src/bitcoin/depends/aarch64-apple-darwin14/include -O3 -isysroot /SDKs/ -fomit-frame-pointer -fno-common -c -o cryptlib.o cryptlib.c
clang: warning: no such sysroot directory: '/SDKs/' [-Wmissing-sysroot]
In file included from cryptlib.c:117:
./cryptlib.h:62:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
^~~~~~~~~~
1 error generated.
make[2]: *** [cryptlib.o] Error 1
make[1]: *** [build_crypto] Error 1
make: *** [/Volumes/SSD/src/bitcoin/depends/work/build/aarch64-apple-darwin14/openssl/1.0.1k-df65369e03c/./.stamp_built] Error 2
Full log.
I think this PR alone makes little sense. IMO including the openssl change in #11720 seems after solving a real use case.
See here for enough to get cross builds from Linux working: https://github.com/theuni/bitcoin/commit/3907e526b35b5e5f752f3f521ca21df51ea9c020
I can confirm that I get valid aarch64/armv7 binaries using that. Though I have no idea if they work :) Edit: That's building depends with NO_QT=1. I assume the Qt build is horribly broken.
Native builds are more painful, as for cross builds we can assume sdk paths, versions, compilers, etc. I'll save those for a next step.
How about change make command to
$(MAKE) -j1 depend build_libs libcrypto.pc libssl.pc openssl.pc
<!--5d09a71f8925f3f132321140b44b946d-->The last travis run for this pull request was 144 days ago and is thus outdated. To trigger a fresh travis build, this pull request should be closed and re-opened.
@Sjors Are you still working on this?
Rebased and incorporated https://github.com/theuni/bitcoin/commit/3907e526b35b5e5f752f3f521ca21df51ea9c020 (some of it has already been merged). I left out armv7 because Apple dropped support for that in iOs 11. I renamed to PR to cover all depends, rather than just OpenSSL.
make will look in depends/SDKs by default, so you have to set SDK_PATH or add a symlink: ln -s /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs SDKs
Note that if you use SDK_PATH and then change it, that won't take effect until you do a make clean HOST=aarch64-apple-darwin14.
I'm ignoring UPNP for now, so the following command is what I'd like to see working:
make HOST=aarch64-apple-darwin14 NO_QT=1 NO_UPNP=1
Boost 1.64 seems to build 32 bit binaries, which iOs 11 doesn't like. I bumped it from 1.64 to 1.66, as suggested here. I can move that to a separate PR once everything works.
For OpenSSL, the following SED command leads to a "sed: RE error: illegal byte sequence" error on macOS; I probably need to adjust the syntax.
sed -i.old "s/-isysroot.*(CROSS_SDK)//" Configure
BDB isn't happy, though I can avoid that by dropping wallet support (hopefully adding it in later).:
checking for mutexes... UNIX/fcntl
configure: WARNING: NO SHARED LATCH IMPLEMENTATION FOUND FOR THIS PLATFORM.
configure: error: Unable to find a mutex implementation
make: *** [/Users/bitcoin/dev/bitcoind/depends/work/build/aarch64-apple-darwin14/bdb/4.8.30-0f0d7f59f89/build_unix/.stamp_configured] Error 1
Once OpenSSL works, the next step would be:
./configure --prefix=`pwd`/depends/aarch64-apple-darwin14`
Testing this on a real device would require building the rest of the application, so I agree with @jonasschnelli that this PR ultimately needs to be combined with whatever solves #11720.
As for cross-compilation from Ubuntu:
The Gitian build instructions use an old version of Xcode. Nowadays it seems you need to use the App Store to download it. To extract the iOs SDK on macOS machine:
tar -C /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ -czf iPhoneOS.sdk.tar.gz iPhoneOS.sdk iPhoneOS11.4.sdk
Then copy it to the Ubuntu machine and extract into depends/SDKs.
make NO_QT=1 NO_UPNP=1 HOST=aarch64-apple-darwin14
Unfortunately this fails for me with:
"clang++" "-target" "aarch64-apple-darwin14" "-arch" "arm64" "-miphoneos-version-min=11.4" "--sysroot" "/home/gitianuser/bitcoin/depends/SDKs/iPhoneOS11.4.sdk" "-mlinker-version=253.9" "-stdlib=libc++" -std=c++11 -fvisibility=hidden -I/home/gitianuser/bitcoin/depends/aarch64-apple-darwin14/include -O3 -Wall -pedantic -gdwarf-2 -fexceptions -Wno-long-long -pthread -Wextra -Wno-long-long -Wno-unused-parameter -Wunused-function -fpermissive -pedantic -DBOOST_ALL_NO_LIB=1 -DBOOST_ATOMIC_STATIC_LINK=1 -DBOOST_SYSTEM_STATIC_LINK=1 -DBOOST_THREAD_BUILD_LIB=1 -DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_THREAD_POSIX -DNDEBUG -I"." -c -o "bin.v2/libs/thread/build/darwin-gnu-4.2.1/release/link-static/threadapi-pthread/threading-multi/pthread/once.o" "libs/thread/src/pthread/once.cpp"
clang: error: invalid version number in '-miphoneos-version-min=11.4'
...failed darwin.compile.c++ bin.v2/libs/thread/build/darwin-gnu-4.2.1/release/link-static/threadapi-pthread/threading-multi/pthread/once.o...
Maybe I did something wrong with copying the SDK? The directory depends/SDKs/iPhoneOS11.4.sdk contains Entitlements.plist Library SDKSettings.plist System usr.
Prepending LC_ALL=C before the sed did the tick.
Next problem, when running make:
CXX libbitcoin_util_a-utiltime.o
util.cpp:1138:18: error: 'system' is unavailable: not available on iOS
int nErr = ::system(strCommand.c_str());
^
/Users/bitcoin/dev/bitcoind/depends/SDKs/iPhoneOS11.4.sdk/usr/include/stdlib.h:195:6: note: 'system' has been explicitly marked unavailable here
int system(const char *) __DARWIN_ALIAS_C(system);
That's used for -alertnotify, -blocknotify and -walletnotify, which are probably fine to disable on iOs.
Hopefully we don't need too many other workarounds in the code to handle iOs.
I also need to figure out how to actually test this on a device. The simulator is also an issue, but can wait, since it needs x86 architecture while still using the iOs SDK.
0 | @@ -1,4 +1,4 @@ 1 | -SDKs/ 2 | +SDKs
This also works with a symlink.
0 | @@ -1,8 +1,8 @@ 1 | package=boost 2 | -$(package)_version=1_64_0 3 | -$(package)_download_path=https://dl.bintray.com/boostorg/release/1.64.0/source/ 4 | +$(package)_version=1_66_0 5 | +$(package)_download_path=https://dl.bintray.com/boostorg/release/1.66.0/source/ 6 | $(package)_file_name=$(package)_$($(package)_version).tar.bz2 7 | -$(package)_sha256_hash=7bcc5caace97baa948931d712ea5f37038dbb1c5d89b43ad4def4ed7cb683332 8 | +$(package)_sha256_hash=5721818253e6a0989583192f96782c4a98eb6204965316df9f5ad75819225ca9
Is bumping the boost version required?
Edit: Ah, it is only for depends as workaround.
Mmm, Travis is unhappy with the armv7 cross compile. @TheCharlatan any idea? I'm also mystified why Boost 1.64 works fine for our regular aarch64 builds, but why iOs is more picky.
Disabling those notify commands seems to be the only workaround needed, although it's hard to tell without running a real device. The latter is not that easy, because iOs doesn't allow launching arbitrary executables, which is the approach ABcore uses.
I do get a flood of the following warnings:
ld: warning: direct access in function 'boost::unit_test::utils::print_escaped_cdata(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, boost::unit_test::basic_cstring<char const>)'
from file '/Users/bitcoin/dev/bitcoind/depends/aarch64-apple-darwin14/lib/libboost_unit_test_framework-mt.a(xml_log_formatter.o)' to
global weak symbol 'boost::unit_test::basic_cstring<char const>::null_str()::null' from file 'test/test_bitcoin-addrman_tests.o' means the weak symbol cannot be overridden at runtime.
This was likely caused by different translation units being compiled with
different visibility settings.
998 | @@ -999,6 +999,7 @@ bool CWallet::AddToWallet(const CWalletTx& wtxIn, bool fFlushOnClose) 999 | // Notify UI of new or updated transaction 1000 | NotifyTransactionChanged(this, hash, fInsertedNew ? CT_NEW : CT_UPDATED); 1001 | 1002 | +#if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
Would prefer to have a configure check for system usability.
Ok, I'll see if I can figure out how to do that.
It's probably easiest to work with headers and compiled .a files: http://www.swiftprogrammer.info/swift_call_cpp.html#step1
Although that's beyond the scope of this project, I'd like to try to get this to work so that we know if this PR actually works. A minimum PoC would just print IBD progress in a console.
Given the following files:
What do I use for the corresponding header files? And is libbitcoin_server.a the entry point for an RPC server running on the device?
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--174a7506f384e20aa4161008e828411d-->
Reviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.
99 | @@ -88,7 +100,9 @@ void CreatePidFile(const fs::path &path, pid_t pid); 100 | #ifdef WIN32 101 | fs::path GetSpecialFolderPath(int nFolder, bool fCreate = true); 102 | #endif 103 | +#if !(TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR)
Check if TARGET_OS_IPHONE is defined before using. Please fix throughout: applies to all reading of TARGET_* in util.h, init.cpp, validation.cpp, util.cpp, wallet/init.cpp and wallet/wallet.cpp.
I replaced them all with #if defined(HAVE_STD__SYSTEM) || defined(WIN32) , which is now set in configure.ac.
32 | @@ -33,6 +33,18 @@ 33 | 34 | #include <boost/thread/condition_variable.hpp> // for boost::thread_interrupted 35 | 36 | +// Check for Apple OSX and iOS (Darwin) 37 | +#if defined(__APPLE__) && defined(__MACH__) 38 | +#include <TargetConditionals.h> 39 | +#if TARGET_IPHONE_SIMULATOR == 1
Check if defined instead? Same goes for TARGET_* throughout this PR :-)
@Sjors I was preparing a cross-platform Bitcoin SDK (https://github.com/kozyilmaz/glue-sdk) by using the original Bitcoin implementation so maybe you can consider these patches too (https://github.com/kozyilmaz/glue-sdk/tree/master/bitcoin/patches)? It is a work-in-progress and only builds bitcoind and other binaries/libraries for macOS, iOS and iOSSim at the moment.
@kozyilmaz nice! I was able to run make all for environment.ios64. How do I run bitrootfs/ios64/bin/bitcoind on a device or simulator? Once that works I could connect to it remotely via bitcoin-cli, which is a good enough start for me.
Ideally I would want to be able to include this into an app project, which then has some control over the node (could be via RPC on the same device, or the Unix sockets like in #9919, or some other means?).
Ideally this PR should contain whichever changes are needed to make your script run without any patches. Perhaps it can even take over some of your Makefile; I'm not sure where the scope of Bitcoin Core ends and that of application developers start.
Your 001-bitcoin-disable-run-for-ios.patch patch should already be covered by this PR.
I'll try the 000-bitcoin-detect-ios.patch. Build pipelines are not my strong suit: can you explain a little bit what it's doing?
The patches for dependencies seem useful too. Why is your OpenSSL patch different than what I did in this PR?
Note that if it can't find the right SDK version you'll get a bunch of "fatal error: 'unistd.h' file not found" messages.
I haven't made progress other than that, but I thought of an easier initial goal, rather than trying to run the full bitcoind on a phone.
We could create a new build target for a simple utility. #14671 utilities that don't need node or wallet context seems ideal for that. That could be used for a simple iOs app which does something trivial like deriving addresses from a descriptor. Such a proof of concept app (outside this repo) might be sufficient testing to at least be able to merge this.
It could even be something useful like a minimalist wallet, with essentially the same workflow as a hardware wallet. The app generates private keys that only exist on your phone, but otherwise has no knowledge of the chain or your balance. You would then import the public key descriptor into a watch-only wallet into Bitcoin Core on your computer, and use PSBT to sign transactions on your phone.
@kozyilmaz nice! I was able to run
make allforenvironment.ios64. How do I runbitrootfs/ios64/bin/bitcoindon a device or simulator? Once that works I could connect to it remotely viabitcoin-cli, which is a good enough start for me.Ideally I would want to be able to include this into an app project, which then has some control over the node (could be via RPC on the same device, or the Unix sockets like in #9919, or some other means?).
Ideally this PR should contain whichever changes are needed to make your script run without any patches. Perhaps it can even take over some of your Makefile; I'm not sure where the scope of Bitcoin Core ends and that of application developers start.
Your 001-bitcoin-disable-run-for-ios.patch patch should already be covered by this PR.
I'll try the 000-bitcoin-detect-ios.patch. Build pipelines are not my strong suit: can you explain a little bit what it's doing?
The patches for dependencies seem useful too. Why is your OpenSSL patch different than what I did in this PR?
Hi @Sjors I am terribly sorry my very very late comment, just missed it. I was relocating repositories and wanted to at least answer your question:
The patch you mentioned:
https://github.com/kozyilmaz/depends/blob/master/bitcoin/patches/000-bitcoin-detect-ios.patch
it compiles a simple program at ./configure stage and if TARGET_OS_IPHONE or TARGET_IPHONE_SIMULATOR is defined, it adds #define APPLE_TARGET_IOS 1 to src/config/bitcoin-config.h. Of course this works if compilation is done on macOS.
OpenSSL patch is different because I get warnings about the SDK version being too old.
Btw I am able to use Bitcoin classes on iOS 64 and able to create private/public key pairs, generate addresses (BIP32 too), export WIF-formatted private keys as you mentioned (as an example https://github.com/kozyilmaz/depends/blob/abelian/abelian/abelian-test/address.cpp)
@kozyilmaz thanks, I cherry-picked your patch for detecting the iOs simulator / target (unused in the current version, but I assume it will be useful later)
22 | @@ -23,6 +23,7 @@ Common `host-platform-triplets` for cross compilation are: 23 | - `i686-w64-mingw32` for Win32 24 | - `x86_64-w64-mingw32` for Win64 25 | - `x86_64-apple-darwin14` for macOS 26 | +- `aarch64-apple-darwin14` for iOs
nit: iOS, here and in the iOS cross compilation section below
1 | @@ -2,9 +2,17 @@ OSX_MIN_VERSION=10.10 2 | OSX_SDK_VERSION=10.11 3 | OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk 4 | LD64_VERSION=253.9 5 | + 6 | +IOS_MIN_VERSION=12.1
Concept ACK iOS 12.1 as min version
0 | @@ -1,8 +1,8 @@ 1 | package=boost 2 | -$(package)_version=1_64_0
Can you split the boost bump into a separate change, so that can be discussed/merged. We could also bump straight to 1.69.0.
60 | $(package)_config_opts_i686_mingw32=mingw
61 | endef
62 |
63 | define $(package)_preprocess_cmds
64 | sed -i.old "/define DATE/d" util/mkbuildinf.pl && \
65 | - sed -i.old "s|engines apps test|engines|" Makefile.org
Could you split this change into it's own commit
903 | @@ -884,6 +904,15 @@ if test x$use_reduce_exports = xyes; then 904 | [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])]) 905 | fi 906 | 907 | +AC_MSG_CHECKING([for std::system]) 908 | +AC_TRY_LINK( [ #include <cstdlib> ],
When I run ./autogen.sh:
configure.ac:914: warning: The macro `AC_TRY_LINK' is obsolete.
configure.ac:914: You should run autoupdate.
../../lib/autoconf/general.m4:2688: AC_TRY_LINK is expanded from...
configure.ac:914: the top level
glibtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
glibtoolize: copying file 'build-aux/ltmain.sh'
Switched to AC_LINK_IFELSE, also updated #15457.
You know you've entered a deep rabbit hole when there's only 66 installs for a syntax highlighter package... :-) <img width="731" alt="schermafbeelding 2019-02-22 om 11 30 14" src="https://user-images.githubusercontent.com/10217/53236715-3fcdf500-3695-11e9-9cf4-b8c196c77e7f.png">
Tested that building depends for aarch64-apple-darwin14 completes (using a symlink to Xcode SDKs).
If I do ./autogen.sh and plug --prefix=`pwd`/depends/aarch64-apple-darwin14 into ./configure I'm seeing:
configure:3105: checking build system type
configure:3119: result: x86_64-apple-darwin18.2.0
configure:3139: checking host system type
configure:3152: result: aarch64-apple-darwin14
configure:3195: checking for a BSD-compatible install
configure:3263: result: /usr/local/bin/ginstall -c
configure:3274: checking whether build environment is sane
configure:3329: result: yes
configure:3388: checking for aarch64-apple-darwin14-strip
configure:3418: result: no
configure:3428: checking for strip
configure:3444: found /usr/bin/strip
configure:3455: result: strip
configure:3480: checking for a thread-safe mkdir -p
configure:3519: result: /usr/local/bin/gmkdir -p
configure:3526: checking for gawk
configure:3556: result: no
configure:3526: checking for mawk
configure:3556: result: no
configure:3526: checking for nawk
configure:3556: result: no
configure:3526: checking for awk
configure:3542: found /usr/bin/awk
configure:3553: result: awk
configure:3564: checking whether make sets $(MAKE)
configure:3586: result: yes
configure:3615: checking whether make supports nested variables
configure:3632: result: yes
configure:3751: checking whether to enable maintainer-specific portions of Makefiles
configure:3760: result: yes
configure:3785: checking whether make supports nested variables
configure:3802: result: yes
configure:3931: checking for C++ compiler version
configure:3940: clang++ -target aarch64-apple-darwin14 -arch arm64 -miphoneos-version-min=12.1 --sysroot /Users/michael/github/bitcoin/depends/SDKs/iPhoneOS12.1.sdk -mlinker-version=253.9 -stdlib=libc++ --version >&5
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: aarch64-apple-darwin14
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
configure:3951: $? = 0
configure:3940: clang++ -target aarch64-apple-darwin14 -arch arm64 -miphoneos-version-min=12.1 --sysroot /Users/michael/github/bitcoin/depends/SDKs/iPhoneOS12.1.sdk -mlinker-version=253.9 -stdlib=libc++ -v >&5
Apple LLVM version 10.0.0 (clang-1000.11.45.5)
Target: aarch64-apple-darwin14
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
clang: warning: argument unused during compilation: '-miphoneos-version-min=12.1' [-Wunused-command-line-argument]
clang: warning: argument unused during compilation: '-stdlib=libc++' [-Wunused-command-line-argument]
configure:3951: $? = 0
configure:3940: clang++ -target aarch64-apple-darwin14 -arch arm64 -miphoneos-version-min=12.1 --sysroot /Users/michael/github/bitcoin/depends/SDKs/iPhoneOS12.1.sdk -mlinker-version=253.9 -stdlib=libc++ -V >&5
clang: error: argument to '-V' is missing (expected 1 value)
clang: error: no input files
configure:3951: $? = 1
configure:3940: clang++ -target aarch64-apple-darwin14 -arch arm64 -miphoneos-version-min=12.1 --sysroot /Users/michael/github/bitcoin/depends/SDKs/iPhoneOS12.1.sdk -mlinker-version=253.9 -stdlib=libc++ -qversion >&5
clang: error: unknown argument: '-qversion'
clang: error: no input files
configure:3951: $? = 1
configure:3971: checking whether the C++ compiler works
configure:3993: clang++ -target aarch64-apple-darwin14 -arch arm64 -miphoneos-version-min=12.1 --sysroot /Users/michael/github/bitcoin/depends/SDKs/iPhoneOS12.1.sdk -mlinker-version=253.9 -stdlib=libc++ -pipe -O2 -I/Users/michael/github/bitcoin/depends/aarch64-apple-darwin14/share/../include/ -L/Users/michael/github/bitcoin/depends/aarch64-apple-darwin14/share/../lib conftest.cpp >&5
ld: library not found for -lc++
clang: error: linker command failed with exit code 1 (use -v to see invocation)
configure:3997: $? = 1
configure:4035: result: no
+1 Awesome work! Mobile devices now have adaquate storage , though i wonder about processing prower.
We've had success on the android side, has there been any more progress here? We have Qt wallet running and thought about completing the mobile experience.
Is this still being actively worked on ?
I work on this occasionally. Don't let that hold you back to make your own PR; happy to review.
Rebased and dropped af156c279386fdf6d649c9cff9c61b58d7588eef since we no longer need OpenSSL (#17265). Also bumped the iOs version and aarch64-apple-darwin19.
Unfortunately now I run into a new issue, possibly related to #17118 (though reverting doesn't help):
clang: warning: using sysroot for 'MacOSX' but targeting 'iPhone' [-Wincompatible-sysroot]
This config is building and "installing".
https://travis-ci.com/RandyMcMillan/bitcoin/jobs/258943857
https://github.com/RandyMcMillan/bitcoin/commit/982f4ea45996d88662d3f22b8e4e65a3cbe90d46

@RandyMcMillan I don't think that new Travis instance is actually building for iOs: https://travis-ci.com/RandyMcMillan/bitcoin/jobs/258943857#L242 . macOS travis machines are pretty scarce at the moment, so we probably can't add that anyway. Though perhaps we could expand the current macOS machine to cross-compile iOs.
What did the trick for me was using your IOS_SDK=$(xcrun --sdk iphoneos --show-sdk-path) (which let me drop the symlink) and using shell xcrun -f clang instead of clang directly. That does mean you can only build iOs using a macOS host, but that's fine for now imo; not much you can do in the iOs ecosystem without a Mac anyway.
Co-authored-by: kozyilmaz <kazim@monolytic.com>
Rebased, but it's not compiling for me anymore:
Undefined symbols for architecture arm64:
"_getauxval", referenced from:
crc32c::Extend(unsigned int, unsigned char const*, unsigned long) in libcrc32c.a(libcrc32c_a-crc32c.o)
ld: symbol(s) not found for architecture arm64
<!--cf906140f33d8803c4a75a2196329ecb-->Needs rebase
<!--cf906140f33d8803c4a75a2196329ecb-->
🐙 This pull request conflicts with the target branch and needs rebase.
I'm declaring this up for grabs...
I have a vague plan to use https://github.com/LNP-BP/bp-node (rust-bitcoin based), once it will be more complete, and embed it into C FFI to be called from iOS Swift.
A lot of progress was made on the Android front. I keep looking back at this, i hope i can make time and try get the iOS effort on par with android.
@BlockMechanic : Do you have any update at your side? I'm trying to support iOS right now but still no hope Please help me to update if you see anything we can work around
I missed when this was closed. Actually added "Up for grabs" label.
With the introduction of sqlite, it may be worth while to push this. If i can get a moment i will try this again
@BlockMechanic I couldn't even get the node to work without a wallet, so Sqlite wasn't the bottleneck.
Just a thought, but what if you just opened the QT project on like MacOS, got QT5 to convert it to an XCode project and see if that will work? Just a thought, let me know if anyone has tested.
Removing Up for grabs, because it's not clear anyone could take over this changeset. We already support building for arm64-apple-darwin (which is the same target as being added here). I think discussion can continue in #11720 to determine what actually needs to be done.