updated Makefiles
[cparser] / Makefile
1 -include config.mak
2
3 GOAL = $(BUILDDIR)/cparser
4
5 BUILDDIR ?= build
6
7 FIRM_CFLAGS ?= `pkg-config --cflags firm`
8 FIRM_LIBS   ?= `pkg-config --libs firm`
9
10 CPPFLAGS  = -DHAVE_CONFIG_H -DFIRM_BACKEND
11 CPPFLAGS += -I.
12 CPPFLAGS += $(FIRM_CFLAGS)
13
14 CFLAGS += -Wall -W -Wstrict-prototypes -Wmissing-prototypes -Werror -std=c99 -pedantic
15 CFLAGS += -O0 -g3
16 ICC_CFLAGS = -O0 -g3 -std=c99 -Wall -Werror
17 #CFLAGS += -O3 -march=pentium4 -fomit-frame-pointer -DNDEBUG
18
19 LFLAGS = $(FIRM_LIBS)
20
21 SOURCES := \
22         adt/hashset.c \
23         adt/strset.c \
24         adt/xmalloc.c \
25         ast.c \
26         ast2firm.c \
27         lexer.c \
28         main.c \
29         parser.c \
30         symbol_table.c \
31         token.c \
32         type.c \
33         type_hash.c \
34         write_fluffy.c
35
36 OBJECTS = $(SOURCES:%.c=build/%.o)
37
38 SPLINTS = $(addsuffix .splint, $(SOURCES))
39
40 Q = @
41
42 .PHONY : all clean dirs
43
44 all: $(GOAL)
45
46 ifeq ($(findstring $(MAKECMDGOALS), clean depend),)
47 -include .depend
48 endif
49
50 .depend: $(SOURCES)
51         @echo "===> DEPEND"
52         @rm -f $@ && touch $@ && makedepend -p "$@ build/" -Y -f $@ -- $(CPPFLAGS) -- $(SOURCES) 2> /dev/null && rm $@.bak
53
54 $(GOAL): build/adt $(OBJECTS)
55         @echo "===> LD $@"
56         $(Q)$(CC) $(OBJECTS) $(LFLAGS) -o $(GOAL)
57
58 splint: $(SPLINTS)
59
60 %.c.splint: %.c
61         @echo '===> SPLINT $<'
62         $(Q)splint $(CPPFLAGS) $<
63
64 build/adt:
65         @echo "===> MKDIR $@"
66         $(Q)mkdir -p $@
67
68 build/%.o: %.c
69         @echo '===> CC $<'
70 #       $(Q)icc $(CPPFLAGS) $(ICC_CFLAGS) -c $< -o $@
71         $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
72
73 clean:
74         @echo '===> CLEAN'
75         $(Q)rm -rf build $(GOAL) .depend