Skip to content

Commit 4509ad2

Browse files
ggreifclaude
andcommitted
refactor: use define/eval template for RTS test variants
Factor out the repeated test build/run pattern into a reusable test_variant macro. The cargo target dir is derived from the make target name (target-<name>). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent b6c3556 commit 4509ad2

1 file changed

Lines changed: 26 additions & 24 deletions

File tree

rts/Makefile

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -243,32 +243,34 @@ $(RTS_RUST_DEBUG_WASM_64_A): $(RTS_DEPENDENCIES_64)
243243
TEST_DEPENDENCIES_32=$(TOMMATH_WASM_32_A) $(TOMMATH_BINDINGS_RS_32)
244244
TEST_DEPENDENCIES_64=$(TOMMATH_WASM_64_A) $(TOMMATH_BINDINGS_RS_64)
245245

246-
# Separate CARGO_TARGET_DIR per variant to allow parallel builds (make -j3)
247-
TEST_BUILD_32_NI=cd motoko-rts-tests && CARGO_TARGET_DIR=target-ni RUSTFLAGS="${RTS_COMPILE_FLAGS}" cargo build --target=wasm32-wasip1
248-
TEST_RUN_32_NI=wasmtime -C cache=n -W nan-canonicalization=y motoko-rts-tests/target-ni/wasm32-wasip1/debug/motoko-rts-tests.wasm
249-
250-
TEST_BUILD_32_INC=cd motoko-rts-tests && CARGO_TARGET_DIR=target-inc RUSTFLAGS="${RTS_COMPILE_FLAGS}" cargo build --target=wasm32-wasip1
251-
TEST_RUN_32_INC=wasmtime -C cache=n -W nan-canonicalization=y motoko-rts-tests/target-inc/wasm32-wasip1/debug/motoko-rts-tests.wasm
252-
253-
TEST_BUILD_64=cd motoko-rts-tests && CARGO_TARGET_DIR=target-64 RUSTFLAGS="${RTS_COMPILE_FLAGS}" cargo build --target=wasm64-unknown-unknown -Zbuild-std=core,alloc,std,panic_abort --features enhanced_orthogonal_persistence
254-
TEST_RUN_64=wasmtime -C cache=n -W nan-canonicalization=y -W memory64 motoko-rts-tests/target-64/wasm64-unknown-unknown/debug/motoko-rts-tests.wasm
255-
256-
.PHONY: test test32-non-incremental test32-incremental test64
257-
246+
# RTS test variant template.
247+
# Each variant gets its own CARGO_TARGET_DIR (target-<name>) for parallel builds.
248+
# $(1) = target name, $(2) = cargo target triple,
249+
# $(3) = extra cargo flags, $(4) = features, $(5) = extra wasmtime flags, $(6) = dependencies
250+
define test_variant
251+
.PHONY: $(1)
252+
$(1): $(6)
253+
cd motoko-rts-tests && CARGO_TARGET_DIR=target-$(1) RUSTFLAGS="$${RTS_COMPILE_FLAGS}" \
254+
cargo build --target=$(2) $(3) $(4)
255+
wasmtime -C cache=n -W nan-canonicalization=y $(5) \
256+
motoko-rts-tests/target-$(1)/$(2)/debug/motoko-rts-tests.wasm
257+
endef
258+
259+
comma := ,
260+
261+
$(eval $(call test_variant,test32-non-incremental,wasm32-wasip1,,\
262+
--features classical_persistence,,$$(TEST_DEPENDENCIES_32)))
263+
264+
$(eval $(call test_variant,test32-incremental,wasm32-wasip1,,\
265+
--features classical_persistence$(comma)incremental_gc,,$$(TEST_DEPENDENCIES_32)))
266+
267+
$(eval $(call test_variant,test64,wasm64-unknown-unknown,\
268+
-Zbuild-std=core$(comma)alloc$(comma)std$(comma)panic_abort,\
269+
--features enhanced_orthogonal_persistence,-W memory64,$$(TEST_DEPENDENCIES_64)))
270+
271+
.PHONY: test
258272
test: test32-non-incremental test32-incremental test64
259273

260-
test32-non-incremental: $(TEST_DEPENDENCIES_32)
261-
$(TEST_BUILD_32_NI) --features classical_persistence
262-
$(TEST_RUN_32_NI)
263-
264-
test32-incremental: $(TEST_DEPENDENCIES_32)
265-
$(TEST_BUILD_32_INC) --features classical_persistence,incremental_gc
266-
$(TEST_RUN_32_INC)
267-
268-
test64: $(TEST_DEPENDENCIES_64)
269-
$(TEST_BUILD_64)
270-
$(TEST_RUN_64)
271-
272274
#
273275
# Putting it all together
274276
#

0 commit comments

Comments
 (0)