Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

User configurable variablesDescription
OIFS_GRIB_API_DIR

Location of the grib_api installation directory. This must be changed or overridden to the location of your grib_api install before OpenIFS can be compiled.
e.g. OIFS_GRIB_API_DIR{?} = /home/user/ecmwf/grib_api_gcc

OIFS_GRIB_API_INCLUDELocation of the 'include' sub-directory in the grib_api installation. This does not normally need changing.
OIFS_GRIB_API_LIBLocation of the 'lib' sub-directory in the grib_api installation. This does not normally need changing. Note: although grib_api builds both shared and static libraries, OpenIFS always links to the static library in case different versions of grib_api exist on the user system.
OIFS_LAPACK_LIBCompiler options to set the directory of the LAPACK and BLAS libraries. This must be changed or overriden as the supplied default is unlikely to be correct on most systems. e.g. OIFS_LAPACK_DIR{?} = -L/opt/apps/lapack/LP64/ -llapack -lblas
OIFS_EXTRA_LIB

Available in case additional libraries need to be specified. This is most likely set when vendors supply special optimized libraries. One example is IBM's optimized math function library MASS. e.g.  OIFS_EXTRA_LIB{?} = -L/usr/lib/mass -lmass -lmassvp6

OIFS_FCSpecifies the fortran compiler. The normal default is 'mpif90' but might be 'mpiifort' for the Intel compiler or more generally 'mpifc'. We recommend that mpi compiler wrappers are used whenever possible to simplify the compilation e.g. OIFS_FC = mpif90.
OIFS_FFLAGSFortran compiler flags for free format source files. These flags will vary between the 'opt', 'noopt' and 'nansC' build configurations. e.g.
OIFS_FFLAGS = -g -O2 -m64 -march=native -fconvert=big-endian -fopenmp
OIFS_FFIXEDExtra fortran compiler flags, in addition to OIFS_FFLAGS, for fixed source form Fortran. There are a small number of fortran source files in OpenIFS that are still in fixed format. These options will be added to the options in OIFS_FFLAGS.
OIFS_FCDEFSFortran preprocessor DEFINE flags. This is a list, separated by spaces, of the DEFINE flags required by the code in preprocessor statements like #ifdef. The user is advised not to change these
OIFS_LFLAGSLinker options. These are separate flags to be passed to the linker. For example, a common requirement is to generate a loadmap or increase stack memory size. e.g.
OIFS_LFLAGS{?} = -bloadmap:map -bmaxstack:0x80000000
OIFS_CCSpecifies the C compiler. As for the Fortran compiler this would normally be a compiler wrapper supplied by the MPI system in use. e.g. mpicc for GCC or mpiicc for Intel.
OIFS_CFLAGSC compiler flags. As for the Fortran flags, these will vary between the 'opt', 'noopt' and 'nansC' build options.
OIFS_CCDEFSC preprocessor flags. As for the OIFS_FCDEFS, the user is advised not to change these.

Examples

  1. Set minimum required options.
    The only two compilation variables that need to be changed before building OpenIFS are the location of the grib_api installation and the location of the LAPACK and BLAS libraries.
    e.g.

          


    Code Block
    export OIFS_GRIB_API_DIR=/home/me/ecmwf/grib_api

          
    
    export OIFS_LAPACK_LIB="/opt/apps/lapack/current/LP64 -llapack -lblas"

          
    
    fcm make -f fcmcfg/oifs.cfg



    Would override the values of these variables in the FCM config files. In this example, FCM would use the x86_64-gnu-noopt.cfg build as this is the default specified in the oifs.cfg file (in the oifs/make/fcmcfg directory).

  2. Changing compiler and compiler options.
    In this example, the build type is changed and the choice of underlying fortran compiler is altered along with some compiler options:

    Code Block
          
    export OIFS_COMP=gnu

          
    
    export OIFS_BUILD=opt

          
    
    export OIFS_GRIB_DIR=/opt/local/ecmwf/grib_api_xe6

          
    
    export OIFS_LAPACK_LIB="-L/opt/apps/scal/lib -llapack -lblas"

          
    
    export OIFS_FC="mpif90 --fc=crayftn"

          
    
    export OIFS_FFLAGS="-g -O1 -m64 -convert big-endian"


    In this example, the compiler has been changed although FCM will still use the x86_64-gnu-opt.cfg configuration file. This might be because a user wants to temporarily try a different compiler. However, it's recommended that each compiler has its own set of .cfg files rather than alter it this way.

    Another example is where an optimized build is required but the optimization level is dropped to -O1 instead of -O2.

Changing options per file

...