source: trunk/LMDZ.GENERIC/makegcm_pgf90 @ 200

Last change on this file since 200 was 135, checked in by aslmd, 14 years ago

CHANGEMENT ARBORESCENCE ETAPE 2 -- NON COMPLET

  • Property svn:executable set to *
File size: 23.7 KB
Line 
1#!/bin/csh
2# $Header: /users/lmdz/cvsroot/LMDZ.3.3/makegcm,v 1.21 2001/07/04 08:41:44 lmdz Exp $
3#set verbose echo
4########################################################################
5# options par defaut pour la commande make
6########################################################################
7set dim="64x48x32"
8set physique=mars
9set phys="PHYS=$physique"
10set include='-I$(LIBF)/grid -I$(LIBF)/bibio -I.'
11set ntrac = 1
12set filtre=filtrez
13set grille=reg
14set dyntype="dyn"
15########################################################################
16# path a changer contenant les sources et les objets du modele
17########################################################################
18
19###### VERSION LMDZ.3.3
20# set LMDGCM=$HOME/LMDZ.3.3
21#
22
23#### If you want you can set environment variables here
24#setenv LMDGCM /d5/emlmd/test_universal/LMDZ.UCM.v0.2
25#setenv LIBOGCM $LMDGCM/libo
26#if ( `uname -m` == "x86_64" ) then
27## 64 bit machines
28#  setenv NCDFLIB /donnees/emlmd/netcdf64-4.0.1_pgi/lib
29#  setenv NCDFINC /donnees/emlmd/netcdf64-4.0.1_pgi/include
30#else
31#  setenv NCDFLIB /distrib/local/netcdf/pgi_32bits/lib
32#  setenv NCDFINC /distrib/local/netcdf/pgi_32bits/include
33#endif
34####
35
36setenv localdir "`pwd`"
37set MODIPSL=0
38echo $localdir | grep modipsl >& /dev/null
39if ( ! $status ) then
40  set MODIPSL=1
41  setenv LMDGCM $localdir
42  cd ../..
43  setenv LIBOGCM "`pwd`/lib"
44  cd $localdir
45  if ( `hostname` == rhodes ) then
46    set NCDFINC=`grep sxnec ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
47    set NCDFLIB=`grep sxnec ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
48  else
49    if ( `hostname` == nymphea0 ) then
50      set NCDFINC=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_INC|sed -e "s/^.* =//"`
51      set NCDFLIB=`grep fjvpp ../../util/AA_make.gdef| grep NCDF_LIB|sed -e 's/^.* =//'`
52    else
53      echo 'Probleme de definition des variables NCDFINC et NCDFLIB'
54    endif
55  endif
56else
57  if ( ! $?LMDGCM ) then
58    echo You must initialize the variable LMDGCM in your environnement
59    echo for instance: "setenv LMDGCM /usr/myself/supergcm" in .cshrc
60    exit
61  endif
62  if ( ! $?LIBOGCM ) then
63    set LIBOGCM=$LMDGCM/libo
64  endif
65  if ( ! $?NCDFLIB ) then
66    echo You must initialize the variable NCDFLIB in your environnement
67    echo for instance: "setenv NCDFLIB /usr/myself/netcdf" in .cshrc
68    exit
69  endif
70  if ( ! $?NCDFINC ) then
71    echo You must initialize the variable NCDFINC in your environnement
72    echo for instance: "setenv NCDFINC /usr/myself/netcdf" in .cshrc
73    exit
74  endif
75endif
76set model=$LMDGCM
77set libo=$LIBOGCM
78
79########################################################################
80#  Les differentes platformes reconnues
81########################################################################
82
83set HP=0
84set IBM=0
85set SUN=0
86set VPP=0
87set CRAY=0
88set DEC=0
89set LINUX=0
90set NEC=0
91set XNEC=0
92if ( `uname` == HP-UX ) then
93   set machine=HP
94   set HP=1
95else if (`uname` == UNIX_System_V ) then
96   set machine=VPP
97   set VPP=1
98else if (`uname` == SunOS ) then
99   set machine=SUN
100   set SUN=1
101else if ( `uname` == AIX ) then
102   set machine=IBM
103   set IBM=1
104else if ( `uname` == OSF1 ) then
105   set machine=ALPHA
106   set DEC=1
107else if ( `uname` == Linux ) then
108   set machine=LINUX
109   set LINUX=1
110else if ( `hostname` == atlas || `hostname` == axis  || `hostname` == etoile ) then
111   set machine=CRAY
112   set CRAY=1
113else if ( `uname` == SUPER-UX ) then
114   set machine=NEC
115   set NEC=1
116else if ( `hostname` == rhodes) then
117   set machine=XNEC
118   set XNEC=1
119else
120   echo Vous travaillez sur une machine non prevue par le reglement
121   exit
122endif
123
124# create $libo directory if it doesn't exist
125if ( ! -d $libo )  then
126   mkdir $libo
127endif
128
129if $VPP then
130set netcdf=netcdf_v
131else
132set netcdf=netcdf
133endif
134########################################################################
135#  Quelques initialisations de variables du shell.
136########################################################################
137
138set dyn=
139set opt_link=""
140set adjnt=""
141set opt_dep=""
142
143set optim90=""
144set oplink=""
145
146########################################################################
147#  Optimisations par defaut suivant les machines
148########################################################################
149
150echo "Optimisations par defaut suivant les machines"
151set libf=$model/libf
152#setenv localdir "LOCAL_DIR=`pwd`"
153#setenv localdir "`pwd`"
154cd $model
155if $CRAY then
156   set optim90="-Wp'-P' -DCRAY "'-p$(LIBO) -eiv '
157   set oplink="-Wl'-DSTACK=128 -f indef' -L$NCDFLIB -lnetcdf "
158   set mod_loc_dir=" "
159   set mod_suffix=" "
160else if $SUN then
161   set optim90=" -fast"
162   set optimtru90=" -fast -free"
163   set opt_link="-L$NCDFLIB -lnetcdf"
164   set mod_loc_dir=$localdir
165   set mod_suffix=mod
166else if $HP then
167else if $IBM then
168else if $VPP then
169   set optim90="$optim -X9 -w"
170   if $COUPLE then
171     set opt_link="-Wg,-c $IOIPSLDIR/liboasis2.4_mpi2.a /usr/lang/mpi2/lib64/libmpi.a /usr/lang/mpi2/lib64/libmp.a /usr/local/lib/lib64/libnetcdf_cc.a -L$IOIPSLDIR -lioipsl"
172     set oplink="-Wl,-t,-P,-dy "
173   else
174     set opt_link="-Wg,-c /usr/local/lib/lib64/libnetcdf_cc.a -L$IOIPSLDIR -lioipsl"
175     set oplink="-Wl,-t,-dy "
176   endif
177   set mod_loc_dir=$IOIPSLDIR
178   set mod_suffix=mod
179else if $DEC then
180else if $LINUX then
181   set optim90=" -fast"
182   set optimtru90=" -fast -c -Mfree "
183#   set opt_link=" -Mfree -L/usr/local/pgi/linux86/lib -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Wl,-Bstatic "
184# Ehouarn: there is no /usr/local/pgi/linux86/lib, but it doesn't matter
185#          also changed -Wl,-Bstatic to -Bstatic
186   set opt_link=" -Mfree -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Bstatic "
187   set mod_loc_dir=$localdir
188   set mod_suffix=mod
189else if $NEC then
190   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
191   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
192###   set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lioipsl  -L/u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v "
193   set opt_link=" -C hopt -float0 -ew -P static -L/SX/usr/local/lib  -lnetcdf_i8r8 "
194   set mod_loc_dir="."
195   set mod_suffix="mod"
196else if $XNEC then
197   set optim90=' -clear -R5 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
198   set optimtru90=' -clear -R5 -f4 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
199   if $MODIPSL then
200     if $COUPLE then
201       set opt_link="-L$IOIPSLDIR -lsxioipsl -loasis2.4_mpi2 -float0 -ew -P static -I$NCDFINC $NCDFLIB "
202     else
203       set opt_link="-L$IOIPSLDIR -lsxioipsl -float0 -ew -P static -I$NCDFINC $NCDFLIB "
204     endif
205     set mod_loc_dir="./"
206   else
207####     set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lsxioipsl -L /u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
208     set opt_link=" -C hopt -float0 -ew -P static -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
209     set mod_loc_dir="."
210   endif
211   set mod_suffix="mod"
212
213endif
214
215set nomlib=$machine
216
217# Impose distinct name for 64 bit Linux machines (to avoid mixing 32 and 64)
218if (`uname` == Linux && `uname -m` == "x86_64") then
219  set nomlib=${machine}64
220endif
221
222########################################################################
223# lecture des options de mymake
224########################################################################
225
226top:
227if ($#argv > 0) then
228    switch ($1:q)
229
230    case -h:
231
232########################################################################
233# Manuel en ligne
234########################################################################
235more <<eod
236
237
238makegcm [Options] prog
239
240
241
242
243Par default, la commande makegcm:
244---------------------------------
245
2461. compile une serie de sous programmes se trouvant dans des sous-repertoires
247de $LMDGCM/libf.
248Les sous programmes sont ensuite stokes sur dans des librairies FORTRAN
249sur $LIBOGCM.
250
2512. Ensuite, makegcm compile le programme prog.f se trouvant par default sur
252$LMDGCM/libf/dyn3d et effectue le lien avec l ensemble des librairies.
253
254La variable '$LMDGCM' doit etre initialisee dans votre .cshrc ou en dur
255dans la comande makegcm.
256
257La commande makegcm est faite pour permettre de gerer en parallele des
258versions differentes du modele, compilees avec des options de compilation
259et des dimensions differentes sans avoir a chaque fois a recompiler tout
260le modele.
261
262Les librairies FORTRAN sont stoquees sur le directory $LIBOGCM.
263
264
265OPTIONS:
266--------
267
268Les options suivantes peuvent etre definies soit par defaut en editant le
269"script" makegcm, soit en interactif:
270
271-d imxjmxlm  ou im, jm, et lm sont resp. le nombre de longitudes, latitudes
272             et couches verticales.
273
274-t ntrac   selectionne le nombre de traceur advectes par la dynamique.
275           Dans les versions courantes du modele terrestre on a par exemple
276           ntrac=2 pour l'eau vapeur et liquide
277
278             L'effet des options -d et -t est d'ecraser le fichier
279             $LMDGCM/libf/grid/dimensions.h
280             qui contient sous forme de 4 PARAMETER FORTRAN les 3 dimensions
281             de la grille horizontale im, jm, lm plus le nombre de traceurs
282             advectes passivement par la dynamique ntrac, par un nouveu fichier
283             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
284             Si ce fichier n'existe pas encore, il est cree par le script
285             $LMDGCM/libf/grid/dimension/makdim
286
287-p PHYS    pour selectionner le jeu de parametrisations physiques avec
288           lequel on veut compiler le modele.
289           Le modele sera alors compile en prenant les sources des
290           parametrisations physiques dans le repertoire:
291            $LMDGCM/libf/phyPHYS
292
293-g grille  selectionne le type de grille qu'on veut utiliser.
294           L'effet de cette option est d'ecraser le fichier
295           $LMDGCM/libf/grid/fxyprim.h
296           avec le fichier
297           $LMDGCM/libf/grid/fxy_grille.h
298           grille peut prendre les valeurs:
299           1. reg pour la grille reguliere
300           2. sin pour avoir des points equidistants en sinus de la latitude
301           3. new pour pouvoir zoomer sur une partie du globe
302
303-O "optimisation fortran" ou les optimisations fortran sont les options de la
304            commande f77
305
306-include path
307           Dans le cas ou on a dans des sous programmes des fichiers
308           #include (cpp) qui se trouve sur des repertoires non references
309           par defaut
310
311-adjnt     Pour compiler la l'adjoint du code dynamique
312
313-olddyn    To compile GCM with "old dynamics"
314
315-filtre  filtre
316           Pour choisir le filtre en longitude dans les regions polaires.
317           "filtre" correspond au nom d'un repertoire se trouvant sur
318           $LMDGCM/libf. Le filtre standard du modele est "filtrez" qui peut
319           etre utilise aussi bien pour une grille reguliere que pour une
320           grille zoomee en longitude.
321
322-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
323          Pour rajouter un lien avec les librairies FORTRAN
324          libfile1.a, libfile2.a ... se trouvant respectivement sur les
325          repertoires dir1, dir2 ...
326          Si dirn est un repertoire dont le chemin est automatique (comme
327          par exemple /usr/lib ...) il n'est pas besoin de specifier -Ldirn.
328
329Auteur: Frederic Hourdin  (hourdin@lmd.jussieu.fr)
330eod
331exit
332
333########################################################################
334# Lecture des differentes options
335########################################################################
336
337    case -d:
338        set dim=$2 ; shift ; shift ; goto top
339                       
340    case -O:
341        set optim90="$2" ; shift ; shift ; goto top
342
343     case -p
344        set physique="$2" ; set phys="PHYS=$physique" ; shift ; shift ; goto top
345
346     case -g
347        set grille="$2" ; shift ; shift ; goto top
348
349     case -t
350        set ntrac=$2 ; shift ; shift ; goto top
351
352     case -include
353        set include="$include -I$2" ; shift ; shift ; goto top
354
355     case -adjnt
356        set opt_dep="$opt_dep adjnt" ; set adjnt="-ladjnt -ldyn3d "
357
358     case -olddyn
359        set dyntype="olddyn" ; shift; goto top
360
361     case -filtre
362        set filtre=$2 ; shift ; shift ; goto top
363
364     case -link
365        set opt_link="$opt_link $2" ; shift ; shift ; goto top
366
367     case -debug
368        if $HP then
369           set optim90=" -g "
370        else if $SUN then
371           setenv PARALLEL 4
372           set optim90=" -g -C "
373           set optimtru90=" -g -C "
374        else if $CRAY then
375           set optim90="$optim90"" -G1 "
376        else if $LINUX then
377           set optim90="-g -Mbounds "
378        else
379           echo "pas d option debug predefinie pour cette machine"
380           exit
381        endif
382        shift ; goto top
383
384     default
385        set code="$1" ; shift ; goto top
386
387   endsw
388endif
389
390echo "apres les opts dim $dim"
391
392########################################################################
393# cas special sans physique
394########################################################################
395if ( "$physique" == 'nophys' ) then
396   set phys="L_PHY= LIBPHY="
397endif
398
399########################################################################
400# choix du nombre de traceur par defaut si il n'a pas ete choisi,
401# suivant la physique
402########################################################################
403
404if ( $ntrac == 0  ) then
405    if ( "$physique" == 'nophys' ) then
406        set ntrac=1
407    else if ( "$physique" == 'lmd' ) then
408        set ntrac=2
409    else if ( "$physique" == 'lmd_test_li' ) then
410        set ntrac=2
411    else if ( "$physique" == 'ec' ) then
412        set ntrac=1
413    else
414        set ntrac = 1
415    endif
416endif
417
418########################################################################
419#subtilites sur le nom de la librairie
420########################################################################
421
422\rm tmp ; touch tmp
423\rm tmp90 ; touch tmp90
424foreach i ( $optim90 )
425   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
426end
427set suf=
428foreach i ( `sort tmp | uniq ` )
429   set suf=$suf$i
430end
431if ( ! $IBM ) then
432   set nomlib="$nomlib$suf"
433endif
434if ( $DEC ) then
435   set nomlib=DEC
436endif
437
438# dimension
439
440echo "dimension avant sed $dim"
441if ( $IBM ) then
442   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
443   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
444else if ( $SUN || $XNEC ) then
445   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
446   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
447else
448#   set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`
449#   set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`
450     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
451     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
452endif
453
454# build final name of libraries directory:
455if ( "$dyntype" == "olddyn" ) then
456  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
457else
458  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
459endif
460
461# Append 'physique' type, if it is not mars, to nomlib
462if ( "$physique" != "mars" ) then
463  set nomlib=${nomlib}_${physique}
464endif
465
466## M-A-F nomlib trop long sur CRAY pour ar
467if ( $CRAY ) then
468    set nomlib=F90_${dim_}_t${ntrac}
469endif
470if ( $NEC || $XNEC ) then
471    set nomlib=F90_${dim_}_t${ntrac}
472endif
473
474echo "calcul de la dimension"
475set dimc=`echo $dim | wc -w`
476
477if ( "$dimc" == "2" ) then
478  set include="$include "'-I$(LIBF)/dyn2d '
479  set dimh=$dim
480else
481  if ( "$dyntype" == "olddyn" ) then
482    set include="$include "'-I$(LIBF)/olddyn3d '
483  else
484    set include="$include "'-I$(LIBF)/dyn3d '
485  endif
486  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
487endif
488echo "dimc is $dimc"
489
490########################################################################
491# path pour les #include
492########################################################################
493
494set include="$include -I$NCDFINC "
495echo $include
496
497########################################################################
498# Gestion des dimensions du modele.
499# on cree ou remplace le fichier des dimensions/nombre de traceur
500########################################################################
501
502cd $libf/grid
503if ( -f dimensions.h ) then
504  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
505  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
506  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
507  echo "vous pouvez continuer en repondant oui."
508  echo "Voulez-vous vraiment continuer?"
509  if ( $< == "oui" ) then
510    #remove old dimensions.h file
511    \rm $libf/grid/dimensions.h
512  else
513    exit
514  endif
515endif
516
517# Build the appropriate 'dimensions.h' file
518cd dimension
519makdim $ntrac $dim
520# echo contents of dimensions.h to standard output
521cat $libf/grid/dimensions.h
522
523cd $LMDGCM
524# set path to objects directory
525set libo=$libo/$nomlib
526# create objects directory, if it doesn't exist
527if ( ! -d $libo )  then
528   mkdir $libo
529   cd $model
530endif
531
532########################################################################
533# Differentes dynamiques (3d, 2d, 1d)
534########################################################################
535
536set dimension=`echo $dim | wc -w`
537echo dimension $dimension dim $dim
538if ( $dimension == 1 ) then
539  echo pas de dynamique
540  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
541endif
542endif
543
544cd $model
545if ( $dimension == 3 ) then
546  cd libf/grid
547  \rm fxyprim.h
548  cp -p fxy_${grille}.h fxyprim.h
549endif
550
551######################################################################
552#   Traitement special pour le nouveau rayonnement de Laurent Li.
553######################################################################
554
555if ( -f $libf/phy$physique/raddim.h ) then
556  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
557    \rm $libf/phy$physique/raddim.h
558    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
559    echo $libf/phy$physique/raddim.$dimh.h
560    cat $libf/phy$physique/raddim.$dimh.h
561    cat $libf/phy$physique/raddim.h
562  else
563    echo On peut diminuer la taille de l executable en creant
564    echo le fichier $libf/phy$physique/raddim.$dimh.h
565    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
566  endif
567endif
568
569######################################################################
570# Gestion du filtre qui n'existe qu'en 3d.
571######################################################################
572
573# set filtre to 'oldfiltrez' if using -olddyn option
574if ( "$dyntype" == "olddyn" ) then
575  set filtre="oldfiltrez"
576endif
577
578if ( `expr $dimc \> 2` == 1 ) then
579   set filtre="FILTRE=$filtre"
580else
581   set filtre="FILTRE= L_FILTRE= "
582endif
583echo "MACRO FILTRE $filtre"
584
585echo "dimc $dimc"
586
587########################################################################
588#  Avant de lancer le make, on recree le makefile si necessaire
589########################################################################
590# c'est a dire dans 3 cas:
591# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
592#    derniere creation du makefile
593# 2. si le fichier contenant cette liste "liste_des_sources"
594#    n'existe pas.
595# 3. Si le makefile n'existe pas.
596########################################################################
597
598cd $model
599find libf -name '*.[Fh]' -print >! tmp77
600#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
601find libf -name '*.[Fh]90' -print >> tmp90
602
603if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
604     || `diff tmp90 liste_des_sources_f90 | wc -w` \
605     || ! -f makefile \
606     || ! -f liste_des_sources_f90 \
607     || ! -f liste_des_sources_f77 ) then
608        echo "les fichiers suivants ont ete crees ou detruits"
609        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
610        diff liste_des_sources_f77 tmp77
611        diff liste_des_sources_f90 tmp90
612        \cp tmp77 liste_des_sources_f77
613        \cp tmp90 liste_des_sources_f90
614        echo "On recree le makefile"
615        if ("$dyntype" == "olddyn") then
616          ./create_make_gcm olddyn3d grid bibio phy$physique >! tmp
617        else
618          ./create_make_gcm dyn3d grid bibio phy$physique >! tmp
619        endif
620        \mv tmp makefile
621        echo "Nouveau makefile cree."
622endif
623
624########################################################################
625#  Execution de la comande make
626########################################################################
627
628echo PHYSIQUE $phys
629echo dynamique $dyn $dimension
630echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
631echo PATH pour les fichiers INCLUDE $include
632echo OPLINK="$oplink"
633
634if $HP then
635   set f77='fort77 +OP'
636   set f90='jensaisrien'
637   set opt_link="$opt_link -lm"
638else  if $VPP then
639   set f77=frt
640   set f90=$f77
641else if $CRAY then
642   set f77=f90
643   set f90=f90
644else if $LINUX then
645   set f77=pgf90
646   set f90=pgf90
647else if $SUN then
648   set f77=f90
649   set f90=f90
650else if $NEC then
651   set f77=f90
652   set f90=f90
653else if $XNEC then
654   set f77=sxmpif90
655   set f90=sxmpif90
656else
657   set f77=f77
658   set f90=f90
659endif
660
661cd $model
662
663if $VPP then
664  set make="gmake RANLIB=ls"
665else if $CRAY then
666  set make="make RANLIB=ls"
667else if $NEC then
668  set make="make RANLIB=ls"
669else if $LINUX then
670  set make="make -k RANLIB=ranlib"
671else if $XNEC then
672  set make="/usr/local/bin/gmake RANLIB=ls"
673  set make="/usr/freeware/bin/gmake RANLIB=ls"
674else
675  set make="make RANLIB=ranlib"
676endif
677
678
679
680#
681# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
682# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
683#
684#if ($code == 'create_limit' && $SUN) then
685#   set link=f77
686#   set opt_link="-L$NCDFLIB -lnetcdf"
687#endif
688
689#if ($code == 'create_etat0' && $SUN) then
690#   if ( ! -f $libo/libdyn3d.a ) then
691#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
692#     \rm $libf/grid/dimensions.h
693#     exit
694#   endif
695#   set optim90=" -dalign -fixed "
696#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
697#   set link="$f90 $optim90"
698#   touch $LMDGCM/libf/dyn3d/startvar.F
699#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
700#endif
701
702#
703# Encore un test temporaire: probleme de compilation sur VPP
704# l'optimisation de startvar se passe mal
705#
706if ($code == 'create_etat0' && $VPP) then
707   if ( ! -f $libo/libdyn3d.a ) then
708     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
709     \rm $libf/grid/dimensions.h                                             
710     exit                       
711   endif
712   set optim90="$optim90"" -X9 -w"
713   set opt_link="-L$NCDFLIB -lnetcdf"
714   touch $LMDGCM/libf/dyn3d/startvar.F
715   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
716endif
717
718#
719# etat0_netcdf a besoin d'info de la physique
720# A revoir
721set include="$include"" -I$libf/phy$physique"
722
723
724#################################################################
725# Execution de la comande make... ENFIN!
726#################################################################
727
728if $VPP then
729  set optim90=" $optim90 -Am -M$libo"
730  set optimtru90="$optim90"
731else if $SUN then
732 set optim90=" $optim90 -M$libo"
733 set optimtru90=" $optimtru90 "
734else if $NEC then
735 set optim90=" $optim90 -I$libo "
736else if $XNEC then
737 set optim90=" $optim90 -I$libo "
738 set optimtru90=" $optimtru90 -I$libo "
739else if $LINUX then
740 set optim90="$optim90 -module $libo"
741 set optimtru90="$optimtru90 -module $libo"
742# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
743# set mod_loc_dir=$libo
744endif
745
746set link="$f90 $optim90"
747
748set ar=ar
749
750if $XNEC then
751  set link="sxld $opt_link"
752  set link="$f90 "
753#  set ar=sxar
754endif
755
756
757cd $localdir
758
759echo $make -f $LMDGCM/makefile \
760OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
761OPTIM90="$optim90" \
762OPTIMTRU90="$optimtru90" \
763INCLUDE="$include" \
764$filtre \
765LIBO=$libo \
766$dyn \
767$phys \
768DIM=$dimc \
769DYNTYPE="$dyntype" \
770L_ADJNT="$adjnt" \
771LOCAL_DIR="$localdir"  \
772F77="$f77" \
773F90="$f90" \
774OPLINK="$oplink" \
775LINK="$link" \
776GCM="$LMDGCM" \
777MOD_LOC_DIR=$mod_loc_dir \
778MOD_SUFFIX=$mod_suffix \
779AR=$ar \
780PROG=$code
781
782
783$make -f $LMDGCM/makefile \
784OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
785OPTIM90="$optim90" \
786OPTIMTRU90="$optimtru90" \
787INCLUDE="$include" \
788$filtre \
789LIBO=$libo \
790$dyn \
791$phys \
792DIM=$dimc \
793DYNTYPE="$dyntype" \
794L_ADJNT="$adjnt" \
795LOCAL_DIR="$localdir"  \
796F77="$f77" \
797F90="$f90" \
798OPLINK="$oplink" \
799LINK="$link" \
800GCM="$LMDGCM" \
801MOD_LOC_DIR=$mod_loc_dir \
802MOD_SUFFIX=$mod_suffix \
803AR=$ar \
804PROG=$code
805
806\rm $libf/grid/dimensions.h
Note: See TracBrowser for help on using the repository browser.