Newer
Older
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
#!/bin/bash
option=$1
case "$option" in
"-h" | "--help")
cat <<\_ACEOF
###############################################################
############## configures and compiles CLASS V4.1 #############
###############################################################
Usage: install.sh [VAR=VALUE] [OPTION]
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
Optional Features:
--disable-OMP do not compile with OpenMP support for evolution
[default: enable for gcc version >= 4.1]
--InstallLib-path=path Install location of CLASS's libraries [default= $PWD/lib]
--InstallGui-path=path Install location of the GUI binary [default= $PWD/gui/bin]
Some influential environment variables:
CXX C++ compiler command [default=g++]
CXXFLAGS C++ compiler flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CPPFLAGS C++ preprocessor flags, e.g. -D<special flag>
Report bugs to <leniau@subatech.in2p3.fr>.
(special thanks to PTO)
_ACEOF
exit ;;
esac
####### set default
IsGCCSupportOMP="no"
IsOMPEnable="yes"
OMPFLAGS=
ROOTCFLAGS=
ROOTGLIBS=
ROOTLIBS=
LIBDIR=${PWD}/lib
Gui_bin_PATH=${PWD}/gui/bin

Baptiste LENIAU
committed
CXX="g++"
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
CXXFLAGS=""
CPPFLAGS=""
####### evaluate options
for option
do
case $option in
*=?*) ac_optarg=`expr "X$option" : '[^=]*=\(.*\)'` ;;
*=) ac_optarg= ;;
*) ac_optarg=yes ;;
esac
# echo $ac_optarg
case $option in
--InstallLib-path=*)
LIBDIR="$ac_optarg" ;;
--InstallGui-path=*)
Gui_bin_PATH="$ac_optarg" ;;
--disable-OMP)
IsOMPEnable="disable" ;;
*)
echo "Unrecognized option $option"
exit ;;
esac
done
####### ROOT Support
if [ -f $ROOTSYS/bin/root-config ]
then
echo "Checking for ROOT cern lib... yes"
ROOTCFLAGS='$(shell ${ROOTSYS}/bin/root-config --cflags)'
ROOTGLIBS='$(shell ${ROOTSYS}/bin/root-config --glibs)'
ROOTLIBS='$(shell ${ROOTSYS}/bin/root-config --libs)'
if [ "$ROOTSYS/bin/root-config --features-tmva" = "no" ]
then
echo "TMVA is not activated : consider rebuild ROOT activating this feature"
exit 0
fi
else
echo "Checking for ROOT cern lib... no"
echo "********************* ERROR *********************"
echo "** CLASS need ROOT (cern) to work"
echo "** Either set the ROOTSYS env variable or intall"
echo "** the ROOT library FROM SOURCES with the same C++"
echo "** compiler you will use for comipling CLASS"
echo "***************************************************"
exit 0
fi
####### OMP support
### write a testconf prog
echo "#include <omp.h>" > testconf.cxx
echo "int main(){ return 0;}" >> testconf.cxx
if [ "$IsOMPEnable" = "yes" ]
then

Baptiste LENIAU
committed
${CXX} -o testconf -fopenmp testconf.cxx -lgomp > script.errors 2>&1
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
ok=`cat script.errors|wc -l`
if [ $ok = 0 ]
then
IsGCCSupportOMP="yes"
else
IsOMPEnable="no"
IsGCCSupportOMP="no"
fi
rm -f script.errors
fi
if [ "$IsOMPEnable" = "yes" ]
then
echo "Checking for omp.h... yes"
echo " You can disable the use of this library with \"--disable-OMP\" option"
OMPFLAGS="-fopenmp -DOpenMP"
OMPLIB=-lgomp
else
if [ "$IsOMPEnable" = "no" ]
then
echo "Checking for omp.h... no"
echo " OpenMP support not found."
echo " Either gcc is to old either install libgomp.so"
else
if [ "$IsOMPEnable" = "disable" ]
then
echo "Checking for omp.h... disable"
fi
fi
fi
rm -f script.errors testconf testconf.cxx
#######################################################
### Preprocessor flags & Makefile variables
#######################################################
mkdir -p config
MAKEFILE_INC="config/Makefile.config"
rm config/Makefile.config
echo "#####################">> $MAKEFILE_INC
echo "###### OPEN MP ######">> $MAKEFILE_INC
echo "#####################">> $MAKEFILE_INC
echo "OMPFLAGS=$OMPFLAGS" >> $MAKEFILE_INC
echo "OMPLIB=$OMPLIB" >> $MAKEFILE_INC
echo >> $MAKEFILE_INC
echo "#####################">> $MAKEFILE_INC
echo "####### ROOT ########">> $MAKEFILE_INC
echo "#####################">> $MAKEFILE_INC
echo "ROOTCFLAGS:=$ROOTCFLAGS" >> $MAKEFILE_INC
echo "ROOTGLIBS:=$ROOTGLIBS" >> $MAKEFILE_INC
echo "ROOTLIBS:=$ROOTLIBS" >> $MAKEFILE_INC
echo >> $MAKEFILE_INC
echo "#####################">> $MAKEFILE_INC
echo "##### COMPILER ######">> $MAKEFILE_INC
echo "#####################">> $MAKEFILE_INC
if [ "$CXX" = "" ]
then
echo "CXX= g++" >> $MAKEFILE_INC
else
echo "CXX=$CXX" >> $MAKEFILE_INC
fi
if [ "$CXXFLAGS" = "" ]
then
echo "CXXFLAGS=-O2 -g -fPIC -Wall -Wno-unused">> $MAKEFILE_INC
else
echo "CXXFLAGS=$CXXFLAGS" >> $MAKEFILE_INC
fi
if [ "$CPPFLAGS" = "" ]
then
echo "CPPFLAGS= \$(OMPFLAGS) " >> $MAKEFILE_INC
else
echo "CPPFLAGS=$CPPFLAGS" >> $MAKEFILE_INC
fi
echo "####Installation folder of librairies##" >>$MAKEFILE_INC
echo "LIBDIR=$LIBDIR" >> $MAKEFILE_INC
echo "Building Librairies Folder @ $LIBDIR"
mkdir -p $LIBDIR
echo "####Installation folder of Gui##" >>$MAKEFILE_INC
echo "Gui_bin_PATH=$Gui_bin_PATH" >> $MAKEFILE_INC
echo "Building Gui Folder @ $Gui_bin_PATH"
mkdir -p $Gui_bin_PATH
#######################################################
### Include flags
#######################################################
INCLUDE_INC="config/config.hxx"
if [ "$IsOMPEnable" = "yes" ]
then
echo "#include <omp.h>" > $INCLUDE_INC
else
echo "#define omp_get_thread_num() 0" > $INCLUDE_INC
fi
#######################################################
### compile libraries
#######################################################
echo "####################################################"
echo "######### Compilation of CLASS libraries ###########"
echo "####################################################"
cd source/src ; make clean ; make -j 4 ; make install ; cd ../..
echo "####################################################"
echo "########## Compilation Done #######################"
echo "####################################################"
echo "MURE libraries installed in"
echo "----> $LIBDIR"
echo "####################################################"
echo "######### Compilation of CLASSGUI binary ###########"
echo "####################################################"
cd gui ; make clean ; make -j 4 ; cd ../
echo "####################################################"
echo "########## Compilation Done #######################"
echo "####################################################"
echo
#######################################################
### set the pathes of DECAY data base
#######################################################
echo
echo
echo "####################################################"
echo "########## SET DECAY DATA BASES PATHES #############"
echo "####################################################"
cd DATA_BASES/DECAY/ALL/
sed -e "s%PATHTOBASE%`pwd`%" .Decay.tmp > Decay.idx
echo "-> Done"
cd -
#######################################################
### set the environement variables
#######################################################
echo
echo
echo "####################################################"
echo "########## ENVIRONEMENT VARIABLES ##################"
echo "####################################################"
MYDefaultSHELL=$(env | grep SHELL | awk -F "=" '{ print $2 }')
SHELLPreference=".$(echo "$MYDefaultSHELL" | awk -F "/bin/" '{print $2}')rc"
echo "-> Your default shell is : $MYDefaultSHELL"
echo "-> Your $SHELLPreference will be edited if CLASS_PATH CLASS_include"
echo " and CLASS_lib aren't defined yet "
echo
echo "CHECKING LOADED ENVIRONEMENT VARIABLES "
echo
CLASS_PATH_To_Set=""
CLASS_include_To_Set=""
CLASS_lib_To_Set=""
SetEnvSucceed=false
if [ -z "$CLASS_PATH" ]; then
echo "Not found in your loaded $SHELLPreference."
echo "Setting variables ..."
echo "PRESS ENTER IF DEFAULT IS CORRECT"
read -p "====>ENTER THE PATH TO THE CLASS root folder (defalut ${PWD}) " CLASS_PATH_To_Set
[ -z "${CLASS_PATH_To_Set}" ] && CLASS_PATH_To_Set="${PWD}"
echo "Path of the CLASS include folder is $CLASS_PATH_To_Set"
echo
read -p "====>ENTER THE PATH TO THE CLASS INCLUDE (default: $CLASS_PATH_To_Set/source/include/): " CLASS_include_To_Set
[ -z "${CLASS_include_To_Set}" ] && CLASS_include_To_Set="${CLASS_PATH_To_Set}/source/include/"
echo "Path of the CLASS include folder is $CLASS_include_To_Set"
echo
read -p "====>ENTER THE PATH WHERE CLASS LIB ARE INSTALLED (default: $LIBDIR): " CLASS_lib_To_Set
[ -z "${CLASS_lib_To_Set}" ] && CLASS_lib_To_Set="$LIBDIR"
echo "Path of the CLASS lib folder is $CLASS_lib_To_Set"
echo
read -p "====>ENTER THE PATH WHERE CLASSGui is INSTALLED (default: $Gui_bin_PATH): " CLASS_Gui_path_to_set
[ -z "${CLASS_Gui_path_to_set}" ] && CLASS_Gui_path_to_set="$Gui_bin_PATH"
echo "Path of the CLASS lib folder is $CLASS_Gui_path_to_set"
echo
EXPORT=
EQUAL=
if [ "$MYDefaultSHELL" = "/bin/tcsh" ] || [ "$MYDefaultSHELL" = "/bin/csh" ] ; then
EXPORT="setenv "
EQUAL=" "
else
EXPORT="export "
EQUAL="="
fi
if [ -f $HOME/$SHELLPreference ] ; then
SetEnvSucceed=true
echo "" >>$HOME/$SHELLPreference
echo "##################" >> $HOME/$SHELLPreference
echo "####CLASSV4.1#####" >> $HOME/$SHELLPreference
echo "##################" >> $HOME/$SHELLPreference
echo "$EXPORT CLASS_PATH$EQUAL$CLASS_PATH_To_Set" >> $HOME/$SHELLPreference
echo "$EXPORT CLASS_include$EQUAL$CLASS_include_To_Set" >> $HOME/$SHELLPreference
echo "$EXPORT CLASS_lib$EQUAL$CLASS_lib_To_Set" >> $HOME/$SHELLPreference
echo "#### CLASS Gui ####" >> $HOME/$SHELLPreference
echo "$EXPORT PATH$EQUAL\${PATH}:$CLASS_Gui_path_to_set" >> $HOME/$SHELLPreference
echo "Environnment variables added in $HOME/$SHELLPreference"
else
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo "!!!!!! WARNING $HOME/$SHELLPreference NOT FOUND !!!!!!!!!!"
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
fi
else
SetEnvSucceed=true
echo "A CLASS_PATH is already defined in your $SHELLPreference: $CLASS_PATH"
if [ -z "$CLASS_lib" ]; then
echo "Path to CLASS libraries is not set "
echo "delete the CLASS_PATH set in your $SHELLPreference, source $SHELLPreference, and rerun this script"
SetEnvSucceed=false
else
echo "CLASS_lib is: $CLASS_lib"
fi
if [ -z "$CLASS_include" ]; then
echo "Path to CLASS includes is not set "
echo "delete the CLASS_PATH set in your $SHELLPreference, source $SHELLPreference, and rerun this script"
SetEnvSucceed=false
else
echo "CLASS_include is : $CLASS_include"
fi
fi
if [ "$SetEnvSucceed" = true ] ; then
echo "LOADING $HOME/$SHELLPreference ... done"
echo
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
echo " Congratulations you are now able to compile your first "
echo " CLASS .cxx input. "
echo " Please read $CLASS_PATH_To_Set/documentation/Manual/USEGUIDE.pdf"
echo " (Check if echo \$CLASS_PATH gives you the correct path) "
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
$MYDefaultSHELL #LOAD THE DEFAULT SHELL WITH THE NEW ENV VAR
else
echo " I CAN'T MANAGE TO SET THE CLASS ENVIRONEMENT VARIABLE "
echo " ADD THE FOLLOWING IN YOUR SHELL PREFERENCE FILE (RC FILE) :"
echo
echo "$EXPORT CLASS_PATH$EQUAL$CLASS_PATH_To_Set "
echo "$EXPORT CLASS_include$EQUAL$CLASS_include_To_Set"
echo "$EXPORT CLASS_lib$EQUAL$CLASS_lib_To_Set "
echo "$EXPORT PATH$EQUAL\${PATH}:$CLASS_Gui_path_to_set"
echo
fi