source: LMDZ.3.3/trunk/makegcm @ 172

Last change on this file since 172 was 172, checked in by lmdz, 23 years ago

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