summaryrefslogtreecommitdiff
path: root/Makefile
blob: 33c0c01e14c2f921171cf9aa47baaeeab4a36319 (plain) (blame)
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
compiler = gcc
tool_compiler = gcc
linker = gcc
cflags = -I./ -g -DDEBUG -Dplat_x11 -Dplat_x86 \
-Dplat_posix -Dallocation_default_alignment=8 \
-Wall -Wextra -pedantic -std=c90
lflags = -lX11 -lXi
int_dir = intermediate
data_dir = data
target = 3de
convmesh = convmesh
packassets = packassets
pack = pack

sources = \
	3de.c \
	asset.c \
	maths.c \
	memory.c \
	plat.c \
	player.c \
	rect.c \
	render.c \
	standard.c

objects = $(sources:%.c=%.o)

mesh_sources = \
	$(int_dir)/monkey.obj \
	$(int_dir)/cube.obj

meshes = $(mesh_sources:$(int_dir)/%.obj=$(data_dir)/%.msh)
assets = $(meshes)

all: $(target) $(pack)

$(objects): %.o : %.c
	$(compiler) -MMD -MF $(basename $@).d $(cflags) -o $@ -c $<

$(target): $(objects)
	$(linker) $(objects) -o $@ $(lflags)

$(meshes): $(data_dir)/%.msh : $(int_dir)/%.obj | $(convmesh) $(data_dir)
	./$(convmesh) $< $@

$(convassets): convassets.c
	$(tool_compiler) $(cflags) -o $@ $<

$(convmesh): convmesh.c
	$(tool_compiler) $(cflags) -o $@ $<

$(packassets): packassets.c
	$(tool_compiler) packassets.c $(cflags) -o $@

$(pack): $(packassets) $(meshes)
	./$(packassets) \
		$(data_dir) \
		$(notdir $(meshes))

$(data_dir):
	mkdir -p $(data_dir)

clean:
	rm -f $(packassets)
	rm -f $(convmesh)
	rm -rf data
	rm *.d
	rm *.o
	rm $(target)

-include $(sources:%.c=%.d)