-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
31 lines (24 loc) · 928 Bytes
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CFLAGS += -std=c99
OBJECTS := $(patsubst src/%.c,build/%.o,$(wildcard src/*.c))
TEST_PROGRAMS := $(shell grep -l '^int main' test/*.c)
TEST_LIB_OBJECTS := $(filter-out $(TEST_PROGRAMS),$(wildcard test/*.c))
TEST_PROGRAMS := $(patsubst %.c,build/%,$(TEST_PROGRAMS))
TEST_LIB_OBJECTS := $(patsubst %.c,build/%.o,$(TEST_LIB_OBJECTS)) \
$(filter-out build/error-handling.o,$(OBJECTS))
.PHONY: all test clean
all: $(OBJECTS)
-include build/dependencies.makefile
build/dependencies.makefile:
mkdir -p build/test/
$(CC) -MM src/*.c | sed -r 's,^(\S+:),build/\1,g' > $@
$(CC) -MM -Isrc/ test/*.c | sed -r 's,^(\S+:),build/test/\1,g' >> $@
build/%.o:
$(CC) $(CFLAGS) -c $< -o $@
build/test/%.o:
$(CC) $(CFLAGS) -D_POSIX_C_SOURCE=200112L -Isrc/ -c $< -o $@
build/test/%: build/test/%.o $(TEST_LIB_OBJECTS)
$(CC) $^ $(LDFLAGS) -o $@
test: $(TEST_PROGRAMS)
./test/run-tests.sh
clean:
rm -rf build/