-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbuild.sh
executable file
·129 lines (115 loc) · 2.79 KB
/
build.sh
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/bin/bash
NUMCORES=$(nproc)
# Default build type is Debug
BUILDTYPE="Debug"
# Default USE_FLOAT=OFF
USEFLOAT="OFF"
# Disable FFT shift
FFTSHIFT="OFF"
# Use Serial Gridder
SERIALGRIDDER="OFF"
# Generate fftw plans
GENFFT=1
# Enable W-projection
ENABLE_WPROJECTION="OFF"
# Enable A-projection
ENABLE_APROJECTION="OFF"
# Enable STP debug
ENABLE_STP_DEBUG="OFF"
while getopts "drifsgnwalh" OPTION
do
case $OPTION in
d)
BUILDTYPE="Debug"
;;
r)
BUILDTYPE="Release"
;;
i)
BUILDTYPE="RelWithDebInfo"
;;
f)
USEFLOAT="ON"
;;
s)
FFTSHIFT="ON"
;;
g)
SERIALGRIDDER="ON"
;;
w)
ENABLE_WPROJECTION="ON"
;;
a)
ENABLE_APROJECTION="ON"
;;
l)
ENABLE_STP_DEBUG="ON"
;;
n)
GENFFT=0
;;
h)
echo
echo "Build STP prototype, generate FFTW wisdom files and run tests."
echo "Usage: ./build.sh <OPTIONS>"
echo
echo "Available OPTIONS:"
echo " -d Set BUILDTYPE=Debug (default)"
echo " -r Set BUILDTYPE=Release"
echo " -i Set BUILDTYPE=RelWithDebInfo"
echo " -f Set USE_FLOAT=ON (default is USE_FLOAT=OFF)"
echo " -s Set USE_FFTSHIFT=ON (default is USE_FFTSHIFT=OFF)"
echo " -g Set USE_SERIAL_GRIDDER=ON (default is USE_SERIAL_GRIDDER=OFF)"
echo " -w Enable support for W-projection (default is ENABLE_WPROJECTION="OFF")"
echo " -a Enable support for A-projection (default is ENABLE_APROJECTION="OFF")"
echo " -l Enable debug logger on STP library (default is ENABLE_STP_DEBUG="OFF")"
echo " -n Do not generate fftw wisdom files"
echo
exit 1
;;
\?)
exit 1
;;
esac
done
# Cleanup any preexisting build files
echo
echo " ***************** BUILD STP *****************"
echo " >> BUILDTYPE = ${BUILDTYPE}"
echo " >> USE_FLOAT = ${USEFLOAT}"
echo " >> USE_FFTSHIFT = ${FFTSHIFT}"
echo " >> USE_SERIAL_GRIDDER = ${SERIALGRIDDER}"
echo " >> ENABLE_WPROJECTION = ${ENABLE_WPROJECTION}"
echo " >> ENABLE_APROJECTION = ${ENABLE_APROJECTION}"
echo " >> ENABLE_STP_DEBUG = ${ENABLE_STP_DEBUG}"
echo
echo " >> Create build directory in build/$BUILDTYPE"
# Stop if there's an error
set -e
if [ -d build/$BUILDTYPE ] ; then
rm -r build/$BUILDTYPE
fi
mkdir -p build/$BUILDTYPE
cd build/$BUILDTYPE
# Run CMake
COMMAND="cmake -DCMAKE_BUILD_TYPE="$BUILDTYPE" -DUSE_FLOAT=${USEFLOAT} -DUSE_FFTSHIFT=${FFTSHIFT} -DUSE_SERIAL_GRIDDER=${SERIALGRIDDER} \
-DENABLE_WPROJECTION=${ENABLE_WPROJECTION} -DENABLE_APROJECTION=${ENABLE_APROJECTION} -DENABLE_STP_DEBUG=${ENABLE_STP_DEBUG} \
../../src/"
echo
echo " >> Run cmake and compile"
echo $COMMAND
$COMMAND
# Build
make all -j $NUMCORES
# Generate FFTW plans
if [ $GENFFT == 1 ] ; then
echo
echo " >> Generate FFTW wisdom files using fftw-wisdom tool"
make fftwisdom
fi
echo
echo " >> Run tests"
# Run tests
cd ../../build/$BUILDTYPE
make test