#!/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_rev="1786" ######################################################################### # 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) [ -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 ;; "-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 cd $install_dir #svn co --revision $xios_rev http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/trunk XIOS #XIOS 2.5 branch #svn co --revision $xios_rev http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/branchs/xios-2.5 XIOS svn co --revision $xios_rev http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS2/branches/xios-2.5 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 -ansi -std=c++03' >> 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