a3961a0c55b4246479f31e840323b2bea23e96a1
[cparser] / Makefile
1 GOAL = cparser
2
3 #FIRM_CFLAGS = `pkg-config --cflags libfirm`
4 #FIRM_LIBS = `pkg-config --libs libfirm`
5 FIRM_CFLAGS = -I$(HOME)/projects/firm/libfirm/include -I$(HOME)/projects/firm/libcore
6 FIRM_LIBS = -L$(HOME)/projects/firm/build/i686-pc-linux-gnu/debug -lfirm -llpp -lcore -lm
7
8 CFLAGS += -Wall -W -Werror -O0 -g3 -std=c99
9 CFLAGS += -DHAVE_CONFIG_H
10 CFLAGS += -I .
11 CFLAGS += $(FIRM_CFLAGS)
12
13 LFLAGS = $(FIRM_LIBS) -llpp -ldl --export-dynamic
14
15 SOURCES := \
16         adt/hashset.c \
17         adt/pset.c \
18         adt/strset.c \
19         adt/xmalloc.c \
20         ast.c \
21         lexer.c \
22         main.c \
23         parser.c \
24         symbol_table.c \
25         token.c \
26         type.c
27
28 OBJECTS = $(SOURCES:%.c=build/%.o)
29
30 Q = @
31
32 .PHONY : all clean dirs
33
34 all: $(GOAL)
35
36 ifeq ($(findstring $(MAKECMDGOALS), clean depend),)
37 -include .depend
38 endif
39
40 .depend: $(SOURCES)
41         @echo "===> DEPEND"
42         @rm -f $@ && touch $@ && makedepend -p "$@ build/" -Y -f $@ -- $(CFLAGS) -- $(SOURCES) 2> /dev/null && rm $@.bak
43
44 $(GOAL): build/adt $(OBJECTS)
45         @echo "===> LD $@"
46         $(Q)$(CC) -rdynamic $(OBJECTS) $(LFLAGS) -o $(GOAL)
47
48 build/adt:
49         @echo "===> MKDIR $@"
50         $(Q)mkdir -p $@
51
52 build/%.o: %.c
53         @echo '===> CC $<'
54         $(Q)$(CC) $(CFLAGS) -c $< -o $@
55
56 clean:
57         @echo '===> CLEAN'
58         $(Q)rm -rf build $(GOAL) .depend