@@ -2,9 +2,13 @@ name: Build
22
33on :
44 push :
5-
5+ branches :
6+ - release/rcnet-v1
7+ - develop
8+ - main
69 pull_request :
710 branches :
11+ - release/rcnet-v1
812 - develop
913 - main
1014
@@ -21,75 +25,82 @@ jobs:
2125 custom-linker : " "
2226 custom-compiler : /usr/local/opt/llvm/bin/clang
2327 custom-archiver : /usr/local/opt/llvm/bin/llvm-ar
24- features : " jni"
28+ features : " jni,radix-engine"
29+ - crate : native-json-interface
30+ target-triple : x86_64-apple-ios
31+ custom-linker : " "
32+ custom-compiler : /usr/local/opt/llvm/bin/clang
33+ custom-archiver : /usr/local/opt/llvm/bin/llvm-ar
34+ features : " jni,radix-engine"
2535 - crate : native-json-interface
2636 target-triple : x86_64-apple-darwin
2737 custom-linker : " "
2838 custom-compiler : /usr/local/opt/llvm/bin/clang
2939 custom-archiver : /usr/local/opt/llvm/bin/llvm-ar
30- features : " jni"
40+ features : " jni,radix-engine "
3141 - crate : native-json-interface
3242 target-triple : aarch64-apple-ios
3343 custom-linker : " "
3444 custom-compiler : /usr/local/opt/llvm/bin/clang
3545 custom-archiver : /usr/local/opt/llvm/bin/llvm-ar
36- features : " jni"
46+ features : " jni,radix-engine "
3747 - crate : native-json-interface
3848 target-triple : aarch64-apple-ios-sim
3949 custom-linker : " "
4050 custom-compiler : /usr/local/opt/llvm/bin/clang
4151 custom-archiver : /usr/local/opt/llvm/bin/llvm-ar
42- features : " jni"
52+ features : " jni,radix-engine "
4353 - crate : native-json-interface
4454 target-triple : x86_64-pc-windows-gnu
4555 custom-linker : " "
4656 custom-compiler : x86_64-w64-mingw32-gcc
4757 custom-archiver : x86_64-w64-mingw32-ar
48- features : " jni"
58+ features : " jni,radix-engine "
4959 - crate : native-json-interface
5060 target-triple : x86_64-unknown-linux-gnu
5161 custom-linker : x86_64-unknown-linux-gnu-gcc
5262 custom-compiler : /usr/local/opt/llvm/bin/clang
5363 custom-archiver : /usr/local/opt/llvm/bin/llvm-ar
54- features : " jni"
64+ features : " jni,radix-engine "
5565 - crate : native-json-interface
5666 target-triple : aarch64-unknown-linux-gnu
5767 custom-linker : aarch64-unknown-linux-gnu-gcc
5868 custom-compiler : aarch64-unknown-linux-gnu-gcc
5969 custom-archiver : aarch64-unknown-linux-gnu-gcc-ar
60- features : " jni"
70+ features : " jni,radix-engine "
6171 - crate : native-json-interface
6272 target-triple : i686-unknown-linux-gnu
6373 custom-linker : i686-unknown-linux-gnu-gcc
6474 custom-compiler : i686-unknown-linux-gnu-gcc
6575 custom-archiver : i686-unknown-linux-gnu-gcc-ar
66- features : " jni"
76+ features : " jni,radix-engine "
6777 - crate : native-json-interface
6878 target-triple : wasm32-unknown-unknown
6979 custom-linker : " "
7080 custom-compiler : /usr/local/opt/llvm/bin/clang
7181 custom-archiver : /usr/local/opt/llvm/bin/llvm-ar
72- features : " jni "
82+ features : " "
7383 - crate : native-json-interface
7484 target-triple : aarch64-linux-android
75- custom-linker : $HOME/android-ndk/ android-ndk-r22b /toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android21-clang
76- custom-compiler : $HOME/android-ndk/ android-ndk-r22b /toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android21-clang
77- custom-archiver : $HOME/android-ndk/ android-ndk-r22b /toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android -ar
78- features : " jni"
85+ custom-linker : /usr/local/share/ android-ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android21-clang
86+ custom-compiler : /usr/local/share/ android-ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android21-clang
87+ custom-archiver : /usr/local/share/ android-ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm -ar
88+ features : " jni,radix-engine "
7989 - crate : native-json-interface
8090 target-triple : armv7-linux-androideabi
81- custom-linker : $HOME/android-ndk/ android-ndk-r22b /toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi19-clang
82- custom-compiler : $HOME/android-ndk/ android-ndk-r22b /toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi19-clang
83- custom-archiver : $HOME/android-ndk/ android-ndk-r22b /toolchains/llvm/prebuilt/darwin-x86_64/bin/arm-linux-androideabi -ar
84- features : " jni"
91+ custom-linker : /usr/local/share/ android-ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi19-clang
92+ custom-compiler : /usr/local/share/ android-ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi19-clang
93+ custom-archiver : /usr/local/share/ android-ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm -ar
94+ features : " jni,radix-engine "
8595 - crate : native-json-interface
8696 target-triple : i686-linux-android
87- custom-linker : $HOME/android-ndk/ android-ndk-r22b /toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android19-clang
88- custom-compiler : $HOME/android-ndk/ android-ndk-r22b /toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android19-clang
89- custom-archiver : $HOME/android-ndk/ android-ndk-r22b /toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android -ar
90- features : " jni"
97+ custom-linker : /usr/local/share/ android-ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android19-clang
98+ custom-compiler : /usr/local/share/ android-ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android19-clang
99+ custom-archiver : /usr/local/share/ android-ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm -ar
100+ features : " jni,radix-engine "
91101
92102 steps :
103+ - uses : FranzDiebold/github-env-vars-action@v2
93104 - name : Checkout
94105 uses : actions/checkout@v3
95106
@@ -99,13 +110,11 @@ jobs:
99110 brew install llvm
100111 brew install x86_64-unknown-linux-gnu
101112 brew install mingw-w64
113+ brew install --cask android-ndk
102114
103115 brew tap messense/macos-cross-toolchains
104116 brew install aarch64-unknown-linux-gnu
105117 brew install i686-unknown-linux-gnu
106-
107- wget https://dl.google.com/android/repository/android-ndk-r22b-darwin-x86_64.zip
108- unzip -q android-ndk-r22b-darwin-x86_64.zip -d $HOME/android-ndk
109118
110119 - name : Install Rust Toolchain
111120 run : |
@@ -136,12 +145,23 @@ jobs:
136145
137146 export CC=${{ matrix.build-target.custom-compiler }}
138147 export AR=${{ matrix.build-target.custom-archiver }}
139- export features=$${{ matrix.build-target.features }}
140- export features=${features:="default"}
148+
149+ if [ -z "${{ matrix.build-target.features }}" ];
150+ then
151+ echo "No special feature handling"
152+ export features=""
153+ else
154+ export features="--features ${{ matrix.build-target.features }}"
155+ echo "Special feature handling"
156+ echo $features
157+ fi
141158
142- cargo build \
159+ cargo +nightly build \
160+ -Z build-std=std,panic_abort \
161+ -Z build-std-features=panic_immediate_abort \
143162 --target ${{ matrix.build-target.target-triple }} \
144- --release
163+ --no-default-features \
164+ --release $features
145165
146166 unset $LINKER_ENVIRONMENT_VARIABLE
147167 export CC="/usr/local/opt/llvm/bin/clang"
@@ -177,6 +197,76 @@ jobs:
177197 name : " ${{ matrix.build-target.crate }}-${{ matrix.build-target.target-triple }}.tar.gz"
178198 path : " ./${{matrix.build-target.crate}}/target/${{ matrix.build-target.target-triple }}/release/${{ matrix.build-target.target-triple }}.tar.gz"
179199
200+ build-xc-framework :
201+ needs : [build]
202+ runs-on : macos-latest
203+ steps :
204+ - name : Checkout
205+ uses : actions/checkout@v3
206+ - uses : actions/download-artifact@v3
207+ with :
208+ path : artifacts
209+ - name : Extract Artifacts
210+ working-directory : artifacts
211+ run : |
212+ mkdir native
213+
214+ for d in native-json-interface-*.tar.gz; do
215+ mv ./$d/* ./native/
216+ done
217+
218+ cd native
219+
220+ for f in *.tar.gz; do
221+ fn=`echo "$f" | cut -d'.' -f 1`
222+ mkdir "$fn"
223+ tar -xvzf "$f" --directory="$fn";
224+ done
225+
226+ - name : Building XCFramework
227+ working-directory : artifacts
228+ run : |
229+ cd native
230+
231+ # The name of the crate that we are building
232+ CRATE_NAME="native-json-interface"
233+
234+ # Creating the two directories where the temporary FAT libraries will be stored
235+ mkdir ./macos-arm64_x86_64/
236+ mkdir ./ios-simulator-arm64_x86_64
237+
238+ # Creating the fat libraries
239+ lipo -create \
240+ "./aarch64-apple-darwin/libradix_engine_toolkit.a" \
241+ "./x86_64-apple-darwin/libradix_engine_toolkit.a" \
242+ -o "./macos-arm64_x86_64/libradix_engine_toolkit.a"
243+ lipo -create \
244+ "./aarch64-apple-ios-sim/libradix_engine_toolkit.a" \
245+ "./x86_64-apple-ios/libradix_engine_toolkit.a" \
246+ -o "./ios-simulator-arm64_x86_64/libradix_engine_toolkit.a"
247+
248+ # Copying the "include" directory from its origin into the fat library directory
249+ cp -r ./aarch64-apple-darwin/include ./macos-arm64_x86_64/
250+ cp -r ./aarch64-apple-ios-sim/include ./ios-simulator-arm64_x86_64/
251+
252+ # Creating the XC Framework
253+ xcodebuild -create-xcframework \
254+ -library "./aarch64-apple-ios/libradix_engine_toolkit.a" \
255+ -headers "./aarch64-apple-ios/include" \
256+ -library "./macos-arm64_x86_64/libradix_engine_toolkit.a" \
257+ -headers "./macos-arm64_x86_64/include" \
258+ -library "./ios-simulator-arm64_x86_64/libradix_engine_toolkit.a" \
259+ -headers "./ios-simulator-arm64_x86_64/include" \
260+ -output "./RadixEngineToolkit.xcframework"
261+
262+ tar -czf "./RadixEngineToolkit.xcframework.tar.gz" ./RadixEngineToolkit.xcframework
263+
264+ - name : Upload Build Artifacts
265+ uses : actions/upload-artifact@v3
266+ with :
267+ name : " RadixEngineToolkit.xcframework.tar.gz"
268+ path : " ./artifacts/native/RadixEngineToolkit.xcframework.tar.gz"
269+
180270 publish-csharp-nuget :
181271 needs : [build]
182272 runs-on : ubuntu-latest
@@ -208,10 +298,11 @@ jobs:
208298 dotnet-version : 7.0.x
209299 - name : Configure Version
210300 run : |
301+ CI_RUN_NUMBER=${{ github.run_number }}
211302 GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD | sed 's/\//-/g')
212303 GIT_COMMIT=$(git log -1 --format=%h )
213304 CORE_VERSION=$(cat radix-engine-toolkit/Cargo.toml | grep -e '^version' | cut -d'"' -f 2)
214- VERSION_SUFFIX=${GIT_BRANCH}-${GIT_COMMIT }
305+ VERSION_SUFFIX=build.${CI_RUN_NUMBER }
215306 VERSION=${CORE_VERSION}-${VERSION_SUFFIX}
216307
217308 if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
0 commit comments