/[MITgcm]/MITgcm/tools/build_options/linux_amd64_gfortran
ViewVC logotype

Annotation of /MITgcm/tools/build_options/linux_amd64_gfortran

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.17 - (hide annotations) (download)
Sun Mar 18 22:46:08 2012 UTC (12 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint63l, checkpoint63m, checkpoint63n
Changes since 1.16: +3 -3 lines
as suggested by Martin, add "-finit-real=inf" (to track uninitialised var)
to development options.

1 edhill 1.1 #!/bin/bash
2 jmc 1.7
3 jmc 1.17 # $Header: /u/gcmpack/MITgcm/tools/build_options/linux_amd64_gfortran,v 1.16 2011/12/02 15:19:38 mlosch Exp $
4 edhill 1.1 # $Name: $
5 jmc 1.7
6 jmc 1.14 # Build options for gfortran compiler (GNU) on Linux AMD64 platform
7     #
8 jmc 1.5 # Tested with gcc-gfortran v4.1.x as shipped with Fedora Core 6,7,8
9     # with gcc-gfortran v4.3.x as shipped with Fedora Core 9,10
10 jmc 1.14 #
11     # OpenMP : Tested on dickens with gcc-gfortran v4.3.2 as shipped with FC 10
12     # on baudelaire with gcc-gfortran v4.4.5 as shipped with FC 13
13     # on danton with gcc-gfortran v4.5.1 as shipped with FC 14
14     # on acesgrid with gcc-gfortran v4.6.0 as shipped with FC 15
15     #
16     # MPI : Tested on acesgrid (Fedora Core 15), using:
17     # module load gcc (Version 4.6.0)
18     # and with mpich1:
19     # module load mvapich
20     # or with mpich2:
21     # module load mvapich2
22     # or with openmpi:
23     # module load openmpi
24     # and on baudelaire.csail.mit.edu (FC13), using:
25     # export MPI_GCC_DIR=/srv/software/gcc/gcc-packages/gcc-4.4.5/mpich2/mpich2-1.3
26     # export MPI_INC_DIR=$MPI_GCC_DIR/include
27     # export PATH=$MPI_GCC_DIR/bin:$PATH
28 edhill 1.1
29 jmc 1.7 #-------
30 jmc 1.10 # run with OpenMP: needs to set environment var. OMP_NUM_THREADS
31 jmc 1.7 # and generally, needs to increase the thread stack-size:
32     # - sh,bash:
33     # > export OMP_NUM_THREADS=2
34     # > export GOMP_STACKSIZE=400m
35     # - csh,tcsh:
36     # > setenv OMP_NUM_THREADS 2
37     # > setenv GOMP_STACKSIZE 400m
38     #-------
39 edhill 1.1
40 jmc 1.14 if test "x$MPI" = xtrue ; then
41     CC=${CC:=mpicc}
42     FC=${FC:=mpif77}
43     F90C=${F90C:=mpif90}
44     else
45     CC=gcc
46     FC=gfortran
47     F90C=gfortran
48     fi
49    
50 ce107 1.2 DEFINES='-DWORDLENGTH=4 -DNML_TERMINATOR'
51 jmc 1.14 CPP='cpp -traditional -P'
52 jmc 1.4 EXTENDED_SRC_FLAG='-ffixed-line-length-132'
53 utke 1.15 F90FIXEDFORMAT='-ffixed-form'
54 jmc 1.12 GET_FC_VERSION="--version"
55 jmc 1.7 OMPFLAG='-fopenmp'
56 edhill 1.1
57 jmc 1.14 NOOPTFLAGS='-O0'
58     NOOPTFILES=''
59 ce107 1.2
60     # Requires gfortran from 2006 onwards for -fconvert=big-endian
61     FFLAGS="$FFLAGS -fconvert=big-endian -fimplicit-none"
62 jmc 1.10 # for big objects:
63     FFLAGS="$FFLAGS -fPIC"
64 jmc 1.14 #- might want to use '-fdefault-real-8' for fizhi pkg:
65     #FFLAGS="$FFLAGS -fdefault-real-8"
66 ce107 1.2
67 jmc 1.14 if test "x$IEEE" = x ; then #- with optimisation:
68     #- full optimisation
69 ce107 1.3 FOPTIM='-O3 -funroll-loops'
70 jmc 1.14 NOOPTFILES="$NOOPTFILES ini_masks_etc.F"
71     #- can use -O2 (safe optimisation) to avoid Pb with some gcc version of -O3:
72     #FOPTIM='-O2 -funroll-loops'
73 edhill 1.1 else
74 jmc 1.14 # these may also be useful, but require specific gfortran versions:
75     # -Wnonstd-intrinsics for gfortran <= 4.3
76     # -Wintrinsics-std for gfortran >= 4.4
77     # -Wno-tabs for gfortran >= 4.3
78 jahn 1.6 FFLAGS="$FFLAGS -Waliasing -Wampersand -Wsurprising -Wline-truncation"
79 jmc 1.14 #- to get plenty of warnings: -Wall -Wextra (older form: -Wall -W) or:
80     #FFLAGS="$FFLAGS -Wconversion -Wimplicit-interface -Wunused-labels"
81     if test "x$DEVEL" = x ; then #- no optimisation + IEEE :
82     FOPTIM='-O0'
83     else #- development/check options:
84 jmc 1.17 FOPTIM='-O0 -g -fbounds-check'
85     FOPTIM="$FOPTIM -ffpe-trap=invalid,zero,overflow -finit-real=inf"
86 jmc 1.14 fi
87 edhill 1.1 fi
88 jmc 1.14
89 ce107 1.2 F90FLAGS=$FFLAGS
90     F90OPTIM=$FOPTIM
91 jmc 1.10 CFLAGS='-O0 -fPIC'
92 ce107 1.2
93 jmc 1.14 INCLUDEDIRS=''
94     INCLUDES=''
95     LIBS=''
96    
97 ce107 1.2 if [ "x$NETCDF_ROOT" != x ] ; then
98     INCLUDEDIR="${NETCDF_ROOT}/include"
99     INCLUDES="-I${NETCDF_ROOT}/include"
100     LIBDIR="${NETCDF_ROOT}/lib"
101     LIBS="-L${NETCDF_ROOT}/lib"
102     elif [ "x$NETCDF_HOME" != x ]; then
103     INCLUDEDIR="${NETCDF_HOME}/include"
104     INCLUDES="-I${NETCDF_HOME}/include"
105     LIBDIR="${NETCDF_HOME}/lib"
106     LIBS="-L${NETCDF_HOME}/lib"
107     elif [ "x$NETCDF_INC" != x -a "x$NETCDF_LIB" != x ]; then
108     NETCDF_INC=`echo $NETCDF_INC | sed 's/-I//g'`
109     NETCDF_LIB=`echo $NETCDF_LIB | sed 's/-L//g'`
110     INCLUDEDIR="${NETCDF_INC}"
111     INCLUDES="-I${NETCDF_INC}"
112     LIBDIR="${NETCDF_LIB}"
113     LIBS="-L${NETCDF_LIB}"
114     elif [ "x$NETCDF_INCDIR" != x -a "x$NETCDF_LIBDIR" != x ]; then
115     INCLUDEDIR="${NETCDF_INCDIR}"
116     INCLUDES="-I${NETCDF_INCDIR}"
117     LIBDIR="${NETCDF_LIBDIR}"
118     LIBS="-L${NETCDF_LIBDIR}"
119     elif test -d /usr/include/netcdf-3 ; then
120 edhill 1.1 INCLUDES='-I/usr/include/netcdf-3'
121     LIBS='-L/usr/lib/netcdf-3 -L/usr/lib64/netcdf-3'
122     elif test -d /usr/include/netcdf ; then
123     INCLUDES='-I/usr/include/netcdf'
124     elif test -d /usr/local/netcdf ; then
125     INCLUDES='-I/usr/local/netcdf/include'
126     LIBS='-L/usr/local/netcdf/lib'
127 ce107 1.2 elif test -d /usr/local/include/netcdf.inc ; then
128     INCLUDES='-I/usr/local/include'
129     LIBS='-L/usr/local/lib64'
130 mlosch 1.16 elif test -d /usr/include/netcdf.inc ; then
131     INCLUDES='-I/usr/include'
132     LIBS='-L/usr/lib64'
133 edhill 1.1 fi
134 jmc 1.14
135     if [ -n "$MPI_INC_DIR" -a "x$MPI" = xtrue ] ; then
136     INCLUDES="$INCLUDES -I$MPI_INC_DIR"
137     INCLUDEDIRS="$INCLUDEDIRS $MPI_INC_DIR"
138     MPIINCLUDEDIR="$MPI_INC_DIR"
139     MPI_HEADER_FILES='mpif.h mpiof.h'
140     MPI_HEADER_FILES_INC='./mpi_headers/mpif.h ./mpi_headers/mpiof.h'
141     fi

  ViewVC Help
Powered by ViewVC 1.1.22