blob: 3d3e888cbac1c142f48d3b3f366c0e9cefb7c0ab (
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
PROGRAM = konengine
SRCDIR = src
KONDIR = kon
EXTDIR = ext
OBJDIR ?= obj
EXE ?=
MODEFLAGS ?= -O2 -DNDEBUG
DEFS ?=
LDLIBS ?= -lm
MODOBJS ?=
WARN = -std=c99 -Wall -Wextra -Wpedantic
KONFLAGS = $(WARN) $(MODEFLAGS) $(DEFS) -I$(KONDIR) -I$(EXTDIR)
EXTFLAGS = -std=gnu99 -w $(MODEFLAGS) $(DEFS) -I$(EXTDIR)
COMPILE = @mkdir -p $(OBJDIR); echo "\# compile $@"; $(CC) $(KONFLAGS) -c
COMPILEEXT = @mkdir -p $(OBJDIR); echo "\# compile $@"; $(CC) $(EXTFLAGS) -c
ASSETDIR ?= assets
PACKFLAGS ?=
BIN = $(OBJDIR)/$(PROGRAM)$(EXE)
PACKER = $(OBJDIR)/konpack$(EXE)
MODELER = $(OBJDIR)/konmodel$(EXE)
EXAMPLES = modelview sound ui platform corridor hills
EXAMPLEBINS = $(EXAMPLES:%=$(OBJDIR)/%$(EXE))
PACKFILE = $(OBJDIR)/data.kpk
CORE = $(OBJDIR)/engine.o $(OBJDIR)/konwinlib.o $(OBJDIR)/konsofren.o \
$(OBJDIR)/kontime.o $(OBJDIR)/koninput.o $(OBJDIR)/konprogram.o
OBJS = $(CORE) $(MODOBJS)
all: $(BIN)
$(BIN): $(OBJS)
@echo "# link $@"
@$(CC) -o $@ $(OBJS) $(LDLIBS)
$(OBJDIR)/engine.o: $(SRCDIR)/engine.c $(KONDIR)/*.h
$(COMPILE) $(SRCDIR)/engine.c -o $@
$(OBJDIR)/konwinlib.o: $(SRCDIR)/impl/konwinlib.c $(KONDIR)/konwinlib.h
$(COMPILE) $(SRCDIR)/impl/konwinlib.c -o $@
$(OBJDIR)/konsofren.o: $(SRCDIR)/impl/konsofren.c $(KONDIR)/konsofren.h
$(COMPILE) $(SRCDIR)/impl/konsofren.c -o $@
$(OBJDIR)/kontime.o: $(SRCDIR)/impl/kontime.c $(KONDIR)/kontime.h
$(COMPILE) $(SRCDIR)/impl/kontime.c -o $@
$(OBJDIR)/koninput.o: $(SRCDIR)/impl/koninput.c $(KONDIR)/koninput.h $(KONDIR)/konwinlib.h
$(COMPILE) $(SRCDIR)/impl/koninput.c -o $@
$(OBJDIR)/konfont.o: $(SRCDIR)/impl/konfont.c $(KONDIR)/konfont.h $(KONDIR)/konsofren.h $(EXTDIR)/stb_truetype.h
$(COMPILE) $(SRCDIR)/impl/konfont.c -o $@
$(OBJDIR)/kontoml.o: $(SRCDIR)/impl/kontoml.c $(KONDIR)/kontoml.h
$(COMPILE) $(SRCDIR)/impl/kontoml.c -o $@
# modules with a .c next to their header are normal modules, the single header libs go through src/impl
$(OBJDIR)/%.o: $(KONDIR)/%.c $(KONDIR)/*.h $(EXTDIR)/*.h
$(COMPILE) $< -o $@
$(OBJDIR)/stb_image.o: $(SRCDIR)/impl/stb_image.c $(EXTDIR)/stb_image.h
$(COMPILEEXT) $(SRCDIR)/impl/stb_image.c -o $@
$(OBJDIR)/miniaudio.o: $(SRCDIR)/impl/miniaudio.c $(EXTDIR)/miniaudio.h
$(COMPILEEXT) $(SRCDIR)/impl/miniaudio.c -o $@
tools: $(PACKER) $(MODELER)
# every example is its own program, built from the same modules as the engine without engine.c
examples: $(EXAMPLEBINS)
$(OBJDIR)/%.o: examples/%.c $(KONDIR)/*.h
$(COMPILE) $< -o $@
$(EXAMPLEBINS): $(OBJDIR)/%$(EXE): $(OBJDIR)/%.o $(filter-out $(OBJDIR)/engine.o,$(OBJS))
@echo "# link $@"
@$(CC) -o $@ $^ $(LDLIBS)
$(PACKER): tools/konpack.c $(KONDIR)/konpack.c $(KONDIR)/konpack.h
@mkdir -p $(OBJDIR)
@echo "# link $@"
@$(CC) $(KONFLAGS) -DKONPACK_WRITER -o $@ tools/konpack.c $(KONDIR)/konpack.c
# the converter is built without DEFS, it only needs the loader and the glTF reader
TOOLFLAGS = $(WARN) $(MODEFLAGS) -I$(KONDIR) -I$(EXTDIR)
$(OBJDIR)/cgltf.o: tools/cgltf.c $(EXTDIR)/cgltf.h
@mkdir -p $(OBJDIR)
@echo "# compile $@"
@$(CC) -std=gnu99 -w $(MODEFLAGS) -I$(EXTDIR) -c tools/cgltf.c -o $@
$(MODELER): tools/konmodel.c $(OBJDIR)/cgltf.o $(KONDIR)/konmodel.c $(KONDIR)/konmodel.h $(KONDIR)/konassets.c $(KONDIR)/konpack.c $(SRCDIR)/impl/konsofren.c
@echo "# link $@"
@$(CC) $(TOOLFLAGS) -DKONMODEL_WRITER -o $@ tools/konmodel.c $(KONDIR)/konmodel.c $(KONDIR)/konassets.c $(KONDIR)/konpack.c $(SRCDIR)/impl/konsofren.c $(OBJDIR)/cgltf.o -lm
pack: $(PACKER)
@find $(ASSETDIR) -type f | sort > $(OBJDIR)/assets.lst
$(PACKER) -c $(PACKFILE) $(PACKFLAGS) -b $(ASSETDIR) -l $(OBJDIR)/assets.lst
run: $(BIN)
./$(BIN)
clean:
rm -f $(OBJDIR)/*.o $(BIN) $(PACKER) $(MODELER) $(EXAMPLEBINS) $(PACKFILE) $(OBJDIR)/assets.lst
.PHONY: all run clean tools pack examples
|