]> git.itanic.dy.fi Git - sdl-planets/blob - Makefile
Makefile: Better output beautifier
[sdl-planets] / Makefile
1 SDL_CONFIG=$(shell sdl-config --cflags)
2 SDL_LIBS=$(shell sdl-config --libs)
3 CFLAGS=$(SDL_CONFIG) -Wall -O2 -g
4
5 LIBS=$(SDL_LIBS) -lm -lrt
6
7 CC=gcc
8 SPARSE=sparse
9 CHECKPATCH=/usr/src/linux/scripts/checkpatch.pl
10
11 PLANET_OBJS=main.o random.o vector.o planet.o camera.o quadtree.o
12 PLANET_DEBUG_OBJS= $(patsubst %.o,%-debug.o,$(PLANET_OBJS))
13 ALL_OBJS = $(PLANET_OBJS) $(PLANET_DEBUG_OBJS)
14 ALL_DEBS = $(patsubst %.o,.%.o.d,$(ALL_OBJS))
15
16 ifeq ($(V),1)
17         Q               =
18         QUIET_CC        =
19         QUIET_LINK      =
20 else
21         Q               = @
22         QUIET_CC        = @echo "       CC " $@;
23         QUIET_LINK      = @echo "     LINK " $@;
24 endif
25
26 sdl-planet: $(PLANET_OBJS)
27         $(QUIET_LINK)$(CC) $(LIBS) -o $@ $(PLANET_OBJS)
28
29 debug-planet: $(PLANET_DEBUG_OBJS)
30         $(QUIET_LINK)$(CC) $(LIBS) -o $@ $(PLANET_DEBUG_OBJS) -DDEBUG
31
32 .c.o:
33         $(QUIET_CC)$(CC) -MMD -MF .$@.d $(CFLAGS) -c $< -o $@
34         $(Q)cp .$@.d .$@.P; \
35             sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
36                 -e '/^$$/ d' -e 's/$$/ :/' < .$@.d >> .$@.P; \
37             mv .$@.P .$@.d
38
39 ifeq ($(C),1)
40         sparse $(CFLAGS) $<
41 endif
42 ifeq ($(C),2)
43         $(CHECKPATCH) -f $<
44 endif
45
46 %-debug.o: %.c
47         $(QUIET_CC)$(CC) -MMD -MF .$@.d $(CFLAGS) -DDEBUG -O0 -c $< -o $@
48         $(Q)cp .$@.d .$@.P; \
49             sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
50                 -e '/^$$/ d' -e 's/$$/ :/' < .$@.d >> .$@.P; \
51             mv .$@.P .$@.d
52
53 TAGS:
54         @echo "     TAGS"
55         $(Q)etags *.[ch]
56
57 clean:
58         rm -rfv $(ALL_OBJS) *~ sdl-planet TAGS $(ALL_DEBS) \
59                 debug-planet
60
61 .PHONY: all clean TAGS
62
63 -include $(ALL_DEBS)