source: LMDZ.3.3/branches/rel-LF/makegcm @ 238

Last change on this file since 238 was 238, checked in by lmdzadmin, 23 years ago

pb cross-compil
LF

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