[8] | 1 | #!/bin/ksh |
---|
| 2 | #set -xv |
---|
| 3 | #- |
---|
| 4 | echo "This script must be run while in the modipsl/modeles/OPA directory" |
---|
| 5 | cd WORK |
---|
| 6 | pwd |
---|
| 7 | #MODEL_LIB=../../../lib/libopa.a |
---|
| 8 | #MODEL_LIB=`grep MODEL_LIB AA_make.ldef | sed 's/ //g' | sed 's/MODEL_LIB=//g' ` |
---|
| 9 | liste_cle=$(egrep '^# *if[!( &]*def|^# *elif' *.[Fh] *.[Fh]90 | grep key_ | sed 's/||/\ |
---|
| 10 | /' | sed 's/\&\&/\ |
---|
| 11 | /' | sed 's/^.*key_/key_/' | sed 's/ *[) ] *$//' | sort -u ) |
---|
| 12 | #- |
---|
| 13 | #- |
---|
| 14 | #- 3) Ecriture du AA_make |
---|
| 15 | #- |
---|
| 16 | #- enteteFait_AA_make |
---|
| 17 | #- |
---|
| 18 | cat > tampon <<end |
---|
| 19 | # |
---|
| 20 | .SUFFIXES: .f90 .F90 .F |
---|
| 21 | # |
---|
| 22 | # Target |
---|
[127] | 23 | all: diroce \$(EXEC_BIN) |
---|
[8] | 24 | @cp SRC_FILE_LIST.temp SRC_FILE_LIST |
---|
| 25 | @echo OPA model is OK |
---|
| 26 | # cleaning objects, libraries and executables |
---|
| 27 | clean: |
---|
| 28 | \$(RM) model.o \$(MODDIR)/oce/*.mod \$(MODEL_LIB) \$(SXMODEL_LIB) \$(EXEC_BIN) |
---|
| 29 | @echo OPA model \(.o .mod libraries and executables are removed\) |
---|
| 30 | # dependancies |
---|
[127] | 31 | diroce: |
---|
| 32 | @if [ ! -d ../../../lib/oce ] ; then mkdir ../../../lib/oce ; fi |
---|
| 33 | |
---|
[8] | 34 | \$(EXEC_BIN) : libioipsl key keyverif src_file_list \$(MODEL_LIB) \$(IOIPSL_LIB) model.o |
---|
| 35 | \$(F_L) \$(L_X) -o \$(EXEC_BIN) model.o \$(SXMODEL_LIB) \$(OASISMPI2_LIB) \$(IOIPSL_LIB) \$(NCDF_LIB) \$(LIBMPI) \$(LIBMP) |
---|
| 36 | |
---|
| 37 | libioipsl : |
---|
| 38 | (cd ../../IOIPSL/src ; \$(M_K) -f Makefile ) |
---|
| 39 | |
---|
| 40 | # main program |
---|
| 41 | model.o : model.f90 |
---|
| 42 | @\$(F_C) \$(F_O) -c model.f90 |
---|
| 43 | |
---|
| 44 | # if the make script is stopped, one doesn't destroy library |
---|
| 45 | .PRECIOUS : \$(MODEL_LIB) |
---|
| 46 | #-Q- sxnec .PRECIOUS : \$(SXMODEL_LIB) |
---|
[164] | 47 | #-Q- sx6nec .PRECIOUS : \$(SXMODEL_LIB) |
---|
[251] | 48 | #-Q- sxdkrz .PRECIOUS : \$(SXMODEL_LIB) |
---|
| 49 | #-Q- hpux .PRECIOUS : \$(SXMODEL_LIB) |
---|
[8] | 50 | |
---|
| 51 | # library dependancies |
---|
| 52 | \$(MODEL_LIB): \$(LIB_OBJ) |
---|
| 53 | @echo |
---|
| 54 | @echo La bibliotheque est a jour |
---|
| 55 | @echo |
---|
| 56 | |
---|
| 57 | # Rules |
---|
| 58 | .DEFAULTS: |
---|
| 59 | |
---|
| 60 | # rules for the .f90 files |
---|
| 61 | .f90.a : |
---|
| 62 | @\$(F_C) \$(P_P) \$(F_O) \\ |
---|
| 63 | #-Q- fjvpp -Z \$*.L \\ |
---|
| 64 | #-Q- sxnec -R2 \\ |
---|
[164] | 65 | #-Q- sx6nec -R2 \\ |
---|
[251] | 66 | #-Q- sxdkrz -R2 \\ |
---|
| 67 | #-Q- hpux -R2 \\ |
---|
[8] | 68 | #-Q- aix -qsource \\ |
---|
[356] | 69 | \$*.f90 || { if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi ; false ; exit ; } |
---|
[8] | 70 | #-Q- sxnec @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[164] | 71 | #-Q- sx6nec @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[251] | 72 | #-Q- sxdkrz @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
| 73 | #-Q- hpux @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[8] | 74 | @\$(A_C) \$(MODEL_LIB) \$*.o > /dev/null |
---|
| 75 | @\$(RM) \$*.[of] |
---|
| 76 | @if [ -f \$*.mod ] ; then mv \$*.mod \$(MODDIR)/oce ; fi |
---|
| 77 | #-Q- aix @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
| 78 | #-Q- linux @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
[309] | 79 | #-Q- osxxlf @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
[356] | 80 | @if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi |
---|
[8] | 81 | |
---|
| 82 | # rules for the .F90 files |
---|
| 83 | .F90.a : |
---|
| 84 | @\$(F_C) \$(P_P) \$(F_O) \\ |
---|
| 85 | #-Q- fjvpp -Z \$*.L \\ |
---|
| 86 | #-Q- sxnec -R2 \\ |
---|
[164] | 87 | #-Q- sx6nec -R2 \\ |
---|
[251] | 88 | #-Q- sxdkrz -R2 \\ |
---|
| 89 | #-Q- hpux -R2 \\ |
---|
[8] | 90 | #-Q- aix -qsource \\ |
---|
[356] | 91 | \$*.F90 || { if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi ; false ; exit ; } |
---|
[8] | 92 | #-Q- sxnec @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[164] | 93 | #-Q- sx6nec @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[251] | 94 | #-Q- sxdkrz @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
| 95 | #-Q- hpux @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[8] | 96 | @\$(A_C) \$(MODEL_LIB) \$*.o > /dev/null |
---|
| 97 | @\$(RM) \$*.[of] |
---|
| 98 | @if [ -f \$*.mod ] ; then mv \$*.mod \$(MODDIR)/oce ; fi |
---|
| 99 | #-Q- aix @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
| 100 | #-Q- linux @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
[309] | 101 | #-Q- osxxlf @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
[356] | 102 | @if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi |
---|
[8] | 103 | |
---|
| 104 | # rules for the .F files |
---|
| 105 | .F.a : |
---|
| 106 | @\$(F_C) \$(P_P) \$(F_O) \\ |
---|
| 107 | #-Q- fjvpp -Z \$*.L \\ |
---|
| 108 | #-Q- sxnec -R2 \\ |
---|
[164] | 109 | #-Q- sx6nec -R2 \\ |
---|
[251] | 110 | #-Q- sxdkrz -R2 \\ |
---|
| 111 | #-Q- hpux -R2 \\ |
---|
[8] | 112 | #-Q- aix -qsource \\ |
---|
[356] | 113 | \$*.F || { if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi ; false ; exit ; } |
---|
[8] | 114 | #-Q- sxnec @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[164] | 115 | #-Q- sx6nec @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[251] | 116 | #-Q- sxdkrz @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
| 117 | #-Q- hpux @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[8] | 118 | @\$(A_C) \$(MODEL_LIB) \$*.o > /dev/null |
---|
| 119 | @\$(RM) \$*.[of] |
---|
| 120 | @if [ -f \$*.mod ] ; then mv \$*.mod \$(MODDIR)/oce ; fi |
---|
| 121 | #-Q- aix @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
| 122 | #-Q- linux @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
[309] | 123 | #-Q- osxxlf @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
[356] | 124 | @if [ -f \$(PREF)\$*.L ] ; then mv \$(PREF)\$*.L \$(TMP) ; fi |
---|
[8] | 125 | |
---|
| 126 | # rules for the library from the .f files |
---|
| 127 | .f.a : |
---|
| 128 | @\$(F_C) \$(F_O) \\ |
---|
| 129 | #-Q- fjvpp -Z \$*.L \\ |
---|
| 130 | #-Q- sxnec -R2 \\ |
---|
[164] | 131 | #-Q- sx6nec -R2 \\ |
---|
[251] | 132 | #-Q- sxdkrz -R2 \\ |
---|
| 133 | #-Q- hpux -R2 \\ |
---|
[8] | 134 | #-Q- aix -qsource \\ |
---|
[356] | 135 | \$*.f|| { if [ -f \$(PREF)\$*.L ] ; then mv \$*.L \$(TMP) ; fi ; false ; exit ; } |
---|
[8] | 136 | #-Q- sxnec @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[164] | 137 | #-Q- sx6nec @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[251] | 138 | #-Q- sxdkrz @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
| 139 | #-Q- hpux @\$(A_X) \$(SXMODEL_LIB) \$*.o > /dev/null |
---|
[8] | 140 | @\$(A_C) \$(MODEL_LIB) \$*.o > /dev/null |
---|
| 141 | @\$(RM) -f \$*.o |
---|
| 142 | #-Q- aix @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
| 143 | #-Q- linux @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
[309] | 144 | #-Q- osxxlf @mv \$(PREF)\$*.lst \$(PREF)\$*.L |
---|
[356] | 145 | @if [ -f \$(PREF)\$*.L ] ; then mv \$*.L \$(TMP) ; fi |
---|
[8] | 146 | # |
---|
| 147 | end |
---|
| 148 | #- |
---|
| 149 | #- dependances |
---|
| 150 | #- |
---|
| 151 | exec 1> AA_make |
---|
| 152 | MAIN="model" |
---|
| 153 | echo '# $Header$' |
---|
| 154 | echo '# some variables' |
---|
| 155 | echo 'TMP = ../../../tmp' |
---|
| 156 | echo '#-Q- sxnec # Compiler options for the ORCA model - std' |
---|
[137] | 157 | echo '#-Q- sxnec F_O = -dw -Wf\"-A idbl4\" -sx5 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce' |
---|
[309] | 158 | echo '#-Q- sxnec L_X = $(L_O) $(L_C) -ftrace' |
---|
[164] | 159 | echo '#-Q- sx6nec # Compiler options for the ORCA model - std' |
---|
[251] | 160 | echo '#-Q- sx6nec F_O = -size_t64 -dw -Wf\"-A dbl4\" -sx6 -C vopt -Wf"-P nh" -Wf',-pvctl noassume loopcnt=10000 -L transform' -I $(MODDIR) -I $(MODDIR)/oce' |
---|
[206] | 161 | echo '#-Q- sx6nec F_O = -size_t64 -dw -Wf\"-A dbl4\" -sx6 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce' |
---|
[309] | 162 | echo '#-Q- sx6nec L_X = $(L_O) $(L_C) -ftrace' |
---|
[251] | 163 | echo '#-Q- sxdkrz # Compiler options for the ORCA model for the DKRZ SX6-NEC ' |
---|
| 164 | echo '#-Q- sxdkrz F_O = -ew -sx6 -ftrace -C vopt -Wf"-init stack=nan" -Wl"-f nan" -Wf"-P nh" -Wf"-pvctl noassume loopcnt=10000" -L transform -I $(MODDIR) -I $(MODDIR)/oce' |
---|
[309] | 165 | echo '#-Q- sxdkrz L_X = $(L_O) $(L_C) -ftrace' |
---|
[251] | 166 | echo '#-Q- hpux # Compiler options for the ORCA model for the ES' |
---|
| 167 | echo '#-Q- hpux # for super perfs!' |
---|
| 168 | echo '#-Q- hpux # F_O = $(FTRACE) -pi nest=5 line=10000 expin=Fmpplib.F -Wf,-A idbl4 -C hopt -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -I $(MODDIR) -I $(MODDIR)/oce' |
---|
| 169 | echo '#-Q- hpux # regular options!' |
---|
[368] | 170 | echo '#-Q- hpux F_O = $(FTRACE) -Wf,-A idbl4 -C vopt -P stack -Wf"-P nh" -Wf,-pvctl noassume loopcnt=10000 -L transform -Wf,-pvctl nomsg -Wf"-O nomsg" -I $(MODDIR) -I $(MODDIR)/oce' |
---|
[356] | 171 | echo '#-Q- hpux L_X = $(L_O)' |
---|
[309] | 172 | echo '#-Q- linux # Compiler options for the ORCA model (pgf version)' |
---|
| 173 | echo '#-Q- linux F_O = -Mlist -O3 -byteswapio -r8 -I $(MODDIR) -I$(MODDIR)/oce' |
---|
| 174 | echo '#-Q- linux L_X = -r8 -O3' |
---|
| 175 | echo '#-Q- lxiv8 # Compiler options for the ORCA model (ifort version)' |
---|
| 176 | echo '#-Q- lxiv8 F_O = -O3 -r8 -I $(MODDIR) -I$(MODDIR)/oce' |
---|
| 177 | echo '#-Q- lxiv8 L_X = -r8 -O3' |
---|
| 178 | echo '#-Q- g95 # Compiler options for the ORCA model (g95 version)' |
---|
| 179 | echo '#-Q- g95 F_O = -O3 -fno-second-underscore -r8 -funroll-all-loops -I $(MODDIR) -I $(MODDIR)/oce' |
---|
| 180 | echo '#-Q- g95 L_X = -r8 -O3' |
---|
[8] | 181 | echo '#-Q- aix # Compiler options for the ORCA model (aix version)' |
---|
[356] | 182 | echo '#-Q- aix F_O = -O3 -qsave -qrealsize=8 -qsuffix=f=f90 -qsuffix=cpp=F90 -qextname -qsource -q64 -qlargepage -qmaxmem=-1 -I $(MODDIR) -I $(MODDIR)/oce' |
---|
[368] | 183 | echo '#-Q- aix L_O = $(F_P) -q64 -O3' |
---|
[45] | 184 | echo '#-Q- aix L_X = $(L_O) $(L_C) ' |
---|
[309] | 185 | echo '#-Q- osxxlf # Compiler options for the ORCA model (osxxlf version)' |
---|
| 186 | echo '#-Q- osxxlf F_O = -O3 -qsave -qrealsize=8 -qsuffix=f=f90 -qsuffix=cpp=F90 -qsource -qmaxmem=-1 -I $(MODDIR) -I $(MODDIR)/oce' |
---|
[368] | 187 | echo '#-Q- osxxlf L_X = -qrealsize=8 -O3' |
---|
[8] | 188 | |
---|
| 189 | echo 'PREF=' |
---|
| 190 | echo '#-Q- sxnec PREF=i.' |
---|
[164] | 191 | echo '#-Q- sx6nec PREF=i.' |
---|
[251] | 192 | echo '#-Q- sxdkrz PREF=i.' |
---|
| 193 | echo '#-Q- hpux PREF=i.' |
---|
[8] | 194 | echo '' |
---|
| 195 | # Write the cpp key list with one key by line |
---|
| 196 | echo 'KEY_LIST = \c' |
---|
| 197 | for i in ${liste_cle} |
---|
| 198 | do |
---|
| 199 | echo "\\" |
---|
| 200 | echo " $i \c" |
---|
| 201 | done |
---|
| 202 | |
---|
| 203 | echo '' |
---|
| 204 | echo '# .o file list in the library' |
---|
| 205 | echo 'LIB_OBJ = \c' |
---|
| 206 | # |
---|
| 207 | # allons chercher tous les .f du repertoire courant |
---|
| 208 | # construction de la liste des objets LIB_OBJ |
---|
| 209 | |
---|
| 210 | for i in `ls *.f` |
---|
| 211 | do |
---|
| 212 | bn=`basename $i .f` |
---|
| 213 | if [ "${bn}" != "${MAIN}" ] |
---|
| 214 | then |
---|
| 215 | echo "\\" |
---|
| 216 | echo " \$(MODEL_LIB)($bn.o)\c" |
---|
| 217 | fi |
---|
| 218 | done |
---|
| 219 | |
---|
| 220 | # allons chercher tous les .f90 du repertoire courant |
---|
| 221 | # construction de la liste des objets LIB_OBJ |
---|
| 222 | # one dependancy by line |
---|
| 223 | for i in `ls *.f90` |
---|
| 224 | do |
---|
| 225 | bn=`basename $i .f90` |
---|
| 226 | if [ "${bn}" != "${MAIN}" ] |
---|
| 227 | then |
---|
| 228 | echo "\\" |
---|
| 229 | echo " \$(MODEL_LIB)($bn.o)\c" |
---|
| 230 | fi |
---|
| 231 | done |
---|
| 232 | |
---|
| 233 | # allons chercher tous les .F90 du repertoire courant |
---|
| 234 | # construction de la liste des objets LIB_OBJ |
---|
| 235 | |
---|
| 236 | for i in `ls *.F90` |
---|
| 237 | do |
---|
| 238 | bn=`basename $i .F90` |
---|
| 239 | if [ "${bn}" != "${MAIN}" ] |
---|
| 240 | then |
---|
| 241 | echo "\\" |
---|
| 242 | echo " \$(MODEL_LIB)($bn.o)\c" |
---|
| 243 | fi |
---|
| 244 | done |
---|
| 245 | |
---|
| 246 | # allons chercher tous les .F du repertoire courant |
---|
| 247 | # construction de la liste des objets LIB_OBJ |
---|
| 248 | |
---|
| 249 | for i in `ls *.F` |
---|
| 250 | do |
---|
| 251 | bn=`basename $i .F` |
---|
| 252 | if [ "${bn}" != "${MAIN}" ] |
---|
| 253 | then |
---|
| 254 | echo "\\" |
---|
| 255 | echo " \$(MODEL_LIB)($bn.o)\c" |
---|
| 256 | fi |
---|
| 257 | done |
---|
| 258 | |
---|
| 259 | echo "" |
---|
| 260 | |
---|
| 261 | cat tampon |
---|
| 262 | rm tampon |
---|
| 263 | |
---|
| 264 | # |
---|
| 265 | for fic in `ls *.f90 *.F90 *.F ` |
---|
| 266 | do |
---|
| 267 | if [ "${fic}" != "${MAIN}.[Ff]" ] |
---|
| 268 | then |
---|
| 269 | i=0 |
---|
| 270 | j=0 |
---|
| 271 | dep="" |
---|
| 272 | inc="" |
---|
| 273 | inc2="" |
---|
| 274 | inc3="" |
---|
| 275 | luse0="" |
---|
| 276 | luse1="" |
---|
| 277 | luse2="" |
---|
| 278 | luse3="" |
---|
| 279 | # on cherche les includes type modele de glace LLN |
---|
| 280 | for inc in `sed -n 's/^[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $fic | sort -u` |
---|
| 281 | do |
---|
| 282 | dep="$dep\n$inc" |
---|
| 283 | done |
---|
| 284 | |
---|
| 285 | # on cherche les includes (et les includes des includes et ainsi de suite pour 3 niveaux max) |
---|
| 286 | for inc in `sed -n 's/^#[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $fic | sort -u` |
---|
| 287 | do |
---|
| 288 | j=1 |
---|
| 289 | dep="$dep\n$inc" |
---|
| 290 | for inc2 in `sed -n 's/^#[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $inc | sort -u` |
---|
| 291 | do |
---|
| 292 | dep="$dep\n$inc2" |
---|
| 293 | # on cherche les include dans le fichier deja include (3eme niveau! balaise!) |
---|
| 294 | for inc3 in `sed -n 's/^#[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $inc2 | sort -u` |
---|
| 295 | do |
---|
| 296 | dep="$dep\n$inc3" |
---|
| 297 | done |
---|
| 298 | done |
---|
| 299 | done |
---|
| 300 | |
---|
| 301 | # on cherche les USE dans les include |
---|
| 302 | for inc in `sed -n 's/^#[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $fic | sort -u` |
---|
| 303 | do |
---|
| 304 | for fuse0 in `sed -n 's/^[ ]*[uU][sS][eE] [ ]*\([^!,;]*\).*/\1/p' $inc | sort -u` |
---|
| 305 | do |
---|
| 306 | if [ $fuse0 != "ioipsl" ] |
---|
| 307 | then |
---|
| 308 | lfuse0=$fuse0.f90 |
---|
| 309 | [ -f $fuse0.F90 ] && lfuse0=$fuse0.F90 |
---|
| 310 | luse0="$luse0\n$lfuse0\n\$(MODEL_LIB)($fuse0.o)" |
---|
| 311 | fi |
---|
| 312 | done |
---|
| 313 | |
---|
| 314 | # on cherche aussi les USE dans les include des include on les ajoute a luse0 |
---|
| 315 | |
---|
| 316 | for inc2 in `sed -n 's/^#[ ]*[iI][nN][cC][lL][uU][dD][eE][ ]*\(['\''"]\)\([^'\''"]*\)\1.*/\2/p' $inc | sort -u` |
---|
| 317 | do |
---|
| 318 | for fuse0 in `sed -n 's/^[ ]*[uU][sS][eE] [ ]*\([^!,;]*\).*/\1/p' $inc2 | sort -u` |
---|
| 319 | do |
---|
| 320 | if [ $fuse0 != "ioipsl" ] |
---|
| 321 | then |
---|
| 322 | lfuse0=$fuse0.f90 |
---|
| 323 | [ -f $fuse0.F90 ] && lfuse0=$fuse0.F90 |
---|
| 324 | luse0="$luse0\n$lfuse0\n\$(MODEL_LIB)($fuse0.o)" |
---|
| 325 | fi |
---|
| 326 | done |
---|
| 327 | done |
---|
| 328 | done |
---|
| 329 | |
---|
| 330 | # on cherche les USE (et les USE des USE et ainsi de suite pour 3 niveaux max) |
---|
| 331 | for fuse1 in `sed -n 's/^[ ]*[uU][sS][eE] [ ]*\([^!,;]*\).*/\1/p' $fic | sort -u` |
---|
| 332 | do |
---|
| 333 | if [ $fuse1 != "ioipsl" ] |
---|
| 334 | then |
---|
| 335 | lfuse1=$fuse1.f90 |
---|
| 336 | [ -f $fuse1.F90 ] && lfuse1=$fuse1.F90 |
---|
| 337 | luse1="$luse1\n$lfuse1\n\$(MODEL_LIB)($fuse1.o)" |
---|
| 338 | for fuse2 in `sed -n 's/^[ ]*[uU][sS][eE] [ ]*\([^!,;]*\).*/\1/p' $lfuse1 | sort -u` |
---|
| 339 | do |
---|
| 340 | if [ $fuse2 != "ioipsl" ] |
---|
| 341 | then |
---|
| 342 | lfuse2=$fuse2.f90 |
---|
| 343 | [ -f $fuse2.F90 ] && lfuse2=$fuse2.F90 |
---|
| 344 | luse2="$luse2\n$lfuse2\n\$(MODEL_LIB)($fuse2.o)" |
---|
| 345 | # on cherche les USE dans le fichier deja USE (3eme niveau! balaise!) |
---|
| 346 | for fuse3 in `sed -n 's/^#[ ]*[uU][sS][eE] [ ]*\([^!,;]*\).*/\1/p' $lfuse2 | sort -u` |
---|
| 347 | do |
---|
| 348 | if [ $fuse3 != "ioipsl" ] |
---|
| 349 | then |
---|
| 350 | luse3="$luse3\n$lfuse3\n\$(MODEL_LIB)($fuse3.o)" |
---|
| 351 | fi |
---|
| 352 | done |
---|
| 353 | fi |
---|
| 354 | done |
---|
| 355 | fi |
---|
| 356 | done |
---|
| 357 | #- la variable dep contient l'ensemble des dependances mais peut-etre en double ou plus |
---|
| 358 | #- |
---|
| 359 | for depele in `echo $luse3 | sort -u` `echo $luse2 | sort -u` `echo $luse1 | sort -u` `echo $luse0 | sort -u` `echo $dep | sort -u` |
---|
| 360 | do |
---|
| 361 | [ ${i} = "0" ] && echo "\$(MODEL_LIB)(`echo $fic|awk -F. '{print $1}'`.o) : \c" |
---|
| 362 | echo "\\" |
---|
| 363 | echo " $depele \c" |
---|
| 364 | let i=i+1 # pour signaler le premier |
---|
| 365 | done |
---|
| 366 | |
---|
| 367 | #- |
---|
| 368 | #- on ajoute la dependance avec la librairie ioipsl si besoin cad si le source contient use ioipsl |
---|
| 369 | grep -i 'use *ioipsl' ${fic} >/dev/null && ( echo "\\" ; echo " ../../../lib/libioipsl.a \c") |
---|
| 370 | |
---|
| 371 | #- on ajoute la dependance avec KEY_CPP si il y a des include cpp |
---|
| 372 | if [ ${j} != "0" ] |
---|
| 373 | then |
---|
| 374 | echo "\\" |
---|
| 375 | echo " KEY_CPP \c" |
---|
| 376 | fi |
---|
| 377 | #- on finit la dependance avec le fichier lui-meme et on ecrit les regles de creation |
---|
| 378 | if [ ${i} != "0" ] |
---|
| 379 | then |
---|
| 380 | echo "\\" |
---|
| 381 | echo " $fic" |
---|
| 382 | fi |
---|
| 383 | fi |
---|
| 384 | echo $fic done >/dev/tty |
---|
| 385 | done |
---|
| 386 | echo '# key changing control' |
---|
| 387 | echo "key: " |
---|
| 388 | echo " @echo CHANGEMENT de CLES CPP oui/non ?" |
---|
| 389 | echo " -@if [ \"\`cat KEY_CPP\`\" != \"\$(P_P)\" ] ; then \\" |
---|
| 390 | echo " echo CPP options changed ; echo \"\$(P_P)\" > KEY_CPP ; fi " |
---|
| 391 | #- |
---|
| 392 | # |
---|
| 393 | # regle pour verifier les cles |
---|
| 394 | # EK novembre 2000 |
---|
| 395 | # adaptation : ED + MAF decembre 2000 |
---|
| 396 | # |
---|
| 397 | echo |
---|
| 398 | echo "keyverif:" |
---|
| 399 | echo ' @echo VERIFICATION DES CLES' |
---|
| 400 | echo ' @echo CLES UTILISEES : ' |
---|
| 401 | echo ' @for v in ` echo $(P_P) | sed -e s/-Wp,-D//g` ; \' |
---|
| 402 | echo ' do \' |
---|
| 403 | echo ' echo $$v ;\' |
---|
| 404 | echo ' w=`echo $$v | cut -c1-3` ; \' |
---|
| 405 | echo ' if [ $$w = `echo "key"` ] ; then \' |
---|
| 406 | echo ' r=n ; \' |
---|
| 407 | echo ' echo " $(KEY_LIST) " | (grep $$v >/dev/null 2>&1) || r=o ; \' |
---|
| 408 | echo ' if [ $$r != "n" ] ; then \' |
---|
| 409 | echo ' echo "UNKNOWN KEY" ;\' |
---|
| 410 | echo ' false ; \' |
---|
| 411 | echo ' exit ; \' |
---|
| 412 | echo ' fi \' |
---|
| 413 | echo ' fi \' |
---|
| 414 | echo ' done' |
---|
| 415 | # Checking if the number of routines have been changed |
---|
| 416 | echo '# Checking the number of routines' |
---|
| 417 | echo "src_file_list: " |
---|
| 418 | echo ' @echo CHECKING THE NUMBER AND NAMES OF SOURCE FILES ' |
---|
| 419 | echo ' @\$(RM) `ls | fgrep -v -f .patron` ' |
---|
[245] | 420 | echo ' @check=`grep OPA_SRC .config` ; \' |
---|
[210] | 421 | echo ' if [ -n "$$check" ] ; then \' |
---|
[240] | 422 | echo ' echo " use OPA_SRC files" ; \' |
---|
| 423 | echo ' ln -sf ../OPA_SRC/*.[Ffh]90 . ; \' |
---|
| 424 | echo ' ln -sf ../OPA_SRC/DYN/*.[Ffh]90 . ; \' |
---|
| 425 | echo ' ln -sf ../OPA_SRC/TRA/*.[Ffh]90 . ; \' |
---|
| 426 | echo ' ln -sf ../OPA_SRC/TRD/*.[Ffh]90 . ; \' |
---|
| 427 | echo ' ln -sf ../OPA_SRC/DIA/*.[Ffh]90 . ; \' |
---|
| 428 | echo ' ln -sf ../OPA_SRC/DOM/*.[Ffh]90 . ; \' |
---|
| 429 | echo ' ln -sf ../OPA_SRC/OBC/*.[Ffh]90 . ; \' |
---|
| 430 | echo ' ln -sf ../OPA_SRC/FLO/*.[Ffh]90 . ; \' |
---|
| 431 | echo ' ln -sf ../OPA_SRC/LDF/*.[Ffh]90 . ; \' |
---|
| 432 | echo ' ln -sf ../OPA_SRC/ZDF/*.[Ffh]90 . ; \' |
---|
| 433 | echo ' ln -sf ../OPA_SRC/SOL/*.[Ffh]90 . ; \' |
---|
| 434 | echo ' ln -sf ../OPA_SRC/DTA/*.[Ffh]90 . ; \' |
---|
| 435 | echo ' ln -sf ../OPA_SRC/SBC/*.[Ffh]90 . ; \' |
---|
[8] | 436 | echo ' fi ' |
---|
[240] | 437 | echo ' @check=`grep LIM_SRC .config` ; \' |
---|
[210] | 438 | echo ' if [ -n "$$check" ] ; then \' |
---|
[240] | 439 | echo ' echo " use LIM_SRC files" ; \' |
---|
| 440 | echo ' ln -sf ../LIM_SRC/*.[Ffh]90 . ; \' |
---|
[8] | 441 | echo ' fi ' |
---|
[271] | 442 | echo ' @check=`grep C1D_SRC .config` ; \' |
---|
| 443 | echo ' if [ -n "$$check" ] ; then \' |
---|
| 444 | echo ' echo " use C1D_SRC files" ; \' |
---|
| 445 | echo ' ln -sf ../C1D_SRC/*.[Ffh]90 . ; \' |
---|
| 446 | echo ' fi ' |
---|
[240] | 447 | echo ' @check=`grep TOP_SRC .config` ; \' |
---|
[346] | 448 | echo ' if [ -n "$$check" ] ; then \' |
---|
[240] | 449 | echo ' echo " use TOP_SRC files" ; \' |
---|
[210] | 450 | echo ' \$(RM) trcstp.F90 ; \' |
---|
| 451 | echo ' \$(RM) sms.F90 ; \' |
---|
[277] | 452 | echo ' \$(RM) initrc.F90 ; \' |
---|
[240] | 453 | echo ' ln -sf ../TOP_SRC/*.[Ffh]90 . ; \' |
---|
| 454 | echo ' ln -sf ../TOP_SRC/SMS/*.[Ffh] . ; \' |
---|
| 455 | echo ' ln -sf ../TOP_SRC/SMS/*.[Ffh]90 . ; \' |
---|
| 456 | echo ' ln -sf ../TOP_SRC/TRP/*.[Ffh]90 . ; \' |
---|
[210] | 457 | echo ' fi ' |
---|
[346] | 458 | echo ' @check=`grep OFF_SRC .config` ; \' |
---|
[210] | 459 | echo ' if [ -n "$$check" ] ; then \' |
---|
[346] | 460 | echo ' echo " use OFF_SRC files" ; \' |
---|
| 461 | echo ' ln -sf ../OFF_SRC/*.[Ffh]90 . ; \' |
---|
| 462 | echo ' ln -sf ../OFF_SRC/*/*.[Ffh]90 . ; \' |
---|
[210] | 463 | echo ' fi ' |
---|
[8] | 464 | echo ' @\$(RM) tmplist' |
---|
| 465 | echo ' @ls -1 | fgrep -v -f .patron >tmplist' |
---|
| 466 | echo ' @cmp tmplist SRC_FILE_LIST.temp || { echo some routines have been added or suppressed ; \' |
---|
| 467 | echo ' sdiff -s tmplist SRC_FILE_LIST.temp ; cp tmplist SRC_FILE_LIST.temp ; \' |
---|
| 468 | echo ' \$(RM) model.o \$(MODEL_LIB) \$(SXMODEL_LIB) \$(EXEC_BIN) ; \' |
---|
| 469 | echo ' echo "Rebuilding the AA_make files" ; \' |
---|
| 470 | echo ' cd .. ; ../UTIL/fait_AA_make ; echo " " ; \' |
---|
| 471 | echo ' echo "THE ins_make COMMAND in modipsl/util MUST BE RERUN PLEASE DO SO BEFORE gmake" ; \' |
---|
| 472 | echo ' echo "========================================== " ; \' |
---|
[206] | 473 | echo ' ../../util/ins_make ; echo " " ; false ; exit ; }' |
---|
[8] | 474 | |
---|