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 <torinsandall@gmail.com>
This commit is contained in:
Torin Sandall
2020-06-02 10:01:13 -04:00
parent 95350b92f6
commit edbbf4f647
+22 -116
View File
@@ -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 \