blob: 97cd6142627fba5d83644e9b8ca205f971c007c4 (
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
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)
MZMAP = $(OBJDIR)/mzmap$(EXE)
MZDATA = $(OBJDIR)/mzdata$(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 $@
# only built when ext/stb_vorbis.c exists, build.sh checks
$(OBJDIR)/stb_vorbis.o: $(EXTDIR)/stb_vorbis.c
$(COMPILEEXT) $(EXTDIR)/stb_vorbis.c -o $@
tools: $(PACKER) $(MODELER) $(MZSURVEY) $(MZSCRIPT) $(KONS2C) $(MZMAP) $(MZDATA)
# 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
$(MZMAP): tools/mzmap.c $(KONDIR)/konjson.h
@mkdir -p $(OBJDIR)
@echo "# link $@"
@$(CC) $(TOOLFLAGS) -o $@ tools/mzmap.c
# the database converter checks the damage formulas with the battle module's own parser
$(MZDATA): tools/mzdata.c $(KONDIR)/konjson.h $(KONDIR)/konrmdata.h $(KONDIR)/konbattle.c $(KONDIR)/konbattle.h
@mkdir -p $(OBJDIR)
@echo "# link $@"
@$(CC) $(TOOLFLAGS) -o $@ tools/mzdata.c $(KONDIR)/konbattle.c -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) $(MZSURVEY) $(MZSCRIPT) $(KONS2C) $(MZMAP) $(MZDATA) $(EXAMPLEBINS) $(PACKFILE) $(OBJDIR)/assets.lst
.PHONY: all run clean tools pack examples
|