-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·57 lines (45 loc) · 2.03 KB
/
Copy pathbuild.sh
File metadata and controls
executable file
·57 lines (45 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
MY_CRATE=rustylib
SWIFT_APP=swiftyapp
SWIFT_PROJECT=swiftyrustlib
SWIFT_PROJECT_NAME=RustyLib
SWIFT_CORE_NAME=RustyCore
cd $MY_CRATE
# step 1 - compile rust library and generate bindings
HEADERPATH="out/${MY_CRATE}FFI.h"
TARGETDIR="target"
OUTDIR="../${MY_CRATE}"
RELDIR="release"
STATIC_LIB_NAME="lib${MY_CRATE}.a"
NEW_HEADER_DIR="out/include"
targets=("aarch64-apple-ios" "aarch64-apple-ios-sim" "aarch64-apple-darwin")
for target in "${targets[@]}"; do
cargo build --target "${target}" --release
cargo run --bin uniffi-bindgen generate --library target/${target}/release/lib${MY_CRATE}.a --language swift --out-dir out
done
# step 2 - create xcframework
mkdir -p "${NEW_HEADER_DIR}"
cp "${HEADERPATH}" "${NEW_HEADER_DIR}/"
cp "out/${MY_CRATE}FFI.modulemap" "${NEW_HEADER_DIR}/module.modulemap"
rm -rf "${OUTDIR}/${MY_CRATE}_framework.xcframework"
xcodebuild -create-xcframework \
-library "${TARGETDIR}/aarch64-apple-ios/${RELDIR}/${STATIC_LIB_NAME}" -headers "${NEW_HEADER_DIR}" \
-library "${TARGETDIR}/aarch64-apple-ios-sim/${RELDIR}/${STATIC_LIB_NAME}" -headers "${NEW_HEADER_DIR}" \
-library "${TARGETDIR}/aarch64-apple-darwin/${RELDIR}/${STATIC_LIB_NAME}" -headers "${NEW_HEADER_DIR}" \
-output "${OUTDIR}/${MY_CRATE}_framework.xcframework"
rm -rf "${NEW_HEADER_DIR}"
cd ../
SWIFT_LIB_PATH="./${SWIFT_APP}/Lib/${SWIFT_PROJECT}"
# step 3 - move to SwiftLib artifacts
if [ -d "${SWIFT_LIB_PATH}/artifacts" ]; then
rm -rf "${SWIFT_LIB_PATH}/artifacts"
fi
mkdir "${SWIFT_LIB_PATH}/artifacts"
cp -R "./${MY_CRATE}/${MY_CRATE}_framework.xcframework" "${SWIFT_LIB_PATH}/artifacts"
mv "${SWIFT_LIB_PATH}/artifacts/${MY_CRATE}_framework.xcframework" "${SWIFT_LIB_PATH}/artifacts/${SWIFT_CORE_NAME}.xcframework"
# step 4 - move to SwiftLib Sources
if [ -d "${SWIFT_LIB_PATH}/Sources" ]; then
rm -rf "${SWIFT_LIB_PATH}/Sources"
fi
mkdir "${SWIFT_LIB_PATH}/Sources"
mkdir "${SWIFT_LIB_PATH}/Sources/${SWIFT_PROJECT_NAME}"
cp "./${MY_CRATE}/out/${MY_CRATE}.swift" "${SWIFT_LIB_PATH}/Sources/${SWIFT_PROJECT_NAME}/${SWIFT_PROJECT_NAME}.swift"