Makefile
changeset 2 8c88756f81b0
parent 1 823d42546cea
child 4 5701b7859a31
equal deleted inserted replaced
1:823d42546cea 2:8c88756f81b0
     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