1 |
1 |
2 CFLAGS = -O2 |
2 CFLAGS = -O2 |
|
3 CFLAGS_DEBUG = -Wall -L /usr/lib -L /opt/local/lib -DDEBUG -DPROG='"volta (debugmode)"' |
3 LIBS = -lsqlite3 |
4 LIBS = -lsqlite3 |
|
5 LIBS_DEBUG = -lprofiler # requires proftools |
4 #OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) parser.o |
6 #OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) parser.o |
5 OBJS = volta.o parser.o |
7 OBJS = accept_loop.o database.o main.o parser.o util.o |
6 |
8 |
7 ######################################################################## |
9 ######################################################################## |
8 ### M A I N |
10 ### P R O D U C T I O N |
9 ######################################################################## |
11 ######################################################################## |
10 |
12 |
11 volta: $(OBJS) |
13 volta: $(OBJS) |
12 $(CC) $(CFLAGS) $(LIBS) -o $@ $(OBJS) |
14 $(CC) $(CFLAGS) $(LIBS) -o $@ $(OBJS) |
13 strip $@ |
15 strip $@ |
14 |
16 |
15 $(OBJS): volta.h |
17 $(OBJS): volta.h |
16 |
18 |
17 parser.c: parser.rl |
19 # don't actually depend on parser.rl, so distributions don't require ragel |
|
20 # ragel -C -T0 parser.rl -o $@ |
|
21 parser.c: |
18 ragel -L -C -e -G2 parser.rl -o $@ |
22 ragel -L -C -e -G2 parser.rl -o $@ |
19 |
23 |
20 |
24 |
21 ######################################################################## |
25 ######################################################################## |
22 ### D E B U G |
26 ### D E B U G |
23 ######################################################################## |
27 ######################################################################## |
24 |
28 |
25 debug: CFLAGS = -Wall -DDEBUG -DPROG='"volta (debugmode)"' |
29 debug: CFLAGS += $(CFLAGS_DEBUG) |
26 debug: volta parser_state.xml parser_state.png parser_state.dot |
30 debug: LIBS += $(LIBS_DEBUG) |
|
31 debug: volta-debug parser_graph.xml parser_graph.png parser_graph.dot |
27 |
32 |
28 parser_state.xml parser_state.png parser_state.dot: parser.rl |
33 volta-debug: $(OBJS) |
29 ragel -Vp parser.rl > parser_state.dot |
34 $(CC) $(CFLAGS) $(LIBS) -o volta $(OBJS) |
30 ragel -C -e -G2 -x parser.rl -o parser_state.xml |
35 |
31 dot -Tpng parser_state.dot > parser_state.png |
36 parser_graph.xml parser_graph.png parser_graph.dot: parser.rl |
|
37 ragel -Vp parser.rl > parser_graph.dot |
|
38 ragel -C -e -G2 -x parser.rl -o parser_graph.xml |
|
39 dot -Tpng parser_graph.dot > parser_graph.png |
|
40 |
|
41 # export CPUPROFILE="cpu.prof" before running volta for cpu profiling |
|
42 # export CPUPROFILE_FREQUENCY=100 (default) |
|
43 profile: |
|
44 pprof --dot ./volta $(CPUPROFILE) | dot -Tpng > $(CPUPROFILE).png |
|
45 pprof --text ./volta $(CPUPROFILE) |
32 |
46 |
33 |
47 |
34 ######################################################################## |
48 ######################################################################## |
35 ### U T I L |
49 ### U T I L |
36 ######################################################################## |
50 ######################################################################## |
37 |
51 |
38 .PHONY : clean |
52 .PHONY : clean cleanall |
|
53 |
|
54 cleanall: clean |
|
55 rm -f parser.c |
|
56 |
39 clean: |
57 clean: |
40 -rm -f volta volta_debug* parser.c parser_state.* *.o |
58 -rm -f volta volta_debug* parser_graph.* *.o *.prof* |
41 |
59 |