aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 7be7f7829f9f532028d86ba982699b5f0540c552 (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
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
ifndef config
  config=debug_gnu64
endif

.PHONY: all clean

compiler = gcc
tool_compiler = gcc
linker = gcc
includes = -I./
cflags = $(includes) $(conf_cflags) \
  -Wall -Wextra -pedantic -std=c90
lflags = $(libs) $(conf_lflags)
target = 1bitjam
int_dir = intermediate
data_dir = data
convimg = convimg
convanim = convanim
packassets = packassets
pack = pack.h

ifeq ($(config), debug_gnu64)
  compiler = gcc
  tool_compiler = gcc
  linker = gcc
  conf_cflags = -DDEBUG -Dplat_x11 -Dplat_x86 \
    -Dplat_posix -Dallocation_default_alignment=8 \
    -Dplat_pulse \
    -g
  libs = -lX11 -lXi -lpulse -lpulse-simple -lpthread -lm
endif

ifeq ($(config), release_gnu64)
  compiler = gcc
  tool_compiler = gcc
  linker = gcc
  conf_cflags = -DNDEBUG -Dplat_x11 -Dplat_x86 \
    -Dplat_posix -Dallocation_default_alignment=8 \
    -Dplat_pulse \
    -s -O3 -m64
  conf_lflags = -m64 -s
  libs = -lX11 -lXi -lpulse -lpulse-simple -lpthread -lm
endif

sources = \
	1bitjam.c \
	animation.c \
	asset.c \
	map.c \
	maths.c \
	memory.c \
	particle.c \
	physics.c \
	plat.c \
	player.c \
	rect.c \
	render.c \
	world.c \

image_sources = \
	$(int_dir)/arms.bmp \
	$(int_dir)/guy.bmp \
	$(int_dir)/map.bmp \
	$(int_dir)/mask.bmp \

anim_sources = \
	$(int_dir)/guy_fall_left.anm \
	$(int_dir)/guy_fall_right.anm \
	$(int_dir)/guy_idle_left.anm \
	$(int_dir)/guy_idle_right.anm \
	$(int_dir)/guy_jump_left.anm \
	$(int_dir)/guy_jump_right.anm \
	$(int_dir)/guy_run_left.anm \
	$(int_dir)/guy_run_right.anm \
	$(int_dir)/guy_slash_left.anm \
	$(int_dir)/guy_slash_right.anm \
	$(int_dir)/slash_right.anm \
	$(int_dir)/slash_left.anm \

objects    = $(sources:%.c=%.o)
images     = $(image_sources:$(int_dir)/%.bmp=$(data_dir)/%.img)
animations = $(anim_sources:$(int_dir)/%.anm=$(data_dir)/%.anm)

all: $(target) $(pack)

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

$(images): $(data_dir)/%.img : $(int_dir)/%.bmp | $(convimg) $(data_dir)
	./$(convimg) $< $@

$(animations): $(data_dir)/%.anm : $(int_dir)/%.anm | $(convanim) $(data_dir)
	./$(convanim) $< $@

$(pack): $(packassets) $(images) $(animations)
	./$(packassets) \
		$(pack) \
		$(data_dir) \
		$(notdir $(animations)) \
		$(notdir $(images))

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

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

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

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

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

clean:
	rm *.d
	rm *.o
	rm $(pack)
	rm -r $(data_dir)
	rm $(target)
	rm $(convimg)
	rm $(convanim)

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