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/2013/dev_LOCEAN_2013/NEMOGCM/TOOLS/COMPILE – NEMO

source: branches/2013/dev_LOCEAN_2013/NEMOGCM/TOOLS/COMPILE/Fcheck_archfile.sh @ 4148

Last change on this file since 4148 was 4148, checked in by cetlod, 10 years ago

merge in trunk changes between r3853 and r3940 and commit the changes, see ticket #1169

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 4.8 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 COMPILER
43#
44#
45# TODO
46# ====
47#
48# option debug
49#
50#
51# EVOLUTIONS
52# ==========
53#
54# $Id$
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      # has the cpp keys file been changed since we copied the arch file in ${COMPIL_DIR}?
97      mycpp=$( ls -l ${COMPIL_DIR}/$2 | sed -e "s/.* -> //" )
98      if [ "$mycpp" != "$( cat ${COMPIL_DIR}/cpp.history )" ]; then
99          echo $mycpp > ${COMPIL_DIR}/cpp.history
100          cpeval ${myarch} ${COMPIL_DIR}/$1
101      fi
102      # has the cpp keys file been updated since we copied the arch file in ${COMPIL_DIR}?
103      mycpp=$( find -L ${COMPIL_DIR} -cnewer ${COMPIL_DIR}/$1 -name $2 -print )
104      [ ${#mycpp} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1
105      # has myarch file been updated since we copied it in ${COMPIL_DIR}?
106      myarchdir=$( dirname ${myarch} )
107      myarchname=$( basename ${myarch} )
108      myarch=$( find -L $myarchdir -cnewer ${COMPIL_DIR}/$1 -name $myarchname -print )
109      [ ${#myarch} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1
110       else
111      cpeval ${myarch} ${COMPIL_DIR}/$1
112       fi
113   fi
114    fi
115else
116    nb=$( find ${MAIN_DIR}/ARCH -name arch-${3}.fcm -print | wc -l )
117    if [ $nb -eq 0 ]; then # no arch file found
118   echo "Warning !!!"
119   echo "Compiler not existing"
120   echo "Try makenemo -h for help"
121   echo "EXITING..."
122   exit 1       
123    fi
124    if [ $nb -gt 1 ]; then # more than 1 arch file found
125   echo "Warning !!!"
126   echo "more than 1 arch file for the same compiler have been found"
127   find ${MAIN_DIR}/ARCH -name arch-${3}.fcm -print
128   echo "keep only 1"
129   echo "EXITING..."
130   exit 1       
131    fi
132    myarch=$( find ${MAIN_DIR}/ARCH -name arch-${3}.fcm -print )
133    # we were already using this arch file ?
134    if [ "$myarch" == "$( cat ${COMPIL_DIR}/arch.history )" ]; then
135   if [ -f ${COMPIL_DIR}/$1 ]; then
136       # has the cpp keys file been changed since we copied the arch file in ${COMPIL_DIR}?
137       mycpp=$( ls -l ${COMPIL_DIR}/$2 | sed -e "s/.* -> //" )
138       if [ "$mycpp" != "$( cat ${COMPIL_DIR}/cpp.history )" ]; then
139      echo $mycpp > ${COMPIL_DIR}/cpp.history
140      cpeval ${myarch} ${COMPIL_DIR}/$1
141       fi
142       # has the cpp keys file been updated since we copied the arch file in ${COMPIL_DIR}?
143       mycpp=$( find -L ${COMPIL_DIR} -cnewer ${COMPIL_DIR}/$1 -name $2 -print )
144       [ ${#mycpp} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1
145       # has myarch file been updated since we copied it in ${COMPIL_DIR}?
146       myarch=$( find -L ${MAIN_DIR}/ARCH -cnewer ${COMPIL_DIR}/$1 -name arch-${3}.fcm -print )
147       [ ${#myarch} -ne 0 ] && cpeval ${myarch} ${COMPIL_DIR}/$1
148   else
149       cpeval ${myarch} ${COMPIL_DIR}/$1
150   fi
151    else
152   ls -l ${COMPIL_DIR}/$2 | sed -e "s/.* -> //" > ${COMPIL_DIR}/cpp.history
153   echo ${myarch} > ${COMPIL_DIR}/arch.history
154   cpeval ${myarch} ${COMPIL_DIR}/$1
155    fi
156fi
157
158#- do we need xios library?
159use_iom=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$2 | grep -c key_iomput )
160have_lxios=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$1 | grep -c "\-lxios" )
161if [[ ( $use_iom -eq 0 ) && ( $have_lxios -ge 1 ) ]]
162then
163    sed -e "s/-lxios//g" ${COMPIL_DIR}/$1 > ${COMPIL_DIR}/tmp$$
164    mv -f ${COMPIL_DIR}/tmp$$ ${COMPIL_DIR}/$1
165fi
166
167#- do we need oasis libraries?
168use_oasis=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$2 | grep -c key_oasis3 )
169for liboa in psmile.MPI1 mct mpeu scrip mpp_io
170do
171    have_liboa=$( sed -e "s/#.*$//" ${COMPIL_DIR}/$1 | grep -c "\-l${liboa}" )
172    if [[ ( $use_oasis -eq 0 ) && ( $have_liboa -ge 1 ) ]]
173    then
174   sed -e "s/-l${liboa}//g" ${COMPIL_DIR}/$1 > ${COMPIL_DIR}/tmp$$
175   mv -f ${COMPIL_DIR}/tmp$$ ${COMPIL_DIR}/$1
176    fi
177done
178
Note: See TracBrowser for help on using the repository browser.