Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
109 lines (97 loc) · 4.59 KB
/
Copy pathMakefile
File metadata and controls
109 lines (97 loc) · 4.59 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
SHELL := /bin/bash
# Include .ndk_home if it exists (for ANDROID_NDK_HOME)
-include .ndk_home
# Plugin paths
FLUTTER_PLUGIN := ./interfaces/ur_registry_flutter
JNILIBS := $(FLUTTER_PLUGIN)/android/src/main/jniLibs
HEADERS := $(FLUTTER_PLUGIN)/include
# Check for required environment
check_env:
@if [ -z "$$ANDROID_NDK_HOME" ]; then \
echo "$$ANDROID_NDK_HOME"; \
echo "Error: ANDROID_NDK_HOME not set. Please create .ndk_home file from .ndk_home.example"; \
exit 1; \
fi
# Prefer nightly toolchain if available, otherwise use default
RUST_TOOLCHAIN_PATH := $(HOME)/.rustup/toolchains/nightly-aarch64-apple-darwin/bin
ifneq ($(wildcard $(RUST_TOOLCHAIN_PATH)),)
export PATH := $(RUST_TOOLCHAIN_PATH):$(HOME)/.cargo/bin:$(PATH)
else
export PATH := $(HOME)/.cargo/bin:$(PATH)
endif
debug: check_env clean_up generate_android_debug generate_ios_debug
release: check_env clean_up generate_android generate_ios
clean_up:
@echo "Step: Removing target"
rm -rf ./target
rm -rf $(JNILIBS)
rm -rf $(FLUTTER_PLUGIN)/ios/ur_registry_flutter/ur_registry_ffi.xcframework
mkdir -p $(JNILIBS)/arm64-v8a
mkdir -p $(JNILIBS)/armeabi-v7a
mkdir -p $(JNILIBS)/x86
@echo "Cleaning up"
generate_android:
@echo "Step: Generating Android builds"
@echo "1: arm64-v8a"
cargo ndk -t arm64-v8a build -p ur-registry-ffi --release
@echo "2: armeabi-v7a"
cargo ndk -t armeabi-v7a build -p ur-registry-ffi --release
@echo "3: x86"
cargo ndk -t x86 build -p ur-registry-ffi --release
@echo "Android buildup"
cp ./target/aarch64-linux-android/release/libur_registry_ffi.so $(JNILIBS)/arm64-v8a/libur_registry_ffi.so
cp ./target/armv7-linux-androideabi/release/libur_registry_ffi.so $(JNILIBS)/armeabi-v7a/libur_registry_ffi.so
cp ./target/i686-linux-android/release/libur_registry_ffi.so $(JNILIBS)/x86/libur_registry_ffi.so
generate_ios:
@echo "Step: Generate iOS builds"
cargo build --release --target aarch64-apple-ios -p ur-registry-ffi
cargo build --release --target aarch64-apple-ios-sim -p ur-registry-ffi
cargo build --release --target x86_64-apple-ios -p ur-registry-ffi
@echo "Creating simulator fat library"
mkdir -p target/sim
rm -f target/sim/libur_registry_ffi.a
lipo target/aarch64-apple-ios-sim/release/libur_registry_ffi.a \
target/x86_64-apple-ios/release/libur_registry_ffi.a \
-create -output target/sim/libur_registry_ffi.a
@echo "Creating XCFramework"
rm -rf target/URRegistryFFI.xcframework $(FLUTTER_PLUGIN)/ios/ur_registry_flutter/ur_registry_ffi.xcframework
xcodebuild -create-xcframework \
-library target/aarch64-apple-ios/release/libur_registry_ffi.a -headers $(HEADERS) \
-library target/sim/libur_registry_ffi.a -headers $(HEADERS) \
-output target/URRegistryFFI.xcframework
cp -R target/URRegistryFFI.xcframework $(FLUTTER_PLUGIN)/ios/ur_registry_flutter/ur_registry_ffi.xcframework
generate_ios_debug:
@echo "Step: Generate iOS debug builds"
cargo build --target aarch64-apple-ios -p ur-registry-ffi
cargo build --target aarch64-apple-ios-sim -p ur-registry-ffi
cargo build --target x86_64-apple-ios -p ur-registry-ffi
@echo "Creating simulator fat library"
mkdir -p target/sim
rm -f target/sim/libur_registry_ffi.a
lipo target/aarch64-apple-ios-sim/debug/libur_registry_ffi.a \
target/x86_64-apple-ios/debug/libur_registry_ffi.a \
-create -output target/sim/libur_registry_ffi.a
@echo "Creating XCFramework"
rm -rf target/URRegistryFFI.xcframework $(FLUTTER_PLUGIN)/ios/ur_registry_flutter/ur_registry_ffi.xcframework
xcodebuild -create-xcframework \
-library target/aarch64-apple-ios/debug/libur_registry_ffi.a -headers $(HEADERS) \
-library target/sim/libur_registry_ffi.a -headers $(HEADERS) \
-output target/URRegistryFFI.xcframework
cp -R target/URRegistryFFI.xcframework $(FLUTTER_PLUGIN)/ios/ur_registry_flutter/ur_registry_ffi.xcframework
test:
@echo "Step: Building macOS dylib for testing"
cargo build -p ur-registry-ffi
cp ./target/debug/libur_registry_ffi.dylib $(FLUTTER_PLUGIN)/libur_registry_ffi.dylib
cd $(FLUTTER_PLUGIN) && flutter test
generate_android_debug:
@echo "Step: Generating Android builds"
@echo "1: arm64-v8a"
cargo ndk -t arm64-v8a build -p ur-registry-ffi
@echo "2: armeabi-v7a"
cargo ndk -t armeabi-v7a build -p ur-registry-ffi
@echo "3: x86"
cargo ndk -t x86 build -p ur-registry-ffi
@echo "Android buildup"
cp ./target/aarch64-linux-android/debug/libur_registry_ffi.so $(JNILIBS)/arm64-v8a/libur_registry_ffi.so
cp ./target/armv7-linux-androideabi/debug/libur_registry_ffi.so $(JNILIBS)/armeabi-v7a/libur_registry_ffi.so
cp ./target/i686-linux-android/debug/libur_registry_ffi.so $(JNILIBS)/x86/libur_registry_ffi.so