Makefile
changeset 8 8d0f25ef038e
parent 6 85718bc3ff47
child 10 d07309450285
equal deleted inserted replaced
7:e4f1a551d45c 8:8d0f25ef038e
       
     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