-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
79 lines (60 loc) · 2.13 KB
/
Makefile
File metadata and controls
79 lines (60 loc) · 2.13 KB
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
CXXFLAGS = -Wconversion
LIBS = -lfftw3 -lm
BINARY = testit
SOURCE = ffts.cpp testit.cpp
################ General Makefile based on Makefile by Prof. Thorsten Koch @ TU Berlin ###################
.PHONY: lint doc cppcheck valgrind coverage analyze check clean depend
LINT = pclp64_linux /opt/pclint/config/co-clang.lnt ../shared/shared.lnt
CPPCHECK = cppcheck --enable=all
VALGRIND = valgrind --tool=memcheck --leak-check=full --leak-resolution=high --show-reachable=yes
ANALYZER = scan-build-14
DOXY = doxygen
CPPFLAGS = -I.
CXXFLAGS += -std=c++17 -Wall -Wextra -Wpedantic -Wshadow -D_GLIBCXX_DEBUG -g -O $(EXTRA_FLAGS)
CXXF_FAST += -std=c++17 -g -Ofast -DNDEBUG $(EXTRA_FLAGS) #-march=native
CXXF_OACC += -std=c++17 -g -Minfo -O -acc=gpu -gpu=managed -DNDEBUG $(EXTRA_FLAGS)
CXXF_COVERAGE += -std=c++17 -g3 -Og --coverage $(EXTRA_FLAGS)
DCXX = g++ -MM
CXXSRC = $(filter %.cpp, $(SOURCE))
OBJECT = $(CXXSRC:.cpp=.o)
$(BINARY): $(OBJECT)
$(CXX) $(CXXFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS)
fast:
make clean
make CXXFLAGS="$(CXXF_FAST)"
acc:
make clean
make CXXFLAGS="$(CXXF_OACC)" CXX=nvcc LDFLAGS=-static-nvidia
lint:
$(LINT) $(LINTFLAGS) $(CXXSRC)
doc:
-mkdir doc
$(DOXY) $(BINARY).dxy
cppcheck:
$(CPPCHECK) $(CXXSRC)
valgrind:
-bash test.sh "$(VALGRIND) ./$(BINARY)"
coverage:
-mkdir -p gcov
lcov -d . -z
make clean
make CXX=g++ LINKCXX=g++ CXXFLAGS="$(CXXF_COVERAGE)"
bash ./test.sh ./$(BINARY)
lcov -d . -c >gcov/z.capture
lcov -d . -r gcov/z.capture "*11/*" >gcov/$(BINARY).capture
genhtml -o gcov gcov/$(BINARY).capture
-rm gcov/z.capture
analyze:
make clean
$(ANALYZER) make
check:
-bash test.sh ./$(BINARY)
clean:
-rm -f $(OBJECT) $(BINARY) *.gcno *.gcda
depend: $(SOURCE)
$(SHELL) -ec '$(DCXX) $(CPPFLAGS) $(SOURCE) \
| sed '\''s|^\([0-9A-Za-z\_]\{1,\}\)\.o|\1.o|g'\'' \
>depend'
-include depend
%.o: %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $<