-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathinstall.sh
executable file
·181 lines (166 loc) · 5.82 KB
/
install.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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#!/bin/bash
passFail() {
if [ $1 -eq 0 ]
then
echo "... PASSED"
else
echo "... FAILED"
fi
}
prepareSourceMods() {
#Prepare sourceMods.sh
echo -n "Sourcing modules"
echo -n $PWD > /tmp/fastDir
echo "export COMPILER=${COMPILER}" > sourceMods.sh
echo "export BUILD=${BUILD}" >> sourceMods.sh
echo "export LAPACK=${LAPACK}" >> sourceMods.sh
echo "COMPILER=${COMPILER}" > sourceMods.sh
echo "BUILD=${BUILD}" >> sourceMods.sh
echo "LAPACK=${LAPACK}" >> sourceMods.sh
sed -e "s/FASTDIR/$(sed 's:/:\\/:g' /tmp/fastDir)/" .sourceMods.sh >> sourceMods.sh
source sourceMods.sh
module list
passFail $?
echo -n "Setting up lib and bin directories"
[ -d fastv8/lib ] || mkdir fastv8/lib
[ -d fastv8/bin ] || mkdir fastv8/bin
passFail $?
}
compileRegistry() {
#Registry
echo -n "Compiling Registry"
cd fastv8/Source/dependencies/Registry/
make clean &> /dev/null
make COMPILER=${COMPILER} &> log.make
passFail $?
cd ../../../../
}
compileLapack() {
#Registry
echo -n "Compiling Lapack"
[ -d fastv8/Source/dependencies/lapack ] || mkdir fastv8/Source/dependencies/lapack
cd fastv8/Source/dependencies/lapack
wget http://www.netlib.org/lapack/lapack-3.6.0.tgz &> log.wget
tar -zxf lapack-3.6.0.tgz &> log.untar
rm -rf build
[ -d build ] || mkdir build
cd build
make clean
rm CMakeCache.txt
cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -DCMAKE_FORTRAN_COMPILER=gfortran -DCMAKE_INSTALL_PREFIX=../../../../ -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=ON -DBUILD_DEPRECATED=ON -DLAPACKE=ON ../lapack-3.6.0 &> log.config
make -j 8 &> log.make
make install &> log.makeInstall
passFail $?
cd ../../../../../
}
compileMapPlusPlus() {
#map-plus-plus
echo -n "Compiling map-plus-plus"
cd fastv8/Source/dependencies/map-plus-plus/src/
make clean &> /dev/null
if [ "${COMPILER}" == 'intelPhi' ] ; then
icpc -c -mmic -o lmroutines.o lmroutines.cc
fi
make COMPILER=${COMPILER} BUILD=${BUILD} LAPACK=${LAPACK} &> log.make
passFail $?
cd ../../../../../
}
compileYAMLcpp() {
#yaml-cpp
echo "Compiling yaml-cpp"
echo -n " Setting up build directory"
cd fastv8/Source/dependencies/
git clone https://github.com/jbeder/yaml-cpp.git &> /dev/null
rm -rf build
[ -d build ] || mkdir build &> log.mkdirBuild
cd build
passFail $?
echo -n " Configuring"
if [ "${COMPILER}" == 'gnu' ] ; then
cmake ../yaml-cpp/ -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_FLAGS="-std=c++11" -DCMAKE_INSTALL_PREFIX=../../../ &> log.cmake
elif [ "${COMPILER}" == 'intel' ] ; then
cmake ../yaml-cpp/ -DCMAKE_CXX_COMPILER=icpc -DCMAKE_CXX_FLAGS="-std=c++11" -DCMAKE_INSTALL_PREFIX=../../../ &> log.cmake
elif [ "${COMPILER}" == 'intelPhi' ] ; then
cmake ../yaml-cpp/ -DCMAKE_CXX_COMPILER=icpc -DCMAKE_CXX_FLAGS="-std=c++11 -mmic" -DCMAKE_INSTALL_PREFIX=../../../ &> log.cmake
fi
passFail $?
echo -n " Compiling"
make -j 8 &> log.make
passFail $?
echo -n " Installing"
make install &> log.makeInstall
passFail $?
cd ../../../../
}
compileHDF5() {
echo "Compiling hdf5"
echo -n " Getting source"
cd fastv8/Source/dependencies/
curl -k -o hdf5-1.8.18.tar.bz2 https://support.hdfgroup.org/ftp/HDF5/current18/src/hdf5-1.8.18.tar.bz2 &> log.curl
passFail $?
echo -n " Setting up build directory"
tar -jxf hdf5-1.8.18.tar.bz2 &> log.untar
cd hdf5-1.8.18
[ -d build ] || mkdir build &> log.mkdirBuild
cd build
passFail $?
echo -n " Configuring"
if [ "${COMPILER}" == 'gnu' ] ; then
cmake -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -DCMAKE_INSTALL_PREFIX=../../../../ -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=OFF ../ &> log.cmake
elif [ "${COMPILER}" == 'intel' ] ; then
cmake -DCMAKE_CXX_COMPILER=icpc -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_FLAGS="-std=c++11" -DCMAKE_INSTALL_PREFIX=../../../../ -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=OFF ../ &> log.cmake
elif [ "${COMPILER}" == 'intelPhi' ] ; then
cmake -DCMAKE_CXX_COMPILER=icpc -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_FLAGS="-std=c++11 -mmic" -DCMAKE_INSTALL_PREFIX=../../../../ -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=OFF ../ &> log.cmake
fi
passFail $?
echo -n " Compiling"
make -j 8 &> log.make
passFail $?
echo -n " Installing"
make install &> log.makeInstall
passFail $?
cd ../../../../../
}
compileFAST() {
#FAST
cd fastv8/Compiling
echo "Compiling FAST"
echo -n " Compiling FAST Library"
make clean &> /dev/null
make COMPILER=${COMPILER} BUILD=${BUILD} LAPACK=${LAPACK} &> log.make #Basic FAST Library
passFail $?
echo -n " Compiling Bladed style controller libraries"
make -f makefile_DISCON_DLL COMPILER=${COMPILER} BUILD=${BUILD} LAPACK=${LAPACK} &> log.make_DISCON_DLL #Bladed style controller libraries
passFail $?
echo -n " Compiling Fortran driver program"
make FAST_driver=FAST_Prog COMPILER=${COMPILER} BUILD=${BUILD} LAPACK=${LAPACK} &> log.make_FAST_Prog #Fortran driver program
passFail $?
echo -n " Compiling C driver program"
make -f makefileCDriverProg COMPILER=${COMPILER} BUILD=${BUILD} LAPACK=${LAPACK} &> log.makeCDriverProg #C driver program
passFail $?
cd ../../
}
prepPhiEnv() {
echo -n "Prepping phi.env"
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" > phi.env
echo "export PATH=$PATH" >> phi.env
echo "export FAST=FAST_ProgC_glin64" >> phi.env
passFail $?
}
prepareSourceMods
compileRegistry
if [ "${LAPACK}" == 'lapack' ]; then
if [ "${COMPILER}" == 'gnu' ] ; then
compileLapack
else
echo "Can't use lapack with Intel compilers. Please use mkl instead."
exit 1
fi
fi
compileMapPlusPlus
compileYAMLcpp
compileHDF5
compileFAST
if [ "${COMPILER}" == 'intelPhi' ]; then
prepPhiEnv
fi