Changeset 979 for trunk/LMDZ.COMMON/create_make_gcm
- Timestamp:
- Jun 5, 2013, 2:41:09 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/create_make_gcm
r814 r979 4 4 # 5 5 #set -xv 6 7 rm -f create_make_gcm.log 8 6 9 machine=`hostname` 7 10 os=`uname` … … 134 137 do 135 138 if [ -d $diri ] ; then 136 if [ "`ls $diri/*.F `" != "" ] || [ "`ls $diri/*.F90`" != "" ] ; then137 cd $diri >/dev/null 2>&1139 if [ "`ls $diri/*.F $diri/*/*.F`" != "" ] || [ "`ls $diri/*.F90 $diri/*/*.F90`" != "" ] ; then 140 # cd $diri >/dev/null 2>&1 138 141 echo 139 142 listlib="" 140 for i in `ls *.F` 141 do142 fili=`basename $i .F`143 # Liste des fichiers .F et .F90 n'etant pas des programmes principaux 144 for fili in `ls $diri/*.F $diri/*/*.F` 145 do 143 146 # Check if file is a routine or main program 144 147 # i.e: look for the "program" keword preceeded by leading spaces 145 test=` ( head $ i | grep -i '^ *program' ) `148 test=` ( head $fili | grep -i '^ *program' ) ` 146 149 if [ "$test" = "" ] ; then 147 150 # if it is not a main program, add it to the list … … 149 152 fi 150 153 done 151 for i in `ls *.F90` 152 do 153 fili=`basename $i .F90` 154 for fili in `ls $diri/*.F90 $diri/*/*.F90` 155 do 154 156 # Check if file is a routine or main program 155 157 # i.e. look for "program" keyword (with possibly some leading spaces) 156 test=` ( head $ i | grep -i '^ \{0,\}program' ) `158 test=` ( head $fili | grep -i '^ \{0,\}program' ) ` 157 159 if [ "$test" = "" ] ; then 158 160 # if it is not a main program, add it to the list … … 162 164 # 163 165 echo 166 echo $listlib >> create_make_gcm.log 164 167 echo 165 168 echo "#=======================================================================" … … 167 170 echo "#=======================================================================" 168 171 echo 169 for fili in $listlib 170 do 172 for trufile in $listlib 173 do 174 fili=`echo $trufile | awk -F/ ' { print $NF } ' | cut -d. -f1` 171 175 echo '$(LIBO)/lib'$diri".a : " '$(LIBO)/lib'$diri".a("$fili".o)" 172 176 echo … … 177 181 echo "# Compilation des membres de la bibliotheque lib"$diri".a" 178 182 echo 179 for fili in $listlib 180 do 181 if [ -f $fili.F90 ] ; then 182 trufile=$fili.F90 183 else 184 trufile=$fili.F 185 fi 183 for trufile in $listlib 184 do 185 # if [ -f $fili.F90 ] ; then 186 # trufile=$fili.F90 187 # else 188 # trufile=$fili.F 189 # fi 190 fili=`echo $trufile | awk -F/ ' { print $NF } ' | cut -d. -f1` 186 191 F90=0 ; egrep -i '^ *use ' $trufile > /dev/null 2>&1 && F90=1 187 192 egrep -i '^ *module ' $trufile > /dev/null 2>&1 && F90=1 188 193 egrep -i '#include*.inc ' $trufile > /dev/null 2>&1 && F90=1 189 str1='$(LIBO)/lib'$diri'.a('$fili'.o) : $(LIBF)/'$ diri/$trufile194 str1='$(LIBO)/lib'$diri'.a('$fili'.o) : $(LIBF)/'$trufile 190 195 [ "$fili" = "chem.subs" ] && str1=$str1' $(LIBF)/'$diri/chem.mods.F 191 for stri in ` ( sed -n "/\#include/s/\#include//p" $trufile | sed 's/\"//g' ; egrep -i '^ *use ' $trufile | sed -e 's/,/ /' | awk ' { print $2 } ' ) ` 192 do 193 194 196 197 ########################################################################## 198 # TRAITEMENT DES DEPENDANCES 195 199 # Differents cas de dependance correspondant a des include ou des 196 200 # use module. 197 201 # soit dans le repertoire local soit dans un autre. 198 199 stri=`echo $stri | tr [A-Z] [a-z]` 200 if [ -f $stri ] ; then 202 # Pour dyn3d, il faudrait remplacer la chaine de caractere par $DYN 203 # ou quelque chose du genre. 204 ########################################################################## 205 206 for stri in ` ( sed -e '/^[cC\!]/d' $trufile | sed -n "/\#include/s/\#include//p" | sed 's/\"//g' ; sed -e '/^[cC\!]/d' $trufile | egrep -i '^ *use ' | sed -e 's/,/ /' | awk ' { print $2 } ' ) ` 207 do 208 echo $trufile $fili $stri >> create_make_gcm.log 209 strj=`echo $stri | tr [A-Z] [a-z]` 210 str2="" 211 for dirinc in filtrez bibio grid dyn3d $diri $diri/*/ ; do 212 # Recherche dans l'ordre hierarchique inverse car seule la derniere 213 # ligne est conservee 214 if [ -f $dirinc/$stri ] ; then 215 str2='$(LIBF)/'$dirinc/$stri 216 elif [ -f $dirinc/$strj ] ; then 217 str2='$(LIBF)/'$dirinc/$stri 218 elif [ -f $dirinc/$strj.F90 ] || [ -f $dirinc/$strj.F ] ; then 219 strlib=`echo $dirinc | awk -F/ ' { print $1 } '` 220 str2='$(LIBO)/lib'$strlib'.a('$strj'.o)' 221 fi 222 done 223 if [ "$str2" = "" ] ; then 224 echo Warn: Include $diri $trufile $fili $stri pas trouve >> $gcm/create_make_gcm.log 225 elif [ "$str2" = "$str1" ] ; then 226 echo Warn: Include $diri $trufile $fili $stri $str1 trouve 2x >> $gcm/create_make_gcm.log 227 else 201 228 echo $str1 \\ 202 str1='$(LIBF)/'$diri'/'$stri 203 else 204 if [ -f $stri.F ] || [ -f $stri.F90 ] ; then 205 echo $str1 \\ 206 str1='$(LIBO)/lib'$diri'.a('$stri'.o)' 207 else 208 for dirinc in dyn3d grid bibio filtrez 209 do 210 if [ -f ../$dirinc/$stri ] ; then 211 echo $str1 \\ 212 str1='$(LIBF)/'`cd .. ; ls */$stri | head -1` 213 fi 214 if [ -f ../$dirinc/$stri.F90 ] ; then 215 echo $str1 \\ 216 str1='$(LIBO)/lib'$dirinc'.a('$stri'.o)' 217 fi 218 done 219 fi 229 str1=$str2 220 230 fi 221 done 231 done # Fin de la boucle sur les dependances et ecriture de la derniere 222 232 echo $str1 223 233 # Compile in LIBO directory; and before compiling, remove … … 227 237 if [ "$F90" -eq '0' ] ; then 228 238 ## Fixed Form Fortran 77 229 echo ' $(COMPILE) $(LIBF)/'$ diri'/'$trufile' ; \'239 echo ' $(COMPILE) $(LIBF)/'$trufile' ; \' 230 240 else 231 241 ## Fortran 90 232 242 if [ -f $fili.F90 ] ; then 233 243 ## Free Form 234 echo ' $(COMPTRU90) $(LIBF)/'$ diri'/'$trufile' ; \'244 echo ' $(COMPTRU90) $(LIBF)/'$trufile' ; \' 235 245 else 236 echo ' $(COMPILE90) $(LIBF)/'$ diri'/'$trufile' ; \'246 echo ' $(COMPILE90) $(LIBF)/'$trufile' ; \' 237 247 fi 238 248 fi
Note: See TracChangeset
for help on using the changeset viewer.