summaryrefslogtreecommitdiffstats
path: root/test/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'test/Makefile')
-rw-r--r--test/Makefile49
1 files changed, 40 insertions, 9 deletions
diff --git a/test/Makefile b/test/Makefile
index 61e1756..02b436a 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -16,16 +16,27 @@ test: run
OBJDIR ?= $(CURDIR)/build
DOWNDIR ?= $(CURDIR)/download
+TARGET_TRIPLE ?= wasm32-wasi
+
##### DOWNLOAD #################################################################
LIBC_TEST_URL ?= https://github.com/bytecodealliance/libc-test
LIBC_TEST = $(DOWNDIR)/libc-test
LIBRT_URL ?= https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-16/libclang_rt.builtins-wasm32-wasi-16.0.tar.gz
LIBRT = $(DOWNDIR)/lib/wasi/libclang_rt.builtins-wasm32.a
-WASMTIME_URL ?= https://github.com/bytecodealliance/wasmtime/releases/download/v3.0.0/wasmtime-v3.0.0-x86_64-linux.tar.xz
+WASMTIME_URL ?= https://github.com/bytecodealliance/wasmtime/releases/download/v17.0.0/wasmtime-v17.0.0-x86_64-linux.tar.xz
WASMTIME = $(DOWNDIR)/$(shell basename $(WASMTIME_URL) .tar.xz)/wasmtime
+WASM_TOOLS_URL ?= https://github.com/bytecodealliance/wasm-tools/releases/download/wasm-tools-1.0.54/wasm-tools-1.0.54-x86_64-linux.tar.gz
+WASM_TOOLS = $(DOWNDIR)/$(shell basename $(WASM_TOOLS_URL) .tar.gz)/wasm-tools
+ADAPTER_URL ?= https://github.com/bytecodealliance/wasmtime/releases/download/v17.0.0/wasi_snapshot_preview1.command.wasm
+ADAPTER = $(DOWNDIR)/wasi_snapshot_preview1.command.wasm
+
+TO_DOWNLOAD = $(LIBC_TEST) $(LIBRT) $(WASMTIME)
+ifeq ($(TARGET_TRIPLE), wasm32-wasip2)
+TO_DOWNLOAD += $(ADAPTER) $(WASM_TOOLS)
+endif
-download: $(LIBC_TEST) $(LIBRT) $(WASMTIME)
+download: $(TO_DOWNLOAD)
$(DOWNDIR):
mkdir -p download
@@ -36,12 +47,19 @@ $(LIBC_TEST): | $(DOWNDIR)
# TODO install target to place into...
$(LIBRT): | $(DOWNDIR)
wget --no-clobber --directory-prefix=$(DOWNDIR) $(LIBRT_URL)
- tar --extract --file=$(DOWNDIR)/$(shell basename $(LIBRT_URL)) --directory=$(DOWNDIR)/
+ tar --extract --file=$(DOWNDIR)/$(shell basename $(LIBRT_URL)) --directory=$(DOWNDIR)/
$(WASMTIME): | $(DOWNDIR)
wget --no-clobber --directory-prefix=$(DOWNDIR) $(WASMTIME_URL)
tar --extract --file=$(DOWNDIR)/$(shell basename $(WASMTIME_URL)) --directory=$(DOWNDIR)/
+$(WASM_TOOLS): | $(DOWNDIR)
+ wget --no-clobber --directory-prefix=$(DOWNDIR) $(WASM_TOOLS_URL)
+ tar --extract --file=$(DOWNDIR)/$(shell basename $(WASM_TOOLS_URL)) --directory=$(DOWNDIR)/
+
+$(ADAPTER): | $(DOWNDIR)
+ wget --no-clobber --directory-prefix=$(DOWNDIR) $(ADAPTER_URL)
+
clean::
rm -rf download
@@ -103,7 +121,7 @@ COMMON_TEST_INFRA = \
# $(WASM_OBJS) are compiled in the $(OBJDIRS) and then linked together to form
# the $(WASMS) tests.
NAMES := $(TESTS:$(LIBC_TEST)/src/%.c=%)
-WASMS := $(TESTS:$(LIBC_TEST)/src/%.c=$(OBJDIR)/%.wasm)
+WASMS := $(TESTS:$(LIBC_TEST)/src/%.c=$(OBJDIR)/%.core.wasm)
WASM_OBJS := $(TESTS:$(LIBC_TEST)/src/%.c=$(OBJDIR)/%.wasm.o)
INFRA_WASM_OBJS := $(COMMON_TEST_INFRA:$(LIBC_TEST)/src/%.c=$(OBJDIR)/%.wasm.o)
WASM_OBJS += $(INFRA_WASM_OBJS)
@@ -116,9 +134,12 @@ ifeq ($(origin CC), default)
CC := clang
endif
LDFLAGS ?=
-CFLAGS ?= --target=wasm32-wasi --sysroot=../sysroot
+CFLAGS ?= --target=$(TARGET_TRIPLE) --sysroot=../sysroot
# Always include the `libc-test` infrastructure headers.
CFLAGS += -I$(LIBC_TEST)/src/common
+ifneq ($(findstring -threads,$(TARGET_TRIPLE)),)
+CFLAGS += -pthread
+endif
# Compile each selected test using Clang. Note that failures here are likely
# due to a missing `libclang_rt.builtins-wasm32.a` in the Clang lib directory.
@@ -128,12 +149,17 @@ CFLAGS += -I$(LIBC_TEST)/src/common
build: download $(WASMS)
$(WASMS): | $(OBJDIRS)
-$(OBJDIR)/%.wasm: $(OBJDIR)/%.wasm.o $(INFRA_WASM_OBJS)
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
+$(OBJDIR)/%.core.wasm: $(OBJDIR)/%.wasm.o $(INFRA_WASM_OBJS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
+
+ifeq ($(TARGET_TRIPLE), wasm32-wasip2)
+$(OBJDIR)/%.wasm: $(OBJDIR)/%.core.wasm
+ $(WASM_TOOLS) component new --adapt $(ADAPTER) $< -o $@
+endif
$(WASM_OBJS): $(LIBC_TEST)/src/common/test.h | $(OBJDIRS)
$(OBJDIR)/%.wasm.o: $(LIBC_TEST)/src/%.c
- $(CC) $(CFLAGS) -c -o $@ $<
+ $(CC) $(CFLAGS) -c -o $@ $<
$(OBJDIRS):
mkdir -p $@
@@ -144,7 +170,7 @@ clean::
##### RUN ######################################################################
ENGINE ?= $(WASMTIME) run
-ERRS:=$(WASMS:%.wasm=%.wasm.err)
+ERRS:=$(WASMS:%.core.wasm=%.wasm.err)
# Use the provided Wasm engine to execute each test, emitting its output into
# a `.err` file.
@@ -153,8 +179,13 @@ run: build $(ERRS)
$(ERRS): | $(OBJDIRS)
+ifeq ($(TARGET_TRIPLE), wasm32-wasip2)
%.wasm.err: %.wasm
+ $(ENGINE) --wasm component-model $< >$@
+else
+%.wasm.err: %.core.wasm
$(ENGINE) $< >$@
+endif
clean::
rm -rf $(OBJDIR)/*/*.err