/
Makefile
101 lines (74 loc) · 2.38 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
92
93
94
95
96
97
98
99
100
101
#Standard boilerplate
prefix = /usr/local
exec_prefix = ${prefix}
mandir = ${datarootdir}/man
includedir = ${prefix}/include
datarootdir = ${prefix}/share
pkgconfig = ${exec_prefix}/lib/pkgconfig
ifneq "$(DESTDIR)" ""
DESTDIR+=/
endif
CXX=g++
CXXFLAGS=-g -O2 -Wall -Wextra -W -O3 -Werror
LDFLAGS= -llapack
hdr = $(DESTDIR)$(includedir)/TooN
.PHONY: all clean testclean
all:
@echo There is nothing to be compiled in TooN.
@echo It is now ready to be installed.
install:
mkdir -p $(hdr)
cp *.h $(hdr)
cp -r optimization $(hdr)/
cp -r internal $(hdr)/
cp -r functions $(hdr)/
[ "$(pkgconfig)" = "" ] || mkdir -p $(DESTDIR)$(pkgconfig)
[ "$(pkgconfig)" = "" ] || cp TooN.pc $(DESTDIR)$(pkgconfig)/
internal/data_functions.hh: make_data_functions.awk
awk -f make_data_functions.awk > $@
internal/make_vector.hh: make_make_vector.awk
awk -f make_make_vector.awk > $@
internal/builtin_typeof.h:make_typeof.awk
awk -f make_typeof.awk > $@
clean: testclean
rm -rf html
docs:
doxygen
LAPACK_TESTS=eigen-sqrt chol_lapack sym_eigen qr lu determinant
BUILTIN_TESTS=slice vector_resize gauss_jordan chol_toon fill so3 complex gr_svd diagonal_matrix gaussian_elimination zeros
ifeq (yes,yes)
TESTS=$(BUILTIN_TESTS) $(LAPACK_TESTS)
MISSING_TESTS=
else
TESTS=$(BUILTIN_TESTS)
MISSING_TESTS=$(LAPACK_TESTS)
endif
TEST_RESULT=$(TESTS:%=regressions/%.result)
TEST_FILES=$(TESTS:%=regressions/%.testout) $(TESTS:%=regressions/%.test) $(TEST_RESULT)
testclean:
rm -f $(TEST_FILES)
foo:
echo $(MAKEFLAGS)
.PHONY: test
test:regressions/results
@echo -------------- Test Results ---------------
@cat regressions/results
@echo $(MISSING_TESTS) | awk '{for(i=1; i <= NF; i++) print $$i, "Missing."}'
regressions/results:$(TEST_RESULT)
cat $(TEST_RESULT) > regressions/results
.PRECIOUS: regressions/%.testout regressions/%.test
TooN:
ln -s "$$PWD" TooN
.INTERMEDIATE: TooN
#Build a test executable from a test program. On compile error,
#create an execuaable which decalres the error.
regressions/%.test: regressions/%.cc TooN
$(CXX) $(CXXFLAGS) $< -o $@ -DTOON_CHECK_BOUNDS -DTOON_INITIALIZE_SNAN -I .. -I . $(LDFLAGS) ||\
{ \
echo "echo 'Compile error!'" > $@ ; \
chmod +x $@; \
}
regressions/%.testout: regressions/%.test
$< > $@ || ( echo Crash!!! > $@ )
regressions/%.result: regressions/%.testout regressions/%.txt
awk -vname=$* -f numdiff.awk -vf1=$< -vf2=regressions/$*.txt > $@