blob: 0009173d67afbb8c996c99630c3185af61f0e2da (
plain)
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
|
CC := gcc
GLSLC := glslc
ifeq ($(PROD),1)
CFLAGS := -O2 # production flags
else
CFLAGS := -Wall -Wextra -Wpedantic -g -DDEBUG # debug flags
endif
CFLAGS += -std=c99 -lm -lvulkan `sdl2-config --cflags --libs`
SRCD := src
OBJD := obj
BIND := bin
FILD := files
SHDR := shaders
SFILE = $(shell find $(SRCD)/ -type f 2> /dev/null)
CSRCS = $(filter %.c, $(SFILE))
COBJS = $(CSRCS:$(SRCD)/%.c=$(OBJD)/%.o)
FILES = $(shell find $(FILD) -type f 2> /dev/null)
SHDRS = $(filter %.vert %.frag, $(FILES))
SHOBJ = $(SHDRS:$(FILD)/$(SHDR)/%=$(BIND)/$(SHDR)/%.spv)
CDEPS = $(COBJS:%.o=%.d)
-include $(CDEPS)
NAME := test
all: clean $(NAME)
$(NAME): $(BIND)/$(NAME) $(SHOBJ)
clean:
rm -rf $(BIND)
rm -rf $(OBJD)
$(OBJD)/%.o: $(SRCD)/%.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -MMD -MF $(@:%.o=%.d) -c $< -o $@
$(BIND)/$(SHDR)/%.spv: $(FILD)/$(SHDR)/%
@mkdir -p $(dir $@)
$(GLSLC) $< -o $@
$(BIND)/$(NAME): $(COBJS)
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) $^ -o $@
# Extra Tools
RUN_CMD := $(BIND)/$(NAME)
UNITY := unity
$(BIND)/$(UNITY): $(CSRCS)
@mkdir -p $(dir $@)
for src in $^; do \
cat $${src} >> $(SRCD)/$(UNITY).c; \
done
$(CC) $(CFLAGS) $(SRCD)/$(UNITY).c -o $@
@rm $(SRCD)/$(UNITY).c
analyze: clean
scan-build \
-enable-checker alpha \
-enable-checker core \
-enable-checker deadcode \
-enable-checker security \
-enable-checker unix \
make $(BIND)/$(UNITY)
sanitize: clean
$(MAKE) CC="clang -fsanitize=address" run
run: $(NAME)
$(RUN_CMD)
valgrind: all
valgrind -s --leak-check=full --show-leak-kinds=all $(RUN_CMD)
|