more work on parser
[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 -Wextra -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 -g3
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         type_hash.c
28
29 OBJECTS = $(SOURCES:%.c=build/%.o)
30
31 Q = @
32
33 .PHONY : all clean dirs
34
35 all: $(GOAL)
36
37 ifeq ($(findstring $(MAKECMDGOALS), clean depend),)
38 -include .depend
39 endif
40
41 .depend: $(SOURCES)
42         @echo "===> DEPEND"
43         @rm -f $@ && touch $@ && makedepend -p "$@ build/" -Y -f $@ -- $(CFLAGS) -- $(SOURCES) 2> /dev/null && rm $@.bak
44
45 $(GOAL): build/adt $(OBJECTS)
46         @echo "===> LD $@"
47         $(Q)$(CC) -rdynamic $(OBJECTS) $(LFLAGS) -o $(GOAL)
48
49 build/adt:
50         @echo "===> MKDIR $@"
51         $(Q)mkdir -p $@
52
53 build/%.o: %.c
54         @echo '===> CC $<'
55         $(Q)$(CC) $(CFLAGS) -c $< -o $@
56
57 clean:
58         @echo '===> CLEAN'
59         $(Q)rm -rf build $(GOAL) .depend