-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
57 lines (53 loc) · 1.99 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
CXX=g++
OPTS=-O0 -fexceptions -g -coverage -std=c++11
OPTIMIZE=-O4
LD=-L/usr/local/lib -lboost_program_options -lpthread -lboost_thread -lgcov
OPTIMIZE_LD=-L/usr/local/lib -lboost_program_options -lpthread -lboost_thread -lboost_date_time
TEST_LD= -lpthread $(LD)
GTEST_INC= -I$(GTEST_DIR)/include -I$(GTEST_DIR)
GTEST_DIR=/opt/google/gtest-1.5.0
GMOCK_DIR=/opt/google/gmock-1.5.0
WARNS= -W -Wall -Wextra -Wformat=2 -Wstrict-aliasing=4 -Wcast-qual -Wcast-align \
-Wwrite-strings -Wfloat-equal -Wpointer-arith -Wswitch-enum
NOTIFY=&& notify-send Test success! -i ~/themes/ok_icon.png || notify-send Test failed... -i ~/themes/ng_icon.png
SRCS=$(HEADS) $(BODYS)
target:test
test:sl.o gtest_main.a
$(CXX) -o $@ $^ $(LD) $(OPTS) $(WARNS)
./test $(NOTIFY)
sl.o:sl.cc sl.hpp node.hpp
$(CXX) -c -o $@ sl.cc $(OPTS) $(WARNS) -I$(GTEST_DIR)/include -I$(GTEST_DIR)
bench:bench.o
$(CXX) -o $@ $^ $(LD) $(OPTS) $(WARNS)
./bench $(NOTIFY)
gcov bench.gcda > /dev/null
bench.o:bench.cc sl.hpp node.hpp
$(CXX) -c -o $@ bench.cc $(OPTS) $(WARNS)
bench2:bench2.o
$(CXX) -o $@ $^ $(OPTIMIZE_LD) $(OPTIMIZE) $(WARNS) -DNDEBUG -g
./bench2 $(NOTIFY)
bench2.o:bench.cc sl.hpp node.hpp
$(CXX) -c -o $@ bench.cc $(OPTIMIZE) $(WARNS) -DNDEBUG -g
pg_bench:pg_bench.o
$(CXX) -o $@ $^ $(OPTIMIZE_LD) $(WARNS) -O4 -fno-inline -pg -g
./pg_bench $(NOTIFY)
gprof pg_bench > profile
pg_bench.o:bench.cc sl.hpp node.hpp
$(CXX) -c -o $@ bench.cc $(WARNS) -O4 -fno-inline -pg -g
# gtest
gtest_main.o:
$(CXX) $(GTEST_INC) -c $(OPTS) $(GTEST_DIR)/src/gtest_main.cc -o $@
gtest-all.o:
$(CXX) $(GTEST_INC) -c $(OPTS) $(GTEST_DIR)/src/gtest-all.cc -o $@
gtest_main.a:gtest-all.o gtest_main.o
ar -r $@ $^
libgmock.a:
g++ ${GTEST_INC} -I${GTEST_DIR} -I${GMOCK_DIR}/include -I${GMOCK_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
g++ ${GTEST_INC} -I${GTEST_DIR} -I${GMOCK_DIR}/include -I${GMOCK_DIR} -c ${GMOCK_DIR}/src/gmock-all.cc
ar -rv libgmock.a gtest-all.o gmock-all.o
# mtrace
mtrace_on.so:mtrace_on.c
g++ $^ -o $@ -shared
clean:
rm -f *.o
rm -f *~