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

Contents of /MITgcm/tools/build_options/linux_amd64_gfortran

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


Revision 1.15 - (show annotations) (download)
Mon Sep 26 19:32:32 2011 UTC (12 years, 7 months ago) by utke
Branch: MAIN
CVS Tags: checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63c
Changes since 1.14: +2 -1 lines
want to know the fixed format flag

1 #!/bin/bash
2
3 # $Header: /u/gcmpack/MITgcm/tools/build_options/linux_amd64_gfortran,v 1.14 2011/08/21 21:06:51 jmc Exp $
4 # $Name: $
5
6 # Build options for gfortran compiler (GNU) on Linux AMD64 platform
7 #
8 # 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 #
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
29 #-------
30 # run with OpenMP: needs to set environment var. OMP_NUM_THREADS
31 # 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
40 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 DEFINES='-DWORDLENGTH=4 -DNML_TERMINATOR'
51 CPP='cpp -traditional -P'
52 EXTENDED_SRC_FLAG='-ffixed-line-length-132'
53 F90FIXEDFORMAT='-ffixed-form'
54 GET_FC_VERSION="--version"
55 OMPFLAG='-fopenmp'
56
57 NOOPTFLAGS='-O0'
58 NOOPTFILES=''
59
60 # Requires gfortran from 2006 onwards for -fconvert=big-endian
61 FFLAGS="$FFLAGS -fconvert=big-endian -fimplicit-none"
62 # for big objects:
63 FFLAGS="$FFLAGS -fPIC"
64 #- might want to use '-fdefault-real-8' for fizhi pkg:
65 #FFLAGS="$FFLAGS -fdefault-real-8"
66
67 if test "x$IEEE" = x ; then #- with optimisation:
68 #- full optimisation
69 FOPTIM='-O3 -funroll-loops'
70 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 else
74 # 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 FFLAGS="$FFLAGS -Waliasing -Wampersand -Wsurprising -Wline-truncation"
79 #- 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 FOPTIM='-O0'
85 FOPTIM="$FOPTIM -g -ffpe-trap=invalid,zero,overflow -fbounds-check"
86 fi
87 fi
88
89 F90FLAGS=$FFLAGS
90 F90OPTIM=$FOPTIM
91 CFLAGS='-O0 -fPIC'
92
93 INCLUDEDIRS=''
94 INCLUDES=''
95 LIBS=''
96
97 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 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 elif test -d /usr/local/include/netcdf.inc ; then
128 INCLUDES='-I/usr/local/include'
129 LIBS='-L/usr/local/lib64'
130 fi
131
132 if [ -n "$MPI_INC_DIR" -a "x$MPI" = xtrue ] ; then
133 INCLUDES="$INCLUDES -I$MPI_INC_DIR"
134 INCLUDEDIRS="$INCLUDEDIRS $MPI_INC_DIR"
135 MPIINCLUDEDIR="$MPI_INC_DIR"
136 MPI_HEADER_FILES='mpif.h mpiof.h'
137 MPI_HEADER_FILES_INC='./mpi_headers/mpif.h ./mpi_headers/mpiof.h'
138 fi

  ViewVC Help
Powered by ViewVC 1.1.22