-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
93 lines (67 loc) · 2.39 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
CXX_MODULES = Codebook Intset Session MemPool \
Command Entity StrBuffer Class Ast Strref \
AttrSpec Query Attr Validator Parser
CXX_PURES = Array
CXX_HEADERS = $(foreach i,$(CXX_MODULES) $(CXX_PURES),src/mv$(i).h)
CORE_HEADERS = src/multiverse.h src/error.h $(CXX_HEADERS)
TEST_HEADERS = test/test.h
CORE_MODULES = common local error
TEST_MODULES = tokenize astparse cmdparse misc matcher data \
printer validator session parser
DEMO_MODULES = demo
COPTS = -Wall -g
TESTOPTS = -Wall -g -DDEBUG
PERFOPTS = -Wall
CXX_OBJS = $(foreach i,$(CXX_MODULES),build/mvxx_$(i).o)
CXXOPT_OBJS = $(foreach i,$(CXX_MODULES),build/opxx_$(i).o)
CORE_OBJS = $(foreach i,$(CORE_MODULES),build/mv_$(i).o) $(CXX_OBJS)
OPT_OBJS = $(foreach i,$(CORE_MODULES),build/op_$(i).o) $(CXXOPT_OBJS)
DEMO_OBJS = $(foreach i,$(DEMO_MODULES),build/dm_$(i).o)
TEST_SRCS = $(foreach i,$(TEST_MODULES),build/$i.c)
TEST_OBJS = $(foreach i,$(TEST_MODULES) suite,build/ts_$(i).o)
.PHONY : all
all : selftest
#all : demo test
.PHONY : selftest
selftest : testsuite
./testsuite > /dev/null
testsuite : $(CORE_OBJS) $(TEST_OBJS) $(HEADERS)
g++ $(COPTS) $(CORE_OBJS) $(TEST_OBJS) -o testsuite
.PHONY : stylecheck
stylecheck :
find src test -name '*.c' | xargs ./stylus.pl | sort -nr
.PHONY : memtest
memtest : testsuite
valgrind --leak-check=full --show-reachable=yes ./testsuite
demo : $(CORE_OBJS) $(DEMO_OBJS) $(HEADERS)
g++ $(COPTS) $(CORE_OBJS) $(DEMO_OBJS) -o demo
build :
mkdir -p build
build/dm_%.o : src/%.c $(CORE_HEADERS)
g++ $(COPTS) -c $< -o $@
build/ts_%.o : build/%.c $(CORE_HEADERS) $(TEST_HEADERS)
g++ $(COPTS) -I src -I test -c $< -o $@
build/suite.c : $(TEST_SRCS)
./gensuite.pl $@ $(TEST_SRCS)
build/%.c : test/%.c
./gentest.pl $< $@
build/mv_%.o : src/mv_%.c $(CORE_HEADERS) build
g++ $(COPTS) -c $< -o $@
build/op_%.o : src/mv_%.c $(CORE_HEADERS)
g++ $(PERFOPTS) -c $< -o $@
build/mvxx_%.o : src/mv%.cxx $(CORE_HEADERS)
g++ $(TESTOPTS) -c $< -o $@
build/opxx_%.o : src/mv%.cxx $(CORE_HEADERS)
g++ $(PERFOPTS) -c $< -o $@
build/perftest.o : test/perftest.c $(CORE_HEADERS) $(TEST_HEADERS)
g++ $(PERFOPTS) -I src -I test -c $< -o $@
perftest : $(OPT_OBJS) $(HEADERS) build/perftest.o
g++ $(PERFOPTS) $(OPT_OBJS) build/perftest.o -o perftest
.PHONY : clean
clean :
rm -f build/*.o
rm -f build/*.c
rm -r build
rm -f testsute
rm -f demo
rm -f perftest