### Motivation
Mac Catalyst builds stopped working when `cc-rs` got updated by dependabot in the `rust-mbedtls` dependency of `mobilecoin` and `libmobilecoin`.
### In this PR
* Update `mobilecoin` repo commit to newer that includes a previous `mbedtls` big-num multiplication fix.
* Patch `cc-rs` with new compiler args so mac-catalyst will build correctly
* Patch `cmake-rs` with changes so mac-catalyst will build correctly
* Patch `rust-mbedtls` with above changes so it can build mac-catalyst
* Patch `libmobilecoin` with above patches
* Add `patch-cmake.sh` script on the local machine to workaround a restriction of `cmake` where the CMAKE_SYSTEM_NAME cannot be iOS with a CMAKE_OSX_SYSROOT pointing to a MacOSX sdk. The patched `cmake` files in this context comes from brew as a build dependency. An un-patch script is included as well. '
* re-add back in old implementations of functions for `...add_output` and `...add_change_output` for the Transaction Builder that have the old sig and pull the tokenId from the TransactionBuilder. The new versions which support "mixed" transactions for "SCI" get the "_mixed" suffix.
* Change deployment target to 11.0
* Fix dependency hell w/ cocoapods & Xcode 14, etc...
### Future Work
Find a fix that doesn't require patching `cmake` locally. Merge the patches upstream into master-repo's main branches.
Fix SwiftNIO catomic issue in Swift repo
### Motivation
Support the MaskedAmount v1/v2 changes coming for v4.0.0 of the enclave.
### In this PR
* Pass in a versioned MaskedAmount to the relevant calls
* Create a "legacy" view.proto file so we can re-use serialized data in some Swift unit-tests
* Version increment to trigger a release.
### Future Work
* Convert unit-tests to use new proto, remove "legacy" view.proto
Co-authored-by: Cary A. Bakker <cary@mobilecoin.com>
Co-authored-by: mobilecoin-ci <mobilecoin-ci@mobilecoin.com>
### Motivation
Update the mobilecoin submodule of libmobilecoin to master branch
### In this PR
- Updated protobuf files
- update `mobilecoin` submodule of libmobilecoin to current master
- requisite changes to libmobilecoin for compilation
- Convert `MaskedAmount` -> `MaskedAmountV1`
- New location of `FogResolver`
- New location of `Slip10` utils
* Code compiling - untested
* Remove unused use in error.rs
* single out requisite changes for transaction.rs, remove SCI
* restore Makefile
* Update Artifacts
* [skip ci] commit build Artifacts and generated protos from build machine
* RTH Updates - Payment Intent Memos (#50)
* Update libmobilecoin to use the newest mobilecoin master. Convert MaskedAmount to MaskedAmountV1, new location of FogResolver, new location of Slip10.
Code compiling - untested
Remove unused use in error.rs
single out requisite changes for transaction.rs, remove SCI
restore Makefile
Update Artifacts
[skip ci] commit build Artifacts and generated protos from build machine
Co-authored-by: Adam Mork <the-real-adammork@users.noreply.github.com>
* Add intent RTH memos
* [skip ci] commit build Artifacts and generated protos from build machine
* spec newer version
* update libmobilecoin version to 4.0.0-pre0
Co-authored-by: mobilecoin-ci <mobilecoin-ci@mobilecoin.com>
* Add clean recipe for more reliable builds (#49)
* add clean recipe for more reliable builds
Co-authored-by: Cary A. Bakker <carybakker@users.noreply.github.com>
* [skip ci] commit build Artifacts and generated protos from build machine
Co-authored-by: Cary A. Bakker <carybakker@users.noreply.github.com>
Co-authored-by: mobilecoin-ci <mobilecoin-ci@mobilecoin.com>
Co-authored-by: mobilecoin-ci <mobilecoin-ci@mobilecoin.com>
Co-authored-by: Adam Mork <the-real-adammork@users.noreply.github.com>
Co-authored-by: Adam Mork <adam@mobilecoin.com>
### Motivation
Update generated files and static library for Recoverable Transaction History changes
`mobilecoin/libmobilecoin` changes - https://github.com/mobilecoinfoundation/mobilecoin/pull/1773
### In this PR
* Update generated for FFI bindings added to support RTH
Soundtrack of this PR: [Kelvin Momo & Luu Nineleven - Hamba Nga Two](https://youtu.be/1SkZM6Wmwgc)
### Motivation
Previous release was compiled with incorrect environment variables which would lead to runtime errors in the Swift SDK. Ideally these errors should be caught in CI/CD before a release so test steps using the Swift SDK have been added.
### In this PR
* Change environment configuration to be correct
* Add test steps using the Swift SDK
### Future Work
* Factor out duplicate calls with parameters
### Motivation
Static library compilation is error prone, slow, and susceptible to machine configuration issues. Moving it to CI/CD solves a lot of problems with security and is a timesaver for developers.
### In this PR
* Update CircleCI config to build the static libraries
There are essentially 3 stages to the build process:
1. Compile custom rust-bitcode toolchain, and cache it in CI using the checksum of its configuration
2. Compile the static libraries, and cache it using the commit hash of the mobilecoin repo submodule
3. make "generated" files from mobilecoin repo like gRPC clients
> CI/CD is parallelized over the 6 build-targets for stage 1 & 2
### `mobilecoin` repo changes in updated commit hash:
* Add separate target to build toolchain for a given target
* Add toolchain config file that can be checksummed for cacheing
* Move LIBCLANG_PATH environment variable to `rust-bitcode` repo where its needed
### Future Work
* Compress and upload toolchains as artifacts for longer term storage, likely only change every ~6 months
### Motivation
SDK needs a way to calculate the `crc32` checksum from a `CompressedCommitment`
`mobilecoin` repo `master` is the commit we should use to compile the static libraries
### In this PR
* New header files and static libs for crc32 and newer mobilecoin repo commit
### Future Work
* Merge changes from `mobilecoin` repo into `master`
### Motivation
- Grpc Http Split for smaller library size
### In this PR
- Add HTTP & GRPC only targets to podspec so SDK consumers can choose less protocol support and fewer dependencies
### Future Work
- Add GRPC only support to MobileCoin-Swift
* Change makefile to use mobile-release profile path. Add variable for libmobilecoin profile. Update submodule hash (change after `mobilecoin` merge)
* update protobuf files, update submodule commit hash
* udpate hash
* update hash
* rebuild with all size savings for libmobilecoin. Add GCC & LTO optimizations
* keep debug symbols
* remove gcc & llvm_lto optimizations
* use updated mobilecoin repo with custom toolchain support if locally compiled
* recompile artifacts with locally created custom toolchains and add bitcode support to cocoapod spec
* use unstripped archives that still contain bitcode, add LTO & GCC z opt_level
* update makefile to use unstripped
* no longer use stripped archive file
* update commit hash, but will need to be updated again after the hash is merged into upstream
* no longer using stripped archive, switch to unstripped and name appropriately
* update submodule hash, increment pre version, remove make setup, not longer available for all recipe
* Migrate `fog` to `mobilecoin` submodule. Update bindings and headers to support new changes in `mobilecoin`/`fog` service (CompressedCommitment)
* update submodule to be correct
* add arch specific stripped libs
* dont track Artifacts
* working w/ arch specific binaries (not stripped)
* udpate submodule
* wip
* udpate submodule
* add Artifacts to repo
* copy stripped and unstripped
* use unstripped for now
* LibMobileCoin working w/ arch specific
* up-rev transaction.h to to match changes in `mobilecoin`
* updated mobilecoin repo
* remove checked in libs from old folder structure
* revert to old folder structure for binaries
* update submodule to use latest m1 plus compressed commitment
* add all targets to Makefile. Do a targeted copy of mobilecoin/libmobilecoin output directory so we only copy the binaries
* add compiled binaries for testing
* point to combined branch that includes m1 and compressed commitment.
* 1.2 release
* git modules needs to point to mc official remote. Remove commented code, unnecc code in podspec. Revert some small changes in podspec
* change name and url to mobilecoin
* update archs in podspec
* update spec, dont need non-stripped
* whitespace change, enable catalyst
* add catalyst build options