I might sometimes build different profiles, so this gives me somewhere to change them. It *does not work* for debug builds because of how cargo works. So that sucks. I can't think of a reason anyone would seriously want to change the target, but I've made that a variable, too. WASM64 exists, but I can't get a read on it's availability across browsers. The benefit seems to be accessing >4GB of memory, which is not important for this project. Other targets are for "desktop" platforms and so shouldn't be using the makefile.
42 lines
1.4 KiB
Plaintext
42 lines
1.4 KiB
Plaintext
SRC_DIR = ./src
|
|
SRCS := $(wildcard $(SRC_DIR)/**)
|
|
|
|
# Patch these to select a different build profile or target
|
|
# The target shouldn't change any time soon. WASM64, I guess. Other targets
|
|
# aren't aimed at the web, so you shouldn't be using this makefile.
|
|
CARGO_TARGET := wasm32-unknown-unknown
|
|
CARGO_PROFILE := wasm-release
|
|
|
|
.PHONY: clean full-clean web tarball
|
|
|
|
web: out/boids.js out/boids_bg.wasm out/index.html
|
|
|
|
tarball: boids_web_root.tar
|
|
|
|
boids_web_root.tar: out/boids.js out/boids_bg.wasm out/index.html
|
|
tar -caf $@ $<
|
|
|
|
target/$(CARGO_TARGET)/$(CARGO_PROFILE)/another-boids-in-rust.wasm: $(SRCS)
|
|
cargo build --profile $(CARGO_PROFILE) --target $(CARGO_TARGET)
|
|
|
|
out:
|
|
mkdir $@
|
|
|
|
# Both the JS and WASM files are generated by the wasm-bindgen call, so both
|
|
# get to be on the target half of this recipe.
|
|
out/boids.js out/boids_bg.wasm &: target/$(CARGO_TARGET)/$(CARGO_PROFILE)/another-boids-in-rust.wasm | out
|
|
wasm-bindgen --no-typescript --target web --out-dir ./out/ --out-name boids target/$(CARGO_TARGET)/$(CARGO_PROFILE)/another-boids-in-rust.wasm
|
|
|
|
out/index.html: www/index.html
|
|
cp -a $< $@
|
|
|
|
# Clean the web build, but not the Cargo cache. Cargo handles it's own caching
|
|
# and I don't want to obliterate it all the time.
|
|
clean:
|
|
rm -rf out/ boids_web_root.tar
|
|
|
|
# Delete everything, including the Cargo build cache. In case someone needs
|
|
# this, I guess.
|
|
full-clean: clean
|
|
cargo clean
|