|
1 UNAME := $(shell uname) |
1 DEPS = sqlite3 |
2 DEPS = sqlite3 |
2 DEPS_DEBUG = sqlite3 libprofiler |
3 DEPS_DEBUG = sqlite3 libprofiler |
3 CFLAGS = $(shell pkg-config --cflags-only-I --libs-only-L $(DEPS)) -O2 |
4 CFLAGS = $(shell pkg-config --cflags-only-I --libs-only-L $(DEPS)) -O2 |
4 LIBS = $(shell pkg-config --libs-only-l $(DEPS)) |
5 LIBS = $(shell pkg-config --libs-only-l $(DEPS)) |
5 #OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) parser.o |
6 #OBJS = $(patsubst %.c,%.o,$(wildcard *.c)) parser.o |
6 OBJS = accept_loop.o db.o main.o parser.o util.o |
7 OBJS = accept_loop.o db.o main.o parser.o process.o util.o |
7 RAGEL_FLAGS = -LCe -G2 |
8 RAGEL_FLAGS = -LCe -G2 |
|
9 |
|
10 .PHONY : parsegraph profile clean cleanall release |
8 |
11 |
9 ######################################################################## |
12 ######################################################################## |
10 ### P R O D U C T I O N |
13 ### P R O D U C T I O N |
11 ######################################################################## |
14 ######################################################################## |
12 |
15 |
23 |
26 |
24 ######################################################################## |
27 ######################################################################## |
25 ### D E B U G |
28 ### D E B U G |
26 ######################################################################## |
29 ######################################################################## |
27 |
30 |
|
31 # proftools doesn't currently register a .pc file on Ubuntu, hence these |
|
32 # Makefile gymnastics |
|
33 ifeq ($(UNAME), Linux) |
|
34 debug: CFLAGS = -ggdb -Wall -DDEBUG -DPROG='"volta (debugmode)"' |
|
35 debug: LIBS = -lsqlite3 -lprofiler |
|
36 else |
28 debug: CFLAGS = -ggdb -Wall -DDEBUG -DPROG='"volta (debugmode)"'\ |
37 debug: CFLAGS = -ggdb -Wall -DDEBUG -DPROG='"volta (debugmode)"'\ |
29 $(shell pkg-config --cflags-only-I --libs-only-L $(DEPS_DEBUG)) |
38 $(shell pkg-config --cflags-only-I --libs-only-L $(DEPS_DEBUG)) |
30 debug: LIBS = $(shell pkg-config --libs-only-l $(DEPS_DEBUG)) |
39 debug: LIBS = $(shell pkg-config --libs-only-l $(DEPS_DEBUG)) |
31 debug: volta-debug parser_graph.xml parser_graph.pdf parser_graph.dot |
40 endif |
32 |
41 |
33 volta-debug: $(OBJS) |
42 debug: RAGEL_FLAGS = -Ce -G2 |
|
43 debug: $(OBJS) |
|
44 ctags *.h *.c |
34 $(CC) $(CFLAGS) $(LIBS) -o volta $(OBJS) |
45 $(CC) $(CFLAGS) $(LIBS) -o volta $(OBJS) |
35 |
46 |
|
47 parsegraph: parser_graph.xml parser_graph.pdf parser_graph.dot |
36 parser_graph.xml parser_graph.pdf parser_graph.dot: parser.rl |
48 parser_graph.xml parser_graph.pdf parser_graph.dot: parser.rl |
37 # ragel -Vp parser.rl > parser_graph.dot |
49 ragel -Vp parser.rl > parser_graph.dot |
38 # ragel $(RAGEL_FLAGS) -x parser.rl -o parser_graph.xml |
50 ragel $(RAGEL_FLAGS) -x parser.rl -o parser_graph.xml |
39 # dot -Tpdf parser_graph.dot > parser_graph.pdf |
51 dot -Tpdf parser_graph.dot > parser_graph.pdf |
40 |
52 |
41 # export CPUPROFILE="cpu.prof" before running volta for cpu profiling |
53 # export CPUPROFILE="cpu.prof" before running volta for cpu profiling |
42 # export CPUPROFILE_FREQUENCY=100 (default) |
54 # export CPUPROFILE_FREQUENCY=100 (default) |
43 profile: |
55 profile: |
44 pprof --dot ./volta $(CPUPROFILE) | dot -Tpng > $(CPUPROFILE).png |
56 pprof --dot ./volta $(CPUPROFILE) | dot -Tpng > $(CPUPROFILE).png |
47 |
59 |
48 ######################################################################## |
60 ######################################################################## |
49 ### U T I L |
61 ### U T I L |
50 ######################################################################## |
62 ######################################################################## |
51 |
63 |
52 .PHONY : clean cleanall |
|
53 |
|
54 cleanall: clean |
64 cleanall: clean |
55 rm -f parser.c volta.db |
65 rm -f parser.c volta.db ChangeLog tags |
56 |
66 |
57 clean: |
67 clean: |
58 -rm -f volta volta_debug* parser_graph.* *.o *.prof* |
68 -rm -f volta volta_debug* parser_graph.* *.o *.prof* |
59 |
69 |
|
70 release: VERSION = $(shell hg id -t | awk '{ print $$1 }') |
|
71 release: cleanall parser.c |
|
72 hg log --style changelog > ChangeLog |
|
73 tar -C .. --exclude misc --exclude .\* -s '/^volta/volta-$(VERSION)/' -czvf /tmp/volta-$(VERSION).tgz volta |
|
74 mv /tmp/volta-$(VERSION).tgz . |
|
75 |