#!/bin/bash ######################################################################### # Defaults ######################################################################### hostname=`hostname` install_dir=$(pwd) netcdf_home="/usr/local/netcdf" hdf5_home="/usr/local/hdf5" if [ -d /usr/lib64/openmpi ] ; then mpi_home="/usr/lib64/openmpi" else mpi_home="/usr" fi arch="local" #xios_branch="trunk" xios_branch="2.6" #xios_rev="HEAD" xios_rev="2568" ######################################################################### # Options ######################################################################### while (($# > 0)) do case $1 in "-h") cat <<........fin $0 [ -prefix path ] where (path) to install (default: $install_dir) [ -netcdf path ] top directory of the netcdf library (default: $netcdf_home) [ -hdf5 path ] top directory of the hdf5 library (default: $hdf5_home) [ -MPI path ] top directory of the MPI library (default: $mpi_home) [ -branch branch] XIOS branch trunk|2.5|2.6 (default: $xios_branch) [ -rev number ] XIOS revision (default: $xios_rev) [ -arch ARCH ] Use ARCH file (provided by XIOS) (default: make/use a local arch file) ........fin exit ;; "-prefix") install_dir=$2 ; shift ; shift ;; "-netcdf") netcdf_home=$2 ; shift ; shift ;; "-hdf5" ) hdf5_home=$2 ; shift ; shift ;; "-MPI") mpi_home=$2 ; shift ; shift ;; "-branch") xios_branch=$2 ; shift ; shift ;; "-rev") xios_rev=$2 ; shift ; shift ;; "-arch") arch=$2 ; shift ; shift ;; *) echo "Error, bad argument $1" ; $0 -h ; exit esac done # Install directory (get full path) mkdir -p $install_dir install_dir=$(cd $install_dir ; pwd -P ) # Download XIOS case $xios_branch in "trunk") xios_http="http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/trunk" ;; "2.5") xios_http="http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/branchs/xios-2.5" ;; "2.6") xios_http="http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS2/branches/xios-2.6" ;; *) echo "Error, bad argument for -branch ! Did not expect $xios_branch" ; exit ;; esac cd $install_dir svn co --revision $xios_rev $xios_http XIOS # Make arch files, if necesary: if [ "$arch" = "local" ] ; then cd $install_dir/XIOS/arch # arch-local.env echo 'export MPI_LIB="-L'${mpi_home}'/lib -lmpi"' > arch-local.env echo '' >> arch-local.env echo 'export NETCDFC='${netcdf_home} >> arch-local.env echo 'export NETCDFC_LIB=$NETCDFC/lib' >> arch-local.env echo 'export NETCDFC_INC=$NETCDFC/include' >> arch-local.env echo '' >> arch-local.env echo 'export NETCDFF='${netcdf_home} >> arch-local.env echo 'export NETCDFF_LIB=$NETCDFF/lib' >> arch-local.env echo 'export NETCDFF_INC=$NETCDFF/include' >> arch-local.env echo '' >> arch-local.env echo 'export NETCDFCXX='${netcdf_home} >> arch-local.env echo 'export NETCDFCXX_LIB=$NETCDFCXX/lib' >> arch-local.env echo 'export NETCDFCXX_INC=$NETCDFCXX/include' >> arch-local.env # arch-local.fcm echo '%CCOMPILER '${mpi_home}'/bin/mpicc' > arch-local.fcm echo '%FCOMPILER '${mpi_home}'/bin/mpif90' >> arch-local.fcm echo '%LINKER '${mpi_home}'/bin/mpif90' >> arch-local.fcm echo '' >> arch-local.fcm if [ ${hostname:0:5} = cicla ] ; then echo '%BASE_CFLAGS -w -ansi' >> arch-local.fcm else echo '%BASE_CFLAGS -w -std=c++11 -D__XIOS_EXCEPTION' >> arch-local.fcm fi echo '%PROD_CFLAGS -O3 -D BOOST_DISABLE_ASSERTS' >> arch-local.fcm echo '%DEV_CFLAGS -g -O2' >> arch-local.fcm echo '%DEBUG_CFLAGS -g -DBZ_DEBUG' >> arch-local.fcm echo '' >> arch-local.fcm echo '%BASE_FFLAGS -D__NONE__ -ffree-line-length-none' >> arch-local.fcm echo '%PROD_FFLAGS -O3' >> arch-local.fcm echo '%DEV_FFLAGS -g -O2' >> arch-local.fcm echo '%DEBUG_FFLAGS -g' >> arch-local.fcm echo '' >> arch-local.fcm echo '%BASE_INC -D__NONE__' >> arch-local.fcm echo '%BASE_LD -lstdc++ -Wl,-rpath='${mpi_home}'/lib' >> arch-local.fcm echo '' >> arch-local.fcm echo '%CPP '${mpi_home}'/bin/mpicc -EP' >> arch-local.fcm echo '%FPP cpp -P' >> arch-local.fcm echo '%MAKE make' >> arch-local.fcm # arch-local.path echo 'NETCDF_INCDIR="-I${NETCDFC_INC} -I${NETCDFF_INC} -I${NETCDFCXX_INC} "' > arch-local.path echo 'NETCDF_LIBDIR="-L${NETCDFC_LIB} -L${NETCDFF_LIB} -L${NETCDFCXX_LIB} "' >> arch-local.path echo 'NETCDF_LIB="-lnetcdf -lnetcdff -lnetcdf_c++4"' >> arch-local.path echo 'HDF5_INCDIR="-I'${hdf5_home}'/include"' >> arch-local.path echo 'HDF5_LIBDIR="-L'${hdf5_home}'/lib"' >> arch-local.path echo 'HDF5_LIB="-lhdf5_hl -lhdf5 -lhdf5 -lz -lcurl"' >> arch-local.path fi # make XIOS cd $install_dir/XIOS ./make_xios --arch $arch --job 8 2>&1 | tee make_xios.out