#!/bin/bash #set -x set -o posix #set -u #set -e #+ # # ================== # Fcheck_archfile.sh # ================== # # -------------------------- # Check the compilation file # -------------------------- # # SYNOPSIS # ======== # # :: # # $ Fcheck_archfile.sh # # # DESCRIPTION # =========== # # # Check the choice of the compiler. # Three cases : # # - There was a previous choice # - A new one has be specified, we use this one # - No information, exit # # We use TOOLS/COMPILE/arch.fcm to see if something was chosen. # # EXAMPLES # ======== # # :: # # $ ./Fcheck_archfile.sh ARCHFILE COMPILER # # # TODO # ==== # # option debug # # # EVOLUTIONS # ========== # # $Id$ # # # # * creation # #- cpeval () { cat > $2 << EOF #========================================================== # Automatically generated by Fcheck_archfile.sh from # $1 #========================================================== EOF while read line do eval "echo \"$line\" >> $2" done < $1 } # cleaning related to the old version myarch=$( find ${MAIN_DIR}/ARCH -type l -name arch-${3}.fcm -print ) [ ${#myarch} -ne 0 ] && rm -f $myarch # if [ ${#3} -eq 0 ]; then # arch not specified if [ ! -f ${COMPIL_DIR}/arch.history ]; then echo "Warning !!!" echo "NO compiler chosen" echo "Try makenemo -h for help" echo "EXITING..." exit 1 else # use the arch file defined in arch.history myarch=$( cat ${COMPIL_DIR}/arch.history ) if [ ! -f $myarch ]; then echo "Warning !!!" echo "previously used arch file no more found:" echo $myarch echo "EXITING..." exit 1 else if [ -f ${COMPIL_DIR}/$1 ]; then myarchdir=$( dirname ${myarch} ) myarchname=$( basename ${myarch} ) # have the cpp keys been updated since we copy the arch file in ${COMPIL_DIR}? mycpp=$( find -L ${COMPIL_DIR} -cnewer ${COMPIL_DIR}/$1 -name $2 -print ) [ ${#mycpp} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1 # has myarch been updated since we copy it in ${COMPIL_DIR}? myarch=$( find -L $myarchdir -cnewer ${COMPIL_DIR}/$1 -name $myarchname -print ) [ ${#myarch} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1 else cpeval ${myarch} ${COMPIL_DIR}/$1 fi fi fi else myarch=$( find ${MAIN_DIR}/ARCH -name arch-${3}.fcm -print ) if [ ${#myarch} -gt 0 ]; then # the arch file specified by the use exists # we were already using this arch file if [ "$myarch" == "$( cat ${COMPIL_DIR}/arch.history )" ]; then if [ -f ${COMPIL_DIR}/$1 ]; then # have the cpp keys been updated since we copy the arch file in ${COMPIL_DIR}? mycpp=$( find -L ${COMPIL_DIR} -cnewer ${COMPIL_DIR}/$1 -name $2 -print ) [ ${#mycpp} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1 # has myarch been updated since we copy it in ${COMPIL_DIR}? myarch=$( find -L ${MAIN_DIR}/ARCH -cnewer ${COMPIL_DIR}/$1 -name arch-${3}.fcm -print ) [ ${#myarch} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1 else cpeval ${myarch} ${COMPIL_DIR}/$1 fi else echo ${myarch} > ${COMPIL_DIR}/arch.history cpeval ${myarch} ${COMPIL_DIR}/$1 fi else echo "Warning !!!" echo "Compiler not existing" echo "Try makenemo -h for help" echo "EXITING..." exit 1 fi fi #- do we need xios library? use_iom=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$2 | grep -c key_iomput ) have_lxios=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$1 | grep -c "\-lxios" ) if [[ ( $use_iom -eq 0 ) && ( $have_lxios -ge 1 ) ]] then sed -e "s/-lxios//g" ${COMPIL_DIR}/$1 > ${COMPIL_DIR}/tmp$$ mv -f ${COMPIL_DIR}/tmp$$ ${COMPIL_DIR}/$1 fi #- do we need oasis libraries? use_oasis=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$2 | grep -c key_oasis3 ) for liboa in psmile.MPI1 mct mpeu scrip mpp_io do have_liboa=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$1 | grep -c "\-l${liboa}" ) if [[ ( $use_oasis -eq 0 ) && ( $have_liboa -ge 1 ) ]] then sed -e "s/-l${liboa}//g" ${COMPIL_DIR}/$1 > ${COMPIL_DIR}/tmp$$ mv -f ${COMPIL_DIR}/tmp$$ ${COMPIL_DIR}/$1 fi done