Older GCCs do not know -Wextra. Only use -W.
[cparser] / Makefile
1 GOAL = cparser
2
3 CFLAGS += -Wall -W -Werror -O0 -g3 -std=c99 -pedantic
4 CFLAGS += -DHAVE_CONFIG_H
5 CFLAGS += -I .
6
7 LFLAGS = -g3
8
9 SOURCES := \
10         adt/array.c \
11         adt/hashset.c \
12         adt/strset.c \
13         adt/xmalloc.c \
14         ast.c \
15         lexer.c \
16         main.c \
17         parser.c \
18         symbol_table.c \
19         token.c \
20         type.c \
21         type_hash.c \
22         write_fluffy.c
23
24 OBJECTS = $(SOURCES:%.c=build/%.o)
25
26 Q = @
27
28 .PHONY : all clean dirs
29
30 all: $(GOAL)
31
32 ifeq ($(findstring $(MAKECMDGOALS), clean depend),)
33 -include .depend
34 endif
35
36 .depend: $(SOURCES)
37         @echo "===> DEPEND"
38         @rm -f $@ && touch $@ && makedepend -p "$@ build/" -Y -f $@ -- $(CFLAGS) -- $(SOURCES) 2> /dev/null && rm $@.bak
39
40 $(GOAL): build/adt $(OBJECTS)
41         @echo "===> LD $@"
42         $(Q)$(CC) -rdynamic $(OBJECTS) $(LFLAGS) -o $(GOAL)
43
44 build/adt:
45         @echo "===> MKDIR $@"
46         $(Q)mkdir -p $@
47
48 build/%.o: %.c
49         @echo '===> CC $<'
50         $(Q)$(CC) $(CFLAGS) -c $< -o $@
51
52 clean:
53         @echo '===> CLEAN'
54         $(Q)rm -rf build $(GOAL) .depend