source: trunk/NEMOGCM/TOOLS/COMPILE/Fcheck_archfile.sh @ 3925

Last change on this file since 3925 was 3925, checked in by smasson, 8 years ago

trunk:compilation enhancements, bugfix of changeset r3922, see ticket #1117

  • 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.