source: trunk/WRF.COMMON/WRFV2/mars_lmd/makegcm_mpi @ 2756

Last change on this file since 2756 was 426, checked in by aslmd, 13 years ago

LMDZ.MARS: corrected wrong datafile default link. MESOSCALE: added 4 to 5 nests files. GRAPHICS: added geo files handling. LMDZ.GENERIC: replaced makegcm by a symboli link to makegcm_whateverversion.

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