ENH: settings.(c)sh: added checking on SGIMPI MPI_ROOT
[OpenFOAM-2.0.x.git] / etc / config / settings.csh
blobddcd84a3e058e3cadd0bac7c59ff968487e5accf
1 #----------------------------------*-sh-*--------------------------------------
2 # =========                 |
3 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4 #  \\    /   O peration     |
5 #   \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6 #    \\/     M anipulation  |
7 #------------------------------------------------------------------------------
8 # License
9 #     This file is part of OpenFOAM.
11 #     OpenFOAM is free software: you can redistribute it and/or modify it
12 #     under the terms of the GNU General Public License as published by
13 #     the Free Software Foundation, either version 3 of the License, or
14 #     (at your option) any later version.
16 #     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17 #     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 #     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19 #     for more details.
21 #     You should have received a copy of the GNU General Public License
22 #     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 # File
25 #     etc/config/settings.csh
27 # Description
28 #     Startup file for OpenFOAM
29 #     Sourced from OpenFOAM-<VERSION>/etc/cshrc
31 #------------------------------------------------------------------------------
33 # prefix to PATH
34 alias _foamAddPath 'setenv PATH \!*\:${PATH}'
35 # prefix to LD_LIBRARY_PATH
36 alias _foamAddLib 'setenv LD_LIBRARY_PATH \!*\:${LD_LIBRARY_PATH}'
37 # prefix to MANPATH
38 alias _foamAddMan 'setenv MANPATH \!*\:${MANPATH}'
40 #------------------------------------------------------------------------------
41 # Set environment variables according to system type
42 setenv WM_ARCH `uname -s`
44 switch ($WM_ARCH)
45 case Linux:
46     setenv WM_ARCH linux
48     switch (`uname -m`)
49     case i686:
50         breaksw
52     case x86_64:
53         switch ($WM_ARCH_OPTION)
54         case 32:
55             setenv WM_COMPILER_ARCH 64
56             setenv WM_CC 'gcc'
57             setenv WM_CXX 'g++'
58             setenv WM_CFLAGS '-m32 -fPIC'
59             setenv WM_CXXFLAGS '-m32 -fPIC'
60             setenv WM_LDFLAGS '-m32'
61             breaksw
63         case 64:
64             setenv WM_ARCH linux64
65             setenv WM_COMPILER_LIB_ARCH 64
66             setenv WM_CC 'gcc'
67             setenv WM_CXX 'g++'
68             setenv WM_CFLAGS '-m64 -fPIC'
69             setenv WM_CXXFLAGS '-m64 -fPIC'
70             setenv WM_LDFLAGS '-m64'
71             breaksw
73         default:
74             echo "Unknown WM_ARCH_OPTION '$WM_ARCH_OPTION', should be 32 or 64"
75             breaksw
77         endsw
78         breaksw
80     case ia64:
81         setenv WM_ARCH linuxIA64
82         setenv WM_COMPILER I64
83         breaksw
85     case mips64:
86         setenv WM_ARCH SiCortex64
87         setenv WM_MPLIB MPI
88         setenv WM_COMPILER_LIB_ARCH 64
89         setenv WM_CC 'gcc'
90         setenv WM_CXX 'g++'
91         setenv WM_CFLAGS '-mabi=64 -fPIC'
92         setenv WM_CXXFLAGS '-mabi=64 -fPIC'
93         setenv WM_LDFLAGS '-mabi=64 -G0'
94         breaksw
96     case ppc64:
97         setenv WM_ARCH linuxPPC64
98         setenv WM_COMPILER_LIB_ARCH 64
99         setenv WM_CC 'gcc'
100         setenv WM_CXX 'g++'
101         setenv WM_CFLAGS '-m64 -fPIC'
102         setenv WM_CXXFLAGS '-m64 -fPIC'
103         setenv WM_LDFLAGS '-m64'
104         breaksw
106     default:
107         echo Unknown processor type `uname -m` for Linux
108         breaksw
110     endsw
111     breaksw
113 case SunOS:
114     setenv WM_ARCH SunOS64
115     setenv WM_MPLIB FJMPI
116     setenv WM_COMPILER_LIB_ARCH 64
117     setenv WM_CC 'gcc'
118     setenv WM_CXX 'g++'
119     setenv WM_CFLAGS '-mabi=64 -fPIC'
120     setenv WM_CXXFLAGS '-mabi=64 -fPIC'
121     setenv WM_LDFLAGS '-mabi=64 -G0'
122     breaksw
124 default:
125     echo
126     echo "Your '$WM_ARCH' operating system is not supported by this release"
127     echo "of OpenFOAM. For further assistance, please contact www.OpenFOAM.org"
128     echo
129     breaksw
131 endsw
134 #------------------------------------------------------------------------------
136 # location of the jobControl directory
137 setenv FOAM_JOB_DIR $WM_PROJECT_INST_DIR/jobControl
139 # wmake configuration
140 setenv WM_DIR $WM_PROJECT_DIR/wmake
141 setenv WM_LINK_LANGUAGE c++
142 setenv WM_OPTIONS $WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_COMPILE_OPTION
144 # base executables/libraries
145 setenv FOAM_APPBIN $WM_PROJECT_DIR/platforms/$WM_OPTIONS/bin
146 setenv FOAM_LIBBIN $WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib
148 # external (ThirdParty) libraries
149 setenv FOAM_EXT_LIBBIN $WM_THIRD_PARTY_DIR/platforms/$WM_OPTIONS/lib
151 # shared site executables/libraries
152 # similar naming convention as ~OpenFOAM expansion
153 if ( $?WM_PROJECT_SITE ) then
154     setenv FOAM_SITE_APPBIN $WM_PROJECT_SITE/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/bin
155     setenv FOAM_SITE_LIBBIN $WM_PROJECT_SITE/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/lib
156 else
157     setenv FOAM_SITE_APPBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/bin
158     setenv FOAM_SITE_LIBBIN $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/lib
159 endif
161 # user executables/libraries
162 setenv FOAM_USER_APPBIN $WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/bin
163 setenv FOAM_USER_LIBBIN $WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/lib
165 # dynamicCode templates
166 # - default location is the "~OpenFOAM/codeTemplates/dynamicCode" expansion
167 # setenv FOAM_CODE_TEMPLATES $WM_PROJECT_DIR/etc/codeTemplates/dynamicCode
169 # convenience
170 setenv FOAM_APP $WM_PROJECT_DIR/applications
171 setenv FOAM_SRC $WM_PROJECT_DIR/src
172 setenv FOAM_TUTORIALS $WM_PROJECT_DIR/tutorials
173 setenv FOAM_UTILITIES $FOAM_APP/utilities
174 setenv FOAM_SOLVERS $FOAM_APP/solvers
175 setenv FOAM_RUN $WM_PROJECT_USER_DIR/run
177 # add wmake to the path - not required for runtime only environment
178 if ( -d "${WM_DIR}" ) setenv PATH ${WM_DIR}:${PATH}
179 # add OpenFOAM scripts to the path
180 setenv PATH ${WM_PROJECT_DIR}/bin:${PATH}
182 _foamAddPath ${FOAM_USER_APPBIN}:${FOAM_SITE_APPBIN}:${FOAM_APPBIN}
183 # Make sure to pick up dummy versions of external libraries last
184 _foamAddLib  ${FOAM_USER_LIBBIN}:${FOAM_SITE_LIBBIN}:${FOAM_LIBBIN}:${FOAM_EXT_LIBBIN}:${FOAM_LIBBIN}/dummy
186 # Compiler settings
187 # ~~~~~~~~~~~~~~~~~
188 unset gcc_version gmp_version mpfr_version mpc_version
189 unsetenv MPFR_ARCH_PATH GMP_ARCH_PATH
192 # Location of compiler installation
193 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
194 if ( ! $?foamCompiler ) then
195     set foamCompiler=system
196     echo "Warning in $WM_PROJECT_DIR/etc/config/settings.csh:"
197     echo "    foamCompiler not set, using '$foamCompiler'"
198 endif
200 switch ("$foamCompiler")
201 case OpenFOAM:
202 case ThirdParty:
203     switch ("$WM_COMPILER")
204     case Gcc:
205     case Gcc++0x:
206         set gcc_version=gcc-4.4.3
207         set gmp_version=gmp-5.0.1
208         set mpfr_version=mpfr-2.4.2
209         breaksw
210     case Gcc46:
211     case Gcc46++0x:
212         set gcc_version=gcc-4.6.1
213         set gmp_version=gmp-5.0.1
214         set mpfr_version=mpfr-2.4.2
215         set mpc_version=mpc-0.8.1
216         breaksw
217     case Gcc45:
218     case Gcc45++0x:
219         set gcc_version=gcc-4.5.2
220         set gmp_version=gmp-5.0.1
221         set mpfr_version=mpfr-2.4.2
222         set mpc_version=mpc-0.8.1
223         breaksw
224     case Gcc44:
225     case Gcc44++0x:
226         set gcc_version=gcc-4.4.3
227         set gmp_version=gmp-5.0.1
228         set mpfr_version=mpfr-2.4.2
229         breaksw
230     case Gcc43:
231         set gcc_version=gcc-4.3.3
232         set gmp_version=gmp-4.2.4
233         set mpfr_version=mpfr-2.4.1
234         breaksw
235     case Clang:
236         # using clang - not gcc
237         setenv WM_CC 'clang'
238         setenv WM_CXX 'clang++'
239         #set clang_version=llvm-2.9
240         set clang_version=llvm-svn
241         breaksw
242     default:
243         echo
244         echo "Warning in $WM_PROJECT_DIR/etc/config/settings.csh:"
245         echo "    Unknown OpenFOAM compiler type '$WM_COMPILER'"
246         echo "    Please check your settings"
247         echo
248         breaksw
249     endsw
251     # optional configuration tweaks:
252     _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config/compiler.csh`
254     if ( $?gcc_version ) then
255         set gccDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$gcc_version
256         set gmpDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$gmp_version
257         set mpfrDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$mpfr_version
258         if ( $?mpc_version ) then
259             set mpcDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$mpc_version
260         endif
262         # Check that the compiler directory can be found
263         if ( ! -d "$gccDir" ) then
264             echo
265             echo "Warning in $WM_PROJECT_DIR/etc/config/settings.csh:"
266             echo "    Cannot find $gccDir installation."
267             echo "    Please install this compiler version or if you wish to use the system compiler,"
268             echo "    change the 'foamCompiler' setting to 'system'"
269             echo
270         endif
272         _foamAddMan     $gccDir/man
273         _foamAddPath    $gccDir/bin
275         # add compiler libraries to run-time environment
276         # 64-bit needs lib64, but 32-bit needs lib (not lib32)
277         if ($WM_ARCH_OPTION == 64 && $?WM_COMPILER_LIB_ARCH) then
278             _foamAddLib     $gccDir/lib$WM_COMPILER_LIB_ARCH
279         else
280             _foamAddLib     $gccDir/lib
281         endif
283         # add gmp/mpfr libraries to run-time environment
284         _foamAddLib     $gmpDir/lib
285         _foamAddLib     $mpfrDir/lib
287         # add mpc libraries (not need for older gcc) to run-time environment
288         if ( $?mpc_version ) then
289             _foamAddLib     $mpcDir/lib
290         endif
292         # used by boost/CGAL:
293         setenv MPFR_ARCH_PATH $mpfrDir
294         setenv GMP_ARCH_PATH $gmpDir
295     endif
296     unset gcc_version gccDir
297     unset gmp_version gmpDir  mpfr_version mpfrDir  mpc_version mpcDir
299     if ( $?clang_version ) then
300         set clangDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$clang_version
302         # Check that the compiler directory can be found
303         if ( ! -d "$clangDir" ) then
304             echo
305             echo "Warning in $WM_PROJECT_DIR/etc/config/settings.csh:"
306             echo "    Cannot find $clangDir installation."
307             echo "    Please install this compiler version or if you wish to use the system compiler,"
308             echo "    change the 'foamCompiler' setting to 'system'"
309             echo
310         endif
312         _foamAddMan     $clangDir/man
313         _foamAddPath    $clangDir/bin
314     endif
315     unset clang_version clangDir
317     breaksw
319 case system:
320     # okay, use system compiler
321     breaksw
323 default:
324     echo "Warn: foamCompiler='$foamCompiler' is unsupported"
325     echo "   treating as 'system' instead"
326     breaksw
327 endsw
331 # add c++0x flags for external programs
333 if ( $?WM_CXXFLAGS ) then
334     switch ("$WM_COMPILER")
335     case Gcc*++0x:
336         setenv WM_CXXFLAGS "$WM_CXXFLAGS -std=c++0x"
337         breaksw
338     endsw
339 endif
342 # boost and CGAL
343 # ~~~~~~~~~~~~~~
345 set boost_version=boost_1_45_0
346 set cgal_version=CGAL-3.8
348 setenv BOOST_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$boost_version
349 setenv CGAL_ARCH_PATH  $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cgal_version
351 # enabled if CGAL is available
352 if ( -d "$CGAL_ARCH_PATH" ) then
353     if ( -d "$BOOST_ARCH_PATH" ) then
354         _foamAddLib $BOOST_ARCH_PATH/lib
355     else
356         unsetenv BOOST_ARCH_PATH
357     endif
358     _foamAddLib $CGAL_ARCH_PATH/lib
359 else
360     unsetenv BOOST_ARCH_PATH CGAL_ARCH_PATH MPFR_ARCH_PATH GMP_ARCH_PATH
361 endif
363 unset boost_version cgal_version
366 # Communications library
367 # ~~~~~~~~~~~~~~~~~~~~~~
369 unsetenv MPI_ARCH_PATH MPI_HOME FOAM_MPI_LIBBIN
371 switch ("$WM_MPLIB")
372 case OPENMPI:
373     setenv FOAM_MPI openmpi-1.5.3
374     # optional configuration tweaks:
375     _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config/openmpi.csh`
377     setenv MPI_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$FOAM_MPI
379     # Tell OpenMPI where to find its install directory
380     setenv OPAL_PREFIX $MPI_ARCH_PATH
382     _foamAddPath    $MPI_ARCH_PATH/bin
383     _foamAddLib     $MPI_ARCH_PATH/lib
384     _foamAddMan     $MPI_ARCH_PATH/man
385     breaksw
387 case SYSTEMOPENMPI:
388     # Use the system installed openmpi, get library directory via mpicc
389     setenv FOAM_MPI openmpi-system
391     # Set compilation flags here instead of in wmake/rules/../mplibSYSTEMOPENMPI
392     setenv PINC "`mpicc --showme:compile`"
393     setenv PLIBS "`mpicc --showme:link`"
394     set libDir=`echo "$PLIBS" | sed -e 's/.*-L\([^ ]*\).*/\1/'`
396     # Bit of a hack: strip off 'lib' and hope this is the path to openmpi
397     # include files and libraries.
398     setenv MPI_ARCH_PATH "${libDir:h}"
400     if ($?FOAM_VERBOSE && $?prompt) then
401         echo "Using system installed MPI:"
402         echo "    compile flags : $PINC"
403         echo "    link flags    : $PLIBS"
404         echo "    libmpi dir    : $libDir"
405     endif
407     _foamAddLib     $libDir
408     unset libDir
409     breaksw
411 case MPICH:
412     setenv FOAM_MPI mpich2-1.1.1p1
413     setenv MPI_HOME $WM_THIRD_PARTY_DIR/$FOAM_MPI
414     setenv MPI_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$FOAM_MPI
416     _foamAddPath    $MPI_ARCH_PATH/bin
417     _foamAddLib     $MPI_ARCH_PATH/lib
418     _foamAddMan     $MPI_ARCH_PATH/share/man
419     breaksw
421 case MPICH-GM:
422     setenv FOAM_MPI mpich-gm
423     setenv MPI_ARCH_PATH /opt/mpi
424     setenv MPICH_PATH $MPI_ARCH_PATH
425     setenv GM_LIB_PATH /opt/gm/lib64
427     _foamAddPath    $MPI_ARCH_PATH/bin
428     _foamAddLib     $MPI_ARCH_PATH/lib
429     _foamAddLib     $GM_LIB_PATH
430     breaksw
432 case HPMPI:
433     setenv FOAM_MPI hpmpi
434     setenv MPI_HOME /opt/hpmpi
435     setenv MPI_ARCH_PATH $MPI_HOME
437     _foamAddPath $MPI_ARCH_PATH/bin
439     switch (`uname -m`)
440     case i686:
441         _foamAddLib $MPI_ARCH_PATH/lib/linux_ia32
442         breaksw
443     case x86_64:
444         _foamAddLib $MPI_ARCH_PATH/lib/linux_amd64
445         breaksw
446     case ia64:
447         _foamAddLib $MPI_ARCH_PATH/lib/linux_ia64
448         breaksw
449     default:
450         echo Unknown processor type `uname -m` for Linux
451         breaksw
452     endsw
453     breaksw
455 case GAMMA:
456     setenv FOAM_MPI gamma
457     setenv MPI_ARCH_PATH /usr
458     breaksw
460 case MPI:
461     setenv FOAM_MPI mpi
462     setenv MPI_ARCH_PATH /opt/mpi
463     breaksw
465 case FJMPI:
466     setenv FOAM_MPI fjmpi
467     setenv MPI_ARCH_PATH /opt/FJSVmpi2
469     _foamAddPath    $MPI_ARCH_PATH/bin
470     _foamAddLib     $MPI_ARCH_PATH/lib/sparcv9
471     _foamAddLib     /opt/FSUNf90/lib/sparcv9
472     _foamAddLib     /opt/FJSVpnidt/lib
473     breaksw
475 case QSMPI:
476     setenv FOAM_MPI qsmpi
477     setenv MPI_ARCH_PATH /usr/lib/mpi
479     _foamAddPath    $MPI_ARCH_PATH/bin
480     _foamAddLib     $MPI_ARCH_PATH/lib
481     breaksw
483 case SGIMPI:
484     if ( ! $?MPI_ROOT) setenv MPI_ROOT /dummy
486     if ( ! -d "$MPI_ROOT" ) then
487         echo "Warning in $WM_PROJECT_DIR/etc/config/settings.csh:"
488         echo "    MPI_ROOT not a valid mpt installation directory."
489         echo "    Please set MPI_ROOT to the mpt installation directory."
490         echo "    (usually done by loading the mpt module)"
491         echo "    MPI_ROOT currently set to '$MPI_ROOT'"
492     endif
494     if ( "${MPI_ROOT:h}/" == $MPI_ROOT ) then
495         setenv MPI_ROOT ${MPI_ROOT:h}
496     endif
498     setenv FOAM_MPI ${MPI_ROOT:t}
499     setenv MPI_ARCH_PATH $MPI_ROOT
502     if ($?FOAM_VERBOSE && $?prompt) then
503         echo "Using SGI MPT:"
504         echo "    MPI_ROOT : $MPI_ROOT"
505         echo "    FOAM_MPI : $FOAM_MPI"
506     endif
509     _foamAddPath    $MPI_ARCH_PATH/bin
510     _foamAddLib     $MPI_ARCH_PATH/lib
511     breaksw
513 default:
514     setenv FOAM_MPI dummy
515     breaksw
516 endsw
519 # add (non-dummy) MPI implementation
520 # dummy MPI already added to LD_LIBRARY_PATH and has no external libraries
521 if ( "$FOAM_MPI" != dummy ) then
522     _foamAddLib ${FOAM_LIBBIN}/${FOAM_MPI}:${FOAM_EXT_LIBBIN}/${FOAM_MPI}
523 endif
527 # Set the minimum MPI buffer size (used by all platforms except SGI MPI)
528 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
529 if ( ! $?minBufferSize ) set minBufferSize=20000000
531 if ( $?MPI_BUFFER_SIZE ) then
532     if ( $MPI_BUFFER_SIZE < $minBufferSize ) then
533         setenv MPI_BUFFER_SIZE $minBufferSize
534     endif
535 else
536     setenv MPI_BUFFER_SIZE $minBufferSize
537 endif
540 # cleanup environment:
541 # ~~~~~~~~~~~~~~~~~~~~
542 unalias _foamAddPath _foamAddLib _foamAddMan
543 unset foamCompiler minBufferSize
545 # ----------------------------------------------------------------- end-of-file