1 |
1 DEPS = sqlite3 |
2 CFLAGS = -O2 |
2 DEPS_DEBUG = sqlite3 libprofiler |
3 CFLAGS_DEBUG = -Wall -L /opt/local/lib -I /opt/local/include -DDEBUG -DPROG='"volta (debugmode)"' |
3 CFLAGS = $(shell pkg-config --cflags-only-I --libs-only-L $(DEPS)) -O2 |
4 LIBS = -lsqlite3 |
4 LIBS = $(shell pkg-config --libs-only-l $(DEPS)) |
5 LIBS_DEBUG = -lprofiler # requires proftools |
|
6 #OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) parser.o |
5 #OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) parser.o |
7 OBJS = accept_loop.o db.o main.o parser.o util.o |
6 OBJS = accept_loop.o db.o main.o parser.o util.o |
|
7 RAGEL_FLAGS = -LCe -G2 |
8 |
8 |
9 ######################################################################## |
9 ######################################################################## |
10 ### P R O D U C T I O N |
10 ### P R O D U C T I O N |
11 ######################################################################## |
11 ######################################################################## |
12 |
12 |
15 strip $@ |
15 strip $@ |
16 |
16 |
17 $(OBJS): volta.h |
17 $(OBJS): volta.h |
18 |
18 |
19 # don't actually depend on parser.rl, so distributions don't require ragel |
19 # don't actually depend on parser.rl, so distributions don't require ragel |
20 # ragel -C -T0 parser.rl -o $@ |
|
21 parser.c: |
20 parser.c: |
22 ragel -L -C -e -G2 parser.rl -o $@ |
21 ragel $(RAGEL_FLAGS) -s parser.rl -o $@ |
23 |
22 |
24 |
23 |
25 ######################################################################## |
24 ######################################################################## |
26 ### D E B U G |
25 ### D E B U G |
27 ######################################################################## |
26 ######################################################################## |
28 |
27 |
29 debug: CFLAGS += $(CFLAGS_DEBUG) |
28 debug: CFLAGS = -ggdb -Wall -DDEBUG -DPROG='"volta (debugmode)"'\ |
30 debug: LIBS += $(LIBS_DEBUG) |
29 $(shell pkg-config --cflags-only-I --libs-only-L $(DEPS_DEBUG)) |
31 debug: volta-debug parser_graph.xml parser_graph.png parser_graph.dot |
30 debug: LIBS = $(shell pkg-config --libs-only-l $(DEPS_DEBUG)) |
|
31 debug: volta-debug parser_graph.xml parser_graph.pdf parser_graph.dot |
32 |
32 |
33 volta-debug: $(OBJS) |
33 volta-debug: $(OBJS) |
34 $(CC) $(CFLAGS) $(LIBS) -o volta $(OBJS) |
34 $(CC) $(CFLAGS) $(LIBS) -o volta $(OBJS) |
35 |
35 |
36 parser_graph.xml parser_graph.png parser_graph.dot: parser.rl |
36 parser_graph.xml parser_graph.pdf parser_graph.dot: parser.rl |
37 ragel -Vp parser.rl > parser_graph.dot |
37 # ragel -Vp parser.rl > parser_graph.dot |
38 ragel -C -e -G2 -x parser.rl -o parser_graph.xml |
38 # ragel $(RAGEL_FLAGS) -x parser.rl -o parser_graph.xml |
39 dot -Tpng parser_graph.dot > parser_graph.png |
39 # dot -Tpdf parser_graph.dot > parser_graph.pdf |
40 |
40 |
41 # export CPUPROFILE="cpu.prof" before running volta for cpu profiling |
41 # export CPUPROFILE="cpu.prof" before running volta for cpu profiling |
42 # export CPUPROFILE_FREQUENCY=100 (default) |
42 # export CPUPROFILE_FREQUENCY=100 (default) |
43 profile: |
43 profile: |
44 pprof --dot ./volta $(CPUPROFILE) | dot -Tpng > $(CPUPROFILE).png |
44 pprof --dot ./volta $(CPUPROFILE) | dot -Tpng > $(CPUPROFILE).png |