-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
103 lines (75 loc) · 3.22 KB
/
Makefile
File metadata and controls
103 lines (75 loc) · 3.22 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
CC ?= cc
BUILD ?= build
STD_CFLAGS ?= -std=c99
WARN_CFLAGS ?= -Wall -Wextra
CPPFLAGS ?= -Ivendor/stb
CFLAGS ?= -O2
LDFLAGS ?=
LDLIBS ?= -lm
SAN_FLAGS ?= -O1 -g -fsanitize=address,undefined -fno-omit-frame-pointer
SAN_LDFLAGS ?= -fsanitize=address,undefined
REL_ALL_CFLAGS = $(STD_CFLAGS) $(WARN_CFLAGS) $(CPPFLAGS) $(CFLAGS)
SAN_ALL_CFLAGS = $(STD_CFLAGS) $(WARN_CFLAGS) $(CPPFLAGS) $(SAN_FLAGS)
SAN_ALL_LDFLAGS = $(LDFLAGS) $(SAN_LDFLAGS)
OBJ := $(BUILD)/stb_impl.o
NOISE_OBJ := $(BUILD)/noise_main.o
ATLAS_OBJ := $(BUILD)/atlas_main.o
IMG_OBJ := $(BUILD)/img_main.o
SAN_OBJ := $(BUILD)/stb_impl_sanitize.o
SAN_NOISE_OBJ := $(BUILD)/noise_main_sanitize.o
SAN_ATLAS_OBJ := $(BUILD)/atlas_main_sanitize.o
SAN_IMG_OBJ := $(BUILD)/img_main_sanitize.o
BIN_NOISE := $(BUILD)/stb-noise
BIN_ATLAS := $(BUILD)/stb-atlas
BIN_IMG := $(BUILD)/stb-img
SAN_BIN_NOISE := $(BUILD)/stb-noise-sanitize
SAN_BIN_ATLAS := $(BUILD)/stb-atlas-sanitize
SAN_BIN_IMG := $(BUILD)/stb-img-sanitize
DEPFILES := $(OBJ:.o=.d) $(NOISE_OBJ:.o=.d) $(ATLAS_OBJ:.o=.d) $(IMG_OBJ:.o=.d) \
$(SAN_OBJ:.o=.d) $(SAN_NOISE_OBJ:.o=.d) $(SAN_ATLAS_OBJ:.o=.d) $(SAN_IMG_OBJ:.o=.d)
all: $(BIN_NOISE) $(BIN_ATLAS) $(BIN_IMG)
$(BUILD):
mkdir -p $@
$(OBJ): src/stb_impl.c | $(BUILD)
$(CC) $(REL_ALL_CFLAGS) -MMD -MP -c $< -o $@
$(NOISE_OBJ): src/noise/main.c | $(BUILD)
$(CC) $(REL_ALL_CFLAGS) -MMD -MP -c $< -o $@
$(ATLAS_OBJ): src/atlas/main.c | $(BUILD)
$(CC) $(REL_ALL_CFLAGS) -MMD -MP -c $< -o $@
$(IMG_OBJ): src/img/main.c | $(BUILD)
$(CC) $(REL_ALL_CFLAGS) -MMD -MP -c $< -o $@
$(BIN_NOISE): $(NOISE_OBJ) $(OBJ)
$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
$(BIN_ATLAS): $(ATLAS_OBJ) $(OBJ)
$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
$(BIN_IMG): $(IMG_OBJ) $(OBJ)
$(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)
$(SAN_OBJ): src/stb_impl.c | $(BUILD)
$(CC) $(SAN_ALL_CFLAGS) -MMD -MP -c $< -o $@
$(SAN_NOISE_OBJ): src/noise/main.c | $(BUILD)
$(CC) $(SAN_ALL_CFLAGS) -MMD -MP -c $< -o $@
$(SAN_ATLAS_OBJ): src/atlas/main.c | $(BUILD)
$(CC) $(SAN_ALL_CFLAGS) -MMD -MP -c $< -o $@
$(SAN_IMG_OBJ): src/img/main.c | $(BUILD)
$(CC) $(SAN_ALL_CFLAGS) -MMD -MP -c $< -o $@
$(SAN_BIN_NOISE): $(SAN_NOISE_OBJ) $(SAN_OBJ)
$(CC) $(SAN_ALL_LDFLAGS) -o $@ $^ $(LDLIBS)
$(SAN_BIN_ATLAS): $(SAN_ATLAS_OBJ) $(SAN_OBJ)
$(CC) $(SAN_ALL_LDFLAGS) -o $@ $^ $(LDLIBS)
$(SAN_BIN_IMG): $(SAN_IMG_OBJ) $(SAN_OBJ)
$(CC) $(SAN_ALL_LDFLAGS) -o $@ $^ $(LDLIBS)
test: $(BIN_NOISE) $(BIN_ATLAS) $(BIN_IMG)
BIN=$(BIN_NOISE) sh tests/test_cli.sh
BIN=$(BIN_ATLAS) sh tests/test_atlas.sh
BIN=$(BIN_IMG) NOISE_BIN=$(BIN_NOISE) sh tests/test_img.sh
sanitize: $(SAN_BIN_NOISE) $(SAN_BIN_ATLAS) $(SAN_BIN_IMG)
ASAN_OPTIONS=abort_on_error=1:detect_leaks=0 UBSAN_OPTIONS=halt_on_error=1 \
BIN=$(SAN_BIN_NOISE) sh tests/test_cli.sh
ASAN_OPTIONS=abort_on_error=1:detect_leaks=0 UBSAN_OPTIONS=halt_on_error=1 \
BIN=$(SAN_BIN_ATLAS) sh tests/test_atlas.sh
ASAN_OPTIONS=abort_on_error=1:detect_leaks=0 UBSAN_OPTIONS=halt_on_error=1 \
BIN=$(SAN_BIN_IMG) NOISE_BIN=$(SAN_BIN_NOISE) sh tests/test_img.sh
clean:
rm -rf $(BUILD)
-include $(DEPFILES)
.PHONY: all test sanitize clean