blob: bca34d89cfebc7fb308bb5ddea69bedf68f68a94 (
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
|
CC := gcc
CFLAGS := -Wall -MMD -MP -std=c99 -DNDEBUG
LFLAGS := -lSDL3 -lGL
# ==============================================================================
EXEC := game
BUILD := build
BIN := $(BUILD)/bin
OBJ := $(BUILD)/obj
SRC := src
TEST := test
TESTBIN := $(TEST)/bin
TESTOBJ := $(TEST)/obj
# ==============================================================================
SRCS := $(shell find $(SRC) -name '*.c')
OBJS := $(patsubst $(SRC)/%.c, $(OBJ)/%.o, $(SRCS))
DEPS := $(OBJS:.o=.d)
LIBOBJS = $(filter-out $(OBJ)/main.o, $(OBJS))
TESTS := $(wildcard $(TEST)/*.c)
TESTOBJS := $(patsubst $(TEST)/%.c, $(TESTOBJ)/%.o, $(TESTS))
TESTBINS := $(patsubst $(TEST)/%.c, $(TESTBIN)/%, $(TESTS))
TESTDEPS := $(TESTOBJS:.o=.d)
# ==============================================================================
$(BIN)/$(EXEC): $(OBJS)
@mkdir -p $(BIN)
$(CC) -o $@ $^ $(LFLAGS)
$(OBJ)/%.o: $(SRC)/%.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c -o $@ $<
.PHONY: run
run: ${BIN}/${EXEC}
./${BIN}/${EXEC}
.PHONY: test
test: ${TESTBIN}/test_vec
./run_tests.sh
$(TESTBIN)/%: $(TESTOBJS) $(LIBOBJS)
@mkdir -p $(TESTBIN)
$(CC) -o $@ $^ $(LFLAGS)
$(TESTOBJ)%.o: $(TEST)/%.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c -I$(SRC) -o $@ $<
-include $(DEPS)
.PHONY: clean
clean:
rm -rf ${BIN}
rm -rf ${OBJ}
rm -rf ${TESTBIN}
rm -rf ${TESTOBJ}
|