From edbbf4f647ae592ebc005e3284a600d02c4d2c42 Mon Sep 17 00:00:00 2001 From: Torin Sandall Date: Tue, 2 Jun 2020 10:01:13 -0400 Subject: [PATCH] wasm: Improve makefile to use wildcards and pattern substitution As more built-ins get implemented we will want to split them into separate files. This change just updates the makefile so source files don't have to listed explicitly. This makes it easier to maintain the Makefile because we don't have to audit every single file to make sure it's added correctly. This will also make it easier to do auto deps. Signed-off-by: Torin Sandall --- wasm/Makefile | 138 ++++++++------------------------------------------ 1 file changed, 22 insertions(+), 116 deletions(-) diff --git a/wasm/Makefile b/wasm/Makefile index d667e9212c..791cf7dba4 100644 --- a/wasm/Makefile +++ b/wasm/Makefile @@ -5,8 +5,6 @@ WASM_BUILDER_VERSION := 1.0 WASM_BUILDER_IMAGE := $(WASM_BUILDER_REPOSITORY):$(WASM_BUILDER_VERSION) WASM_OBJ_DIR := _obj -$(shell mkdir -p $(WASM_OBJ_DIR)) - CFLAGS := \ -O3 \ -nostdinc \ @@ -40,87 +38,34 @@ test: hack: @$(DOCKER) run -it --rm -v $(CURDIR):/src $(WASM_BUILDER_IMAGE) -$(WASM_OBJ_DIR)/aggregates.wasm: src/aggregates.c +$(shell mkdir -p $(WASM_OBJ_DIR)/src/lib) +$(shell mkdir -p $(WASM_OBJ_DIR)/src/libmpdec) +$(shell mkdir -p $(WASM_OBJ_DIR)/src) +$(shell mkdir -p $(WASM_OBJ_DIR)/tests) + +SRCS := $(wildcard src/*.c) +LIB_SRCS := $(wildcard src/lib/*.c) +LIB_MPDEC_SRCS := $(wildcard src/libmpdec/*.c) +TEST_SRCS := $(wildcard tests/*.c) + +OBJS := $(patsubst %.c, $(WASM_OBJ_DIR)/%.wasm, $(SRCS)) +LIB_OBJS := $(patsubst %.c, $(WASM_OBJ_DIR)/%.wasm, $(LIB_SRCS)) +LIB_MPDEC_OBJS := $(patsubst %.c, $(WASM_OBJ_DIR)/%.wasm, $(LIB_MPDEC_SRCS)) +TEST_OBJS := $(patsubst %.c, $(WASM_OBJ_DIR)/%.wasm, $(TEST_SRCS)) + +$(OBJS): $(WASM_OBJ_DIR)/src/%.wasm: src/%.c @$(CC) $(CFLAGS) -c $^ -o $@ -$(WASM_OBJ_DIR)/arithmetic.wasm: src/arithmetic.c +$(LIB_OBJS): $(WASM_OBJ_DIR)/src/lib/%.wasm: src/lib/%.c @$(CC) $(CFLAGS) -c $^ -o $@ -$(WASM_OBJ_DIR)/array.wasm: src/array.c +$(LIB_MPDEC_OBJS): $(WASM_OBJ_DIR)/src/libmpdec/%.wasm: src/libmpdec/%.c @$(CC) $(CFLAGS) -c $^ -o $@ -$(WASM_OBJ_DIR)/bits-builtins.wasm: src/bits-builtins.c - @$(CC) $(CFLAGS) -c $^ -o $@ +$(TEST_OBJS): $(WASM_OBJ_DIR)/tests/%.wasm: tests/%.c + @$(CC) $(CFLAGS) -I src -c $^ -o $@ -$(WASM_OBJ_DIR)/context.wasm: src/context.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/json.wasm: src/json.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/malloc.wasm: src/malloc.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/mpd.wasm: src/mpd.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/set.wasm: src/set.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/str.wasm: src/str.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/types.wasm: src/types.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/unicode.wasm: src/unicode.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/value.wasm: src/value.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/lib-%.wasm: src/lib/%.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/libmpdec-%.wasm: src/libmpdec/%.c - @$(CC) $(CFLAGS) -c $^ -o $@ - -$(WASM_OBJ_DIR)/opa.wasm: \ - $(WASM_OBJ_DIR)/aggregates.wasm \ - $(WASM_OBJ_DIR)/arithmetic.wasm \ - $(WASM_OBJ_DIR)/array.wasm \ - $(WASM_OBJ_DIR)/bits-builtins.wasm \ - $(WASM_OBJ_DIR)/context.wasm \ - $(WASM_OBJ_DIR)/json.wasm \ - $(WASM_OBJ_DIR)/lib-ctype.wasm \ - $(WASM_OBJ_DIR)/lib-errno.wasm \ - $(WASM_OBJ_DIR)/lib-locale.wasm \ - $(WASM_OBJ_DIR)/lib-math.wasm \ - $(WASM_OBJ_DIR)/lib-printf.wasm \ - $(WASM_OBJ_DIR)/lib-stdio.wasm \ - $(WASM_OBJ_DIR)/lib-stdlib.wasm \ - $(WASM_OBJ_DIR)/lib-string.wasm \ - $(WASM_OBJ_DIR)/libmpdec-basearith.wasm \ - $(WASM_OBJ_DIR)/libmpdec-constants.wasm \ - $(WASM_OBJ_DIR)/libmpdec-context.wasm \ - $(WASM_OBJ_DIR)/libmpdec-convolute.wasm \ - $(WASM_OBJ_DIR)/libmpdec-crt.wasm \ - $(WASM_OBJ_DIR)/libmpdec-difradix2.wasm \ - $(WASM_OBJ_DIR)/libmpdec-fnt.wasm \ - $(WASM_OBJ_DIR)/libmpdec-fourstep.wasm \ - $(WASM_OBJ_DIR)/libmpdec-io.wasm \ - $(WASM_OBJ_DIR)/libmpdec-memory.wasm \ - $(WASM_OBJ_DIR)/libmpdec-mpdecimal.wasm \ - $(WASM_OBJ_DIR)/libmpdec-numbertheory.wasm \ - $(WASM_OBJ_DIR)/libmpdec-sixstep.wasm \ - $(WASM_OBJ_DIR)/libmpdec-transpose.wasm \ - $(WASM_OBJ_DIR)/malloc.wasm \ - $(WASM_OBJ_DIR)/mpd.wasm \ - $(WASM_OBJ_DIR)/str.wasm \ - $(WASM_OBJ_DIR)/set.wasm \ - $(WASM_OBJ_DIR)/types.wasm \ - $(WASM_OBJ_DIR)/unicode.wasm \ - $(WASM_OBJ_DIR)/value.wasm +$(WASM_OBJ_DIR)/opa.wasm: $(OBJS) $(LIB_OBJS) $(LIB_MPDEC_OBJS) @wasm-ld-8 \ --allow-undefined-file=src/undefined.symbols \ --import-memory \ @@ -130,46 +75,7 @@ $(WASM_OBJ_DIR)/opa.wasm: \ -o $@ @wasm2wat $(WASM_OBJ_DIR)/opa.wasm > $(WASM_OBJ_DIR)/opa.wast -$(WASM_OBJ_DIR)/test.wasm: tests/test.c - @$(CC) $(CFLAGS) -I src -c $^ -o $@ - -$(WASM_OBJ_DIR)/opa-test.wasm: \ - $(WASM_OBJ_DIR)/aggregates.wasm \ - $(WASM_OBJ_DIR)/arithmetic.wasm \ - $(WASM_OBJ_DIR)/array.wasm \ - $(WASM_OBJ_DIR)/bits-builtins.wasm \ - $(WASM_OBJ_DIR)/context.wasm \ - $(WASM_OBJ_DIR)/json.wasm \ - $(WASM_OBJ_DIR)/lib-ctype.wasm \ - $(WASM_OBJ_DIR)/lib-errno.wasm \ - $(WASM_OBJ_DIR)/lib-locale.wasm \ - $(WASM_OBJ_DIR)/lib-math.wasm \ - $(WASM_OBJ_DIR)/lib-printf.wasm \ - $(WASM_OBJ_DIR)/lib-stdio.wasm \ - $(WASM_OBJ_DIR)/lib-stdlib.wasm \ - $(WASM_OBJ_DIR)/lib-string.wasm \ - $(WASM_OBJ_DIR)/libmpdec-basearith.wasm \ - $(WASM_OBJ_DIR)/libmpdec-constants.wasm \ - $(WASM_OBJ_DIR)/libmpdec-context.wasm \ - $(WASM_OBJ_DIR)/libmpdec-convolute.wasm \ - $(WASM_OBJ_DIR)/libmpdec-crt.wasm \ - $(WASM_OBJ_DIR)/libmpdec-difradix2.wasm \ - $(WASM_OBJ_DIR)/libmpdec-fnt.wasm \ - $(WASM_OBJ_DIR)/libmpdec-fourstep.wasm \ - $(WASM_OBJ_DIR)/libmpdec-io.wasm \ - $(WASM_OBJ_DIR)/libmpdec-memory.wasm \ - $(WASM_OBJ_DIR)/libmpdec-mpdecimal.wasm \ - $(WASM_OBJ_DIR)/libmpdec-numbertheory.wasm \ - $(WASM_OBJ_DIR)/libmpdec-sixstep.wasm \ - $(WASM_OBJ_DIR)/libmpdec-transpose.wasm \ - $(WASM_OBJ_DIR)/malloc.wasm \ - $(WASM_OBJ_DIR)/mpd.wasm \ - $(WASM_OBJ_DIR)/str.wasm \ - $(WASM_OBJ_DIR)/set.wasm \ - $(WASM_OBJ_DIR)/test.wasm \ - $(WASM_OBJ_DIR)/types.wasm \ - $(WASM_OBJ_DIR)/unicode.wasm \ - $(WASM_OBJ_DIR)/value.wasm +$(WASM_OBJ_DIR)/opa-test.wasm: $(OBJS) $(LIB_OBJS) $(LIB_MPDEC_OBJS) $(TEST_OBJS) @cat src/undefined.symbols tests/undefined.symbols > _obj/undefined.symbols @wasm-ld-8 \ --allow-undefined-file=_obj/undefined.symbols \