blob: d8c27452a6c11c0f62e881b78ca3ec583d14d583 (
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
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)
MZSURVEY = $(OBJDIR)/mzsurvey$(EXE)
MZSCRIPT = $(OBJDIR)/mzscript$(EXE)
KONS2C = $(OBJDIR)/kons2c$(EXE)
EXAMPLES = modelview sound ui platform dialog script corridor hills sectorview
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)/konsector.o: $(SRCDIR)/impl/konsector.c $(KONDIR)/konsector.h $(KONDIR)/konsofren.h $(KONDIR)/konmath.h
$(COMPILE) $(SRCDIR)/impl/konsector.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) $(MZSURVEY) $(MZSCRIPT) $(KONS2C)
# 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) -DKONSOFREN_3D -DKONMODEL_WRITER -o $@ tools/konmodel.c $(KONDIR)/konmodel.c $(KONDIR)/konassets.c $(KONDIR)/konpack.c $(SRCDIR)/impl/konsofren.c $(OBJDIR)/cgltf.o -lm
# converters. they only read other programs' data, the engine is not linked in
$(MZSURVEY): tools/mzsurvey.c $(KONDIR)/konjson.h
@mkdir -p $(OBJDIR)
@echo "# link $@"
@$(CC) $(TOOLFLAGS) -o $@ tools/mzsurvey.c
$(MZSCRIPT): tools/mzscript.c tools/konscriptc.h $(KONDIR)/konjson.h $(KONDIR)/konscript.c $(KONDIR)/konscript.h
@mkdir -p $(OBJDIR)
@echo "# link $@"
@$(CC) $(TOOLFLAGS) -Itools -o $@ tools/mzscript.c $(KONDIR)/konscript.c
$(KONS2C): tools/kons2c.c tools/konscriptc.h $(KONDIR)/konscript.c $(KONDIR)/konscript.h
@mkdir -p $(OBJDIR)
@echo "# link $@"
@$(CC) $(TOOLFLAGS) -Itools -o $@ tools/kons2c.c $(KONDIR)/konscript.c
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) $(MZSURVEY) $(MZSCRIPT) $(KONS2C) $(EXAMPLEBINS) $(PACKFILE) $(OBJDIR)/assets.lst
.PHONY: all run clean tools pack examples
|