Repository navigation
Expand file tree
/
Copy pathMakefile
More file actions
175 lines (126 loc) · 6.04 KB
/
Copy pathMakefile
File metadata and controls
175 lines (126 loc) · 6.04 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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
ARCHS_IOS = x86_64-apple-ios aarch64-apple-ios aarch64-apple-ios-sim
ARCHS_VISIONOS = aarch64-apple-visionos aarch64-apple-visionos-sim
ARCHS_TVOS = aarch64-apple-tvos aarch64-apple-tvos-sim
ARCHS_ANDROID = i686-linux-android x86_64-linux-android aarch64-linux-android armv7-linux-androideabi
# Node-API hosts (crates/canvas-napi).
ARCHS_WINDOWS = x86_64-pc-windows-msvc aarch64-pc-windows-msvc
XCFRAMEWORK = CanvasNative.xcframework
RUST_LIB = canvasnative
all: GENERATE_HEADERS GENERATE_V8_HEADERS ios android
ios: $(XCFRAMEWORK)
visionos: $(ARCHS_VISIONOS)
tvos: $(ARCHS_TVOS)
android: GENERATE_ANDROID
windows: $(ARCHS_WINDOWS)
windows-svg: $(addsuffix _svg_napi,$(ARCHS_WINDOWS))
windows-audio: $(addsuffix _audio_napi,$(ARCHS_WINDOWS))
windows-media: $(addsuffix _media_napi,$(ARCHS_WINDOWS))
windows-gamepad: $(addsuffix _gamepad_napi,$(ARCHS_WINDOWS))
ios-svg: GENERATE_IOS_SVG
visionos-svg: GENERATE_VISIONOS_SVG
tvos-svg: GENERATE_TVOS_SVG
svg: GENERATE_IOS_SVG GENERATE_VISIONOS_SVG GENERATE_TVOS_SVG
android-svg: GENERATE_ANDROID_SVG
apple: ios visionos tvos
# Host-side tests. The workspace pins `-C panic=abort` for the Apple host
# targets in .cargo/config.toml (needed by the macOS dylib build) and libtest
# cannot link against that, so the rustflags are replaced for this run.
.PHONY: test
test:
python3 ./tools/tests/check-v8-bridge-invariants.py
RUSTFLAGS="-C link-arg=-undefined -C link-arg=dynamic_lookup" \
cargo test -p canvas-c --features 2d,webgl,gl
.PHONY: GENERATE_HEADERS
GENERATE_HEADERS:
./tools/scripts/build-headers.sh
.PHONY: GENERATE_V8_HEADERS
GENERATE_V8_HEADERS:
./tools/scripts/download-v8.sh
.PHONY: GENERATE_ANDROID_V8_STUB
GENERATE_ANDROID_V8_STUB:
./tools/scripts/build-android-v8-stub.sh
# Match Xcode's pre-build env: cargo tracks SDKROOT and the deployment targets, so a mismatch
# rebuilds the whole tree (std too) on every switch. tvOS also needs it because cc has no default.
apple_sdk = $(if $(findstring visionos-sim,$1),xrsimulator,$(if $(findstring visionos,$1),xros,$(if $(findstring tvos-sim,$1),appletvsimulator,$(if $(findstring tvos,$1),appletvos,$(if $(or $(findstring ios-sim,$1),$(findstring x86_64-apple-ios,$1)),iphonesimulator,iphoneos)))))
apple_env = SDKROOT="$$(xcrun --sdk $(call apple_sdk,$1) --show-sdk-path)" IPHONEOS_DEPLOYMENT_TARGET=12.0 TVOS_DEPLOYMENT_TARGET=12.0 XROS_DEPLOYMENT_TARGET=1.0
.PHONY: $(ARCHS_IOS)
$(ARCHS_IOS): %:
$(call apple_env,$@) RUSTFLAGS="-Zlocation-detail=none -Zunstable-options -Cpanic=immediate-abort" \
cargo +nightly build -Z build-std='std,panic_abort' \
--target $@ --release -p canvas-ios
$(XCFRAMEWORK): $(ARCHS_IOS)
.PHONY: $(ARCHS_VISIONOS)
$(ARCHS_VISIONOS): %:
$(call apple_env,$@) RUSTFLAGS="-Zlocation-detail=none -Zunstable-options -Cpanic=immediate-abort" \
cargo +nightly build -Z build-std='std,panic_abort' \
--target $@ --release -p canvas-ios
.PHONY: $(ARCHS_TVOS)
$(ARCHS_TVOS): %:
$(call apple_env,$@) RUSTFLAGS="-Zlocation-detail=none -Zunstable-options -Cpanic=immediate-abort" \
cargo +nightly build -Z build-std='std,panic_abort' \
--target $@ --release -p canvas-ios
.PHONY: $(ARCHS_ANDROID)
$(ARCHS_ANDROID): %:
./tools/scripts/build-android.sh $@
.PHONY: windows $(ARCHS_WINDOWS)
$(ARCHS_WINDOWS): %:
./tools/scripts/build-napi.sh $@
.PHONY: windows-svg $(addsuffix _svg_napi,$(ARCHS_WINDOWS))
$(addsuffix _svg_napi,$(ARCHS_WINDOWS)): %_svg_napi:
./tools/scripts/build-napi.sh $* release-napi canvas-svg-napi
.PHONY: windows-audio $(addsuffix _audio_napi,$(ARCHS_WINDOWS))
$(addsuffix _audio_napi,$(ARCHS_WINDOWS)): %_audio_napi:
./tools/scripts/build-napi.sh $* release-napi audio-context-napi
.PHONY: windows-media $(addsuffix _media_napi,$(ARCHS_WINDOWS))
$(addsuffix _media_napi,$(ARCHS_WINDOWS)): %_media_napi:
./tools/scripts/build-napi.sh $* release-napi canvas-media-napi
.PHONY: windows-gamepad $(addsuffix _gamepad_napi,$(ARCHS_WINDOWS))
$(addsuffix _gamepad_napi,$(ARCHS_WINDOWS)): %_gamepad_napi:
./tools/scripts/build-napi.sh $* release-napi canvas-gamepad-napi
.PHONY: GENERATE_ANDROID
GENERATE_ANDROID: $(ARCHS_ANDROID)
.PHONY: $(addsuffix _svg,$(ARCHS_IOS))
$(addsuffix _svg,$(ARCHS_IOS)): %_svg:
$(call apple_env,$*) RUSTFLAGS="-Zlocation-detail=none -Zunstable-options -Cpanic=immediate-abort" \
cargo +nightly build -Z build-std='std,panic_abort' \
--target $* --release -p canvas-svg-ios
.PHONY: GENERATE_IOS_SVG
GENERATE_IOS_SVG: $(addsuffix _svg,$(ARCHS_IOS))
.PHONY: $(addsuffix _svg,$(ARCHS_VISIONOS))
$(addsuffix _svg,$(ARCHS_VISIONOS)): %_svg:
$(call apple_env,$*) RUSTFLAGS="-Zlocation-detail=none -Zunstable-options -Cpanic=immediate-abort" \
cargo +nightly build -Z build-std='std,panic_abort' \
--target $* --release -p canvas-svg-ios
.PHONY: GENERATE_VISIONOS_SVG
GENERATE_VISIONOS_SVG: $(addsuffix _svg,$(ARCHS_VISIONOS))
.PHONY: $(addsuffix _svg,$(ARCHS_TVOS))
$(addsuffix _svg,$(ARCHS_TVOS)): %_svg:
$(call apple_env,$*) RUSTFLAGS="-Zlocation-detail=none -Zunstable-options -Cpanic=immediate-abort" \
cargo +nightly build -Z build-std='std,panic_abort' \
--target $* --release -p canvas-svg-ios
.PHONY: GENERATE_TVOS_SVG
GENERATE_TVOS_SVG: $(addsuffix _svg,$(ARCHS_TVOS))
.PHONY: ios-svg visionos-svg tvos-svg svg
.PHONY: $(addsuffix _svg,$(ARCHS_ANDROID))
$(addsuffix _svg,$(ARCHS_ANDROID)): %_svg:
./tools/scripts/build-svg-android.sh $*
.PHONY: GENERATE_ANDROID_SVG
GENERATE_ANDROID_SVG: $(addsuffix _svg,$(ARCHS_ANDROID))
.PHONY: ios_debug
ios_debug: $(addsuffix _debug,$(ARCHS_IOS))
.PHONY: android_debug
android_debug: $(addsuffix _debug,$(ARCHS_ANDROID))
.PHONY: $(addsuffix _debug,$(ARCHS_IOS))
$(addsuffix _debug,$(ARCHS_IOS)): %_debug:
cargo +nightly build --target $* -p canvas-ios
.PHONY: visionos_debug
visionos_debug: $(addsuffix _debug,$(ARCHS_VISIONOS))
.PHONY: $(addsuffix _debug,$(ARCHS_VISIONOS))
$(addsuffix _debug,$(ARCHS_VISIONOS)): %_debug:
cargo +nightly build -Z build-std='std,panic_abort' --target $* -p canvas-ios
.PHONY: $(addsuffix _debug,$(ARCHS_ANDROID))
$(addsuffix _debug,$(ARCHS_ANDROID)): %_debug:
./tools/scripts/build-android.sh $* debug
.PHONY: clean
clean:
rm -rf target