New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Fcheck_archfile.sh in branches/NERC/dev_r5518_GO6_CO2_cmip/NEMOGCM/TOOLS/COMPILE – NEMO

source: branches/NERC/dev_r5518_GO6_CO2_cmip/NEMOGCM/TOOLS/COMPILE/Fcheck_archfile.sh @ 9298

Last change on this file since 9298 was 6486, checked in by davestorkey, 8 years ago

Remove SVN keywords from UKMO/dev_r5518_GO6_package branch.

  • Property svn:executable set to *
File size: 5.1 KB
Line 
1#!/bin/bash
2#set -x
3set -o posix
4#set -u
5#set -e
6#+
7#
8# ==================
9# Fcheck_archfile.sh
10# ==================
11#
12# --------------------------
13# Check the compilation file
14# --------------------------
15#
16# SYNOPSIS
17# ========
18#
19# ::
20#
21#  $ Fcheck_archfile.sh
22#
23#
24# DESCRIPTION
25# ===========
26#
27#
28# Check the choice of the compiler.
29# Three cases : 
30#
31# - There was a previous choice
32# - A new one has be specified, we use this one
33# - No information, exit
34#
35# We use TOOLS/COMPILE/arch.fcm to see if something was chosen.
36#
37# EXAMPLES
38# ========
39#
40# ::
41#
42#  $ ./Fcheck_archfile.sh ARCHFILE CPPFILE COMPILER
43#
44#
45# TODO
46# ====
47#
48# option debug
49#
50#
51# EVOLUTIONS
52# ==========
53#
54# $Id: Fcheck_archfile.sh 4162 2013-11-07 10:19:49Z cetlod $
55#
56#
57#
58#   * creation
59#
60#-
61cpeval () 
62{
63    cat > $2 << EOF
64
65#==========================================================
66#    Automatically generated by Fcheck_archfile.sh from
67#    $1
68#==========================================================
69
70EOF
71    while read line 
72    do 
73   eval "echo \"$line\" >> $2"
74    done < $1
75}
76# cleaning related to the old version
77rm -f $( find ${COMPIL_DIR} -type l -name $1 -print )
78#
79if [ ${#3} -eq 0 ]; then # arch not specified
80    if [ ! -f ${COMPIL_DIR}/arch.history ]; then
81   echo "Warning !!!"
82   echo "NO compiler chosen"
83   echo "Try makenemo -h for help"
84   echo "EXITING..."
85   exit 1
86    else # use the arch file defined in arch.history
87   myarch=$( cat ${COMPIL_DIR}/arch.history )   
88   if [ ! -f $myarch ]; then
89       echo "Warning !!!"
90       echo "previously used arch file no more found:"
91       echo $myarch
92       echo "EXITING..."
93       exit 1
94   else
95       if [ -f ${COMPIL_DIR}/$1 ]; then
96      if [ "$2" != "nocpp" ] 
97      then
98          # has the cpp keys file been changed since we copied the arch file in ${COMPIL_DIR}?
99          mycpp=$( ls -l ${COMPIL_DIR}/$2 | sed -e "s/.* -> //" )
100          if [ "$mycpp" != "$( cat ${COMPIL_DIR}/cpp.history )" ]; then
101         echo $mycpp > ${COMPIL_DIR}/cpp.history
102         cpeval ${myarch} ${COMPIL_DIR}/$1
103          fi
104          # has the cpp keys file been updated since we copied the arch file in ${COMPIL_DIR}?
105          mycpp=$( find -L ${COMPIL_DIR} -cnewer ${COMPIL_DIR}/$1 -name $2 -print )
106          [ ${#mycpp} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1
107      fi
108      # has myarch file been updated since we copied it in ${COMPIL_DIR}?
109      myarchdir=$( dirname ${myarch} )
110      myarchname=$( basename ${myarch} )
111      myarch=$( find -L $myarchdir -cnewer ${COMPIL_DIR}/$1 -name $myarchname -print )
112      [ ${#myarch} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1
113       else
114      cpeval ${myarch} ${COMPIL_DIR}/$1
115       fi
116   fi
117    fi
118else
119    nb=$( find ${MAIN_DIR}/ARCH -name arch-${3}.fcm -print | wc -l )
120    if [ $nb -eq 0 ]; then # no arch file found
121   echo "Warning !!!"
122   echo "Compiler not existing"
123   echo "Try makenemo -h for help"
124   echo "EXITING..."
125   exit 1       
126    fi
127    if [ $nb -gt 1 ]; then # more than 1 arch file found
128   echo "Warning !!!"
129   echo "more than 1 arch file for the same compiler have been found"
130   find ${MAIN_DIR}/ARCH -name arch-${3}.fcm -print
131   echo "keep only 1"
132   echo "EXITING..."
133   exit 1       
134    fi
135    myarch=$( find ${MAIN_DIR}/ARCH -name arch-${3}.fcm -print )
136    # we were already using this arch file ?
137    if [ "$myarch" == "$( cat ${COMPIL_DIR}/arch.history )" ]; then
138   if [ -f ${COMPIL_DIR}/$1 ]; then
139       if [ "$2" != "nocpp" ] 
140       then
141      # has the cpp keys file been changed since we copied the arch file in ${COMPIL_DIR}?
142      mycpp=$( ls -l ${COMPIL_DIR}/$2 | sed -e "s/.* -> //" )
143      if [ "$mycpp" != "$( cat ${COMPIL_DIR}/cpp.history )" ]; then
144          echo $mycpp > ${COMPIL_DIR}/cpp.history
145          cpeval ${myarch} ${COMPIL_DIR}/$1
146      fi
147      # has the cpp keys file been updated since we copied the arch file in ${COMPIL_DIR}?
148      mycpp=$( find -L ${COMPIL_DIR} -cnewer ${COMPIL_DIR}/$1 -name $2 -print )
149      [ ${#mycpp} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1
150       fi
151       # has myarch file been updated since we copied it in ${COMPIL_DIR}?
152       myarch=$( find -L ${MAIN_DIR}/ARCH -cnewer ${COMPIL_DIR}/$1 -name arch-${3}.fcm -print )
153       [ ${#myarch} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1
154   else
155       cpeval ${myarch} ${COMPIL_DIR}/$1
156   fi
157    else
158   if [ "$2" != "nocpp" ] 
159   then
160       ls -l ${COMPIL_DIR}/$2 | sed -e "s/.* -> //" > ${COMPIL_DIR}/cpp.history
161   fi
162   echo ${myarch} > ${COMPIL_DIR}/arch.history
163   cpeval ${myarch} ${COMPIL_DIR}/$1
164    fi
165fi
166
167#- do we need xios library?
168if [ "$2" != "nocpp" ] 
169then
170    use_iom=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$2 | grep -c key_iomput )
171else
172    use_iom=0
173fi
174have_lxios=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$1 | grep -c "\-lxios" )
175if [[ ( $use_iom -eq 0 ) && ( $have_lxios -ge 1 ) ]]
176then
177    sed -e "s/-lxios//g" ${COMPIL_DIR}/$1 > ${COMPIL_DIR}/tmp$$
178    mv -f ${COMPIL_DIR}/tmp$$ ${COMPIL_DIR}/$1
179fi
180
181#- do we need oasis libraries?
182if [ "$2" != "nocpp" ] 
183then
184    use_oasis=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$2 | grep -c key_oasis3 )
185else
186    use_oasis=0
187fi
188for liboa in psmile.MPI1 mct mpeu scrip mpp_io
189do
190    have_liboa=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$1 | grep -c "\-l${liboa}" )
191    if [[ ( $use_oasis -eq 0 ) && ( $have_liboa -ge 1 ) ]]
192    then
193   sed -e "s/-l${liboa}//g" ${COMPIL_DIR}/$1 > ${COMPIL_DIR}/tmp$$
194   mv -f ${COMPIL_DIR}/tmp$$ ${COMPIL_DIR}/$1
195    fi
196done
197
Note: See TracBrowser for help on using the repository browser.