SRCS := $(wildcard *_test.c) OBJS := $(patsubst %_test.c, %_test.o, $(SRCS)) CFLAGS := -I../src TESTS := $(patsubst %_test.c, %_test, $(SRCS)) EXEC_TESTS := $(patsubst %_test, ./%_test, $(TESTS)) .PHONY: all all: munit.o $(TESTS) @for file in $(EXEC_TESTS); do \ ./"$$file"; \ done .PHONY: clean clean: $(RM) *.o *_test .PHONY: linter linter: $(SRCS) clang-format --dry-run --Werror $? string_view_test: munit.o ../build/string_view.o string_view_test.o $(CC) $? $(CFLAGS) -o $@ vector_test: munit.o ../build/vector.o vector_test.o $(CC) $? $(CFLAGS) -o $@ lexer_test: munit.o ../build/string_view.o ../build/lexer.o lexer_test.o $(CC) $? $(CFLAGS) -o $@ parser_test: munit.o ../build/string_view.o ../build/scope.o ../build/vector.o ../build/lexer.o ../build/ast.o ../build/parser.o parser_test.o $(CC) $? $(CFLAGS) -o $@ scope_test: munit.o ../build/string_view.o ../build/vector.o ../build/ast.o ../build/scope.o scope_test.o $(CC) $? $(CFLAGS) -o $@ integration_test: munit.o integration_test.o $(CC) $? $(CFLAGS) -o $@