source: trunk/mars/makegcm_g95 @ 101

Last change on this file since 101 was 38, checked in by emillour, 14 years ago

Ajout du modè Martien (mon LMDZ.MARS.BETA, du 28/01/2011) dans le rértoire mars, pour pouvoir suivre plus facilement les modifs.
EM

  • Property svn:executable set to *
File size: 23.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
14set dyntype="dyn"
15########################################################################
16# path a changer contenant les sources et les objets du modele
17########################################################################
18
19#### If you want you can set environment variables here (instead of
20####  relying on the C-shell environment variables)
21# default LMDGCM to where makegcm script is located:
22#setenv LMDGCM "`dirname $0`"
23# You may set LIBOGCM to something else; otherwise we default to:
24#setenv LIBOGCM $LMDGCM/libo
25## NetCDF Libraries: what follows is OK for LMD 32 and 64bit Linux Machines
26#if ( `uname -m` == "x86_64" ) then
27## 64 bit machines
28#  setenv NCDFLIB /donnees/emlmd/netcdf64-4.0.1_g95/lib
29#  setenv NCDFINC /donnees/emlmd/netcdf64-4.0.1_g95/include
30#else
31#  setenv NCDFLIB /donnees/emlmd/netcdf-4.0.1_g95/lib
32#  setenv NCDFINC /donnees/emlmd/netcdf-4.0.1_g95/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# Ehouarn 'g95' compiler
182   set optim="-O3 -fstatic -funroll-loops "
183   set optim90=" -O3 -fstatic -funroll-loops "
184   set optimtru90=" -O3 -fstatic -funroll-loops "
185#   set opt_link=" -Mfree -L/usr/local/pgi/linux86/lib -lpgf90 -lpgftnrtl -lpghpf -lpghpf2 -L$NCDFLIB -lnetcdf -Wl,-Bstatic "
186# Ehouarn: there is no /usr/local/pgi/linux86/lib, but it doesn't matter
187#          also changed -Wl,-Bstatic to -Bstatic
188   set opt_link=" -L$NCDFLIB -lnetcdf "
189   set mod_loc_dir=$localdir
190   set mod_suffix=mod
191else if $NEC then
192   set optim90=' -clear -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
193   set optimtru90=' -clear -f4 -C hopt -float0 -ew -P static -Wf,"-pvctl fullmsg noassume "'
194###   set opt_link=" -C hopt -float0 -ew -P static -L$IOIPSLDIR -lioipsl  -L/u/rech/psl/rpsl003/IOIPSL -lnetcdf_i8r8_v "
195   set opt_link=" -C hopt -float0 -ew -P static -L/SX/usr/local/lib  -lnetcdf_i8r8 "
196   set mod_loc_dir="."
197   set mod_suffix="mod"
198else if $XNEC then
199   set optim90=' -clear -R5 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
200   set optimtru90=' -clear -R5 -f4 -C vopt -float0 -ew -P static -Wf,"-pvctl loopcnt=40000 fullmsg noassume "'
201   if $MODIPSL then
202     if $COUPLE then
203       set opt_link="-L$IOIPSLDIR -lsxioipsl -loasis2.4_mpi2 -float0 -ew -P static -I$NCDFINC $NCDFLIB "
204     else
205       set opt_link="-L$IOIPSLDIR -lsxioipsl -float0 -ew -P static -I$NCDFINC $NCDFLIB "
206     endif
207     set mod_loc_dir="./"
208   else
209####     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"
210     set opt_link=" -C hopt -float0 -ew -P static -I$NCDFINC -L/SX/usr/local/lib -lnetcdf_i8r8"
211     set mod_loc_dir="."
212   endif
213   set mod_suffix="mod"
214
215endif
216
217# Ehouarn: add 'g95' string to pathname
218set nomlib=${machine}_g95
219
220# Impose distinct name for 64 bit Linux machines (to avoid mixing 32 and 64)
221if (`uname` == Linux && `uname -m` == "x86_64") then
222  set nomlib=${machine}64_g95
223endif
224
225########################################################################
226# lecture des options de mymake
227########################################################################
228
229top:
230if ($#argv > 0) then
231    switch ($1:q)
232
233    case -h:
234
235########################################################################
236# Manuel en ligne
237########################################################################
238more <<eod
239
240
241makegcm [Options] prog
242
243
244The makegcm script:
245-------------------
246
2471. compiles a series of subroutines located in the $LMDGCM/libf
248 sub-directories.
249 The objects are then stored in the libraries in $LIBOGCM.
250
2512. then, makegcm compiles program prog.f located by default in
252$LMDGCM/libf/dyn3d and makes the link with the libraries.
253
254Environment Variables '$LMDGCM' and '$LIBOGCM'
255 must be set as environment variables or directly
256 in the makegcm file.
257
258The makegcm command is used to control the different versions of the model
259 in parallel, compiled using the compilation options
260 and the various dimensions, without having to recompile the whole model.
261
262The FORTRAN libraries are stored in directory $LIBOGCM.
263
264
265OPTIONS:
266--------
267
268The following options can either be defined by default by editing the
269makegcm "script", or in interactive mode:
270
271-d imxjmxlm  where im, jm, and lm are the number of longitudes,
272             latitudes and vertical layers respectively.
273
274-t ntrac   Selects the number of tracers present in the model
275
276             Options -d and -t overwrite file
277             $LMDGCM/libf/grid/dimensions.h
278             which contains the 3 dimensions of the
279             horizontal grid
280             im, jm, lm plus the number of tracers passively advected
281             by the dynamics ntrac,
282             in 4 PARAMETER FORTRAN format
283             with a new file:
284             $LMDGCM/libf/grid/dimension/dimensions.im.jm.lm.tntrac
285             If the file does not exist already
286             it is created by the script
287             $LMDGCM/libf/grid/dimension/makdim
288
289-p PHYS    Selects the set of physical parameterizations
290           you want to compile the model with.
291           The model is then compiled using the physical
292           parameterization sources in directory:
293            $LMDGCM/libf/phyPHYS
294
295-g grille  Selects the grid type.
296           This option overwrites file
297           $LMDGCM/libf/grid/fxyprim.h
298           with file
299           $LMDGCM/libf/grid/fxy_grille.h
300           the grid can take the following values:
301           1. reg - the regular grid
302           2. sin - to obtain equidistant points in terms of sin(latitude)
303           3. new - to zoom into a part of the globe
304
305-O "compilation options" set of fortran compilation options to use
306
307-include path
308           Used if the subroutines contain #include files (ccp) that
309           are located in directories that are not referenced by default.
310
311-adjnt     Compiles the adjoint model to the dynamical code.
312
313-olddyn    To compile GCM with "old dynamics"
314
315-filtre  filter
316           To select the longitudinal filter in the polar regions.
317           "filter" corresponds to the name of a directory located in
318           $LMDGCM/libf. The standard filter for the model is "filtrez"
319           which can be used for a regular grid and for a 
320           grid with longitudinal zoom.
321
322-link "-Ldir1 -lfile1 -Ldir2 -lfile2 ..."
323           Adds a link to FORTRAN libraries
324           libfile1.a, libfile2.a ...
325           located in directories dir1, dir2 ...respectively
326           If dirn is a directory with an automatic path
327           (/usr/lib ... for example)
328           there is no need to specify  -Ldirn.
329
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 optim="$2" ; set optim90="$2" ; set optimtru90="$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           ## for g95
378           set optim="-g -Wall -ftrace=full -fbounds-check"
379           set optim90="-g -Wall -ftrace=full -fbounds-check"
380           set optimtru90="-g -Wall -ftrace=full -fbounds-check"
381        else
382           echo "pas d option debug predefinie pour cette machine"
383           exit
384        endif
385        shift ; goto top
386
387     default
388        set code="$1" ; shift ; goto top
389
390   endsw
391endif
392
393echo "apres les opts dim $dim"
394
395########################################################################
396# cas special sans physique
397########################################################################
398if ( "$physique" == 'nophys' ) then
399   set phys="L_PHY= LIBPHY="
400endif
401
402########################################################################
403# choix du nombre de traceur par defaut si il n'a pas ete choisi,
404# suivant la physique
405########################################################################
406
407if ( $ntrac == 0  ) then
408    if ( "$physique" == 'nophys' ) then
409        set ntrac=1
410    else if ( "$physique" == 'lmd' ) then
411        set ntrac=2
412    else if ( "$physique" == 'lmd_test_li' ) then
413        set ntrac=2
414    else if ( "$physique" == 'ec' ) then
415        set ntrac=1
416    else
417        set ntrac = 1
418    endif
419endif
420
421########################################################################
422#subtilites sur le nom de la librairie
423########################################################################
424
425\rm tmp ; touch tmp
426\rm tmp90 ; touch tmp90
427foreach i ( $optim90 )
428   echo $i | sed -e 's/\"//g' -e "s/\'//g" -e 's/-//g' -e 's/://g' -e 's/=//g' -e 's/%//g' >> tmp
429end
430set suf=
431foreach i ( `sort tmp | uniq ` )
432   set suf=$suf$i
433end
434if ( ! $IBM ) then
435   set nomlib="$nomlib$suf"
436endif
437if ( $DEC ) then
438   set nomlib=DEC
439endif
440
441# dimension
442
443echo "dimension avant sed $dim"
444if ( $IBM ) then
445   set dim=`echo $dim | sed -en 's/[^0-9]/ /g'`
446   set dim_=`echo $dim | sed -en 's/[^0-9]/_/g'`
447else if ( $SUN || $XNEC ) then
448   set dim=`echo $dim | sed -e 's/[^0-9]/ /g'` 
449   set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
450else
451#   set dim=`echo $dim | sed -n -e 's/[^0-9]/ /gp'`
452#   set dim_=`echo $dim | sed -n -e 's/[^0-9]/_/gp'`
453     set dim=`echo $dim | sed -e 's/[^0-9]/ /g'`
454     set dim_=`echo $dim | sed -e 's/[^0-9]/_/g'`
455endif
456
457# build final name of libraries directory:
458if ( "$dyntype" == "olddyn" ) then
459  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}_olddyn
460else
461  set nomlib=${nomlib}_${dim_}_t${ntrac}_${grille}
462endif
463
464# Append 'physique' type, if it is not mars, to nomlib
465if ( "$physique" != "mars" ) then
466  set nomlib=${nomlib}_${physique}
467endif
468
469## M-A-F nomlib trop long sur CRAY pour ar
470if ( $CRAY ) then
471    set nomlib=F90_${dim_}_t${ntrac}
472endif
473if ( $NEC || $XNEC ) then
474    set nomlib=F90_${dim_}_t${ntrac}
475endif
476
477echo "calcul de la dimension"
478set dimc=`echo $dim | wc -w`
479
480if ( "$dimc" == "2" ) then
481  set include="$include "'-I$(LIBF)/dyn2d '
482  set dimh=$dim
483else
484  if ( "$dyntype" == "olddyn" ) then
485    set include="$include "'-I$(LIBF)/olddyn3d '
486  else
487    set include="$include "'-I$(LIBF)/dyn3d '
488  endif
489  set dimh=`echo $dim | awk ' { print $1 "." $2 } '`
490endif
491echo "dimc is $dimc"
492
493########################################################################
494# path pour les #include
495########################################################################
496
497set include="$include -I$NCDFINC "
498echo $include
499
500########################################################################
501# Gestion des dimensions du modele.
502# on cree ou remplace le fichier des dimensions/nombre de traceur
503########################################################################
504
505cd $libf/grid
506if ( -f dimensions.h ) then
507  echo "ATTENTION: vous etes sans doute en train de compiler le modele par ailleurs"
508  echo "Attendez que la premiere compilation soit terminee pour relancer la suivante."
509  echo "Si vous etes sur que vous ne compilez pas le modele par ailleurs,"
510  echo "vous pouvez continuer en repondant oui."
511  echo "Voulez-vous vraiment continuer?"
512  if ( $< == "oui" ) then
513    #remove old dimensions.h file
514    \rm -f $libf/grid/dimensions.h
515  else
516    exit
517  endif
518endif
519
520# Build the appropriate 'dimensions.h' file
521cd dimension
522./makdim $ntrac $dim
523# echo contents of dimensions.h to standard output
524cat $libf/grid/dimensions.h
525
526cd $LMDGCM
527# set path to objects directory
528set libo=$libo/$nomlib
529# create objects directory, if it doesn't exist
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 dim $dim
541if ( $dimension == 1 ) then
542  echo pas de dynamique
543  set dyn="L_DYN= DYN= L_FILTRE= DIRMAIN=phy$physique "
544endif
545endif
546
547cd $model
548if ( $dimension == 3 ) then
549  cd libf/grid
550  \rm fxyprim.h
551  cp -p fxy_${grille}.h fxyprim.h
552endif
553
554######################################################################
555#   Traitement special pour le nouveau rayonnement de Laurent Li.
556######################################################################
557
558if ( -f $libf/phy$physique/raddim.h ) then
559  if ( -f $libf/phy$physique/raddim.$dimh.h ) then
560    \rm $libf/phy$physique/raddim.h
561    cp -p $libf/phy$physique/raddim.$dimh.h $libf/phy$physique/raddim.h
562    echo $libf/phy$physique/raddim.$dimh.h
563    cat $libf/phy$physique/raddim.$dimh.h
564    cat $libf/phy$physique/raddim.h
565  else
566    echo On peut diminuer la taille de l executable en creant
567    echo le fichier $libf/phy$physique/raddim.$dimh.h
568    \cp -p $libf/phy$physique/raddim.defaut.h $libf/phy$physique/raddim.h
569  endif
570endif
571
572######################################################################
573# Gestion du filtre qui n'existe qu'en 3d.
574######################################################################
575
576# set filtre to 'oldfiltrez' if using -olddyn option
577if ( "$dyntype" == "olddyn" ) then
578  set filtre="oldfiltrez"
579endif
580
581if ( `expr $dimc \> 2` == 1 ) then
582   set filtre="FILTRE=$filtre"
583else
584   set filtre="FILTRE= L_FILTRE= "
585endif
586echo "MACRO FILTRE $filtre"
587
588echo "dimc $dimc"
589
590########################################################################
591#  Avant de lancer le make, on recree le makefile si necessaire
592########################################################################
593# c'est a dire dans 3 cas:
594# 1. si la liste des fichiers .F et .h a ete modifiee depuis la
595#    derniere creation du makefile
596# 2. si le fichier contenant cette liste "liste_des_sources"
597#    n'existe pas.
598# 3. Si le makefile n'existe pas.
599########################################################################
600
601cd $model
602find libf -name '*.[Fh]' -print >! tmp77
603#find libf -name '*.[Fh]' -exec egrep -i " *use *ioipsl" {} \; -print >! tmp90
604find libf -name '*.[Fh]90' -print >> tmp90
605
606if (    `diff tmp77 liste_des_sources_f77 | wc -w` \
607     || `diff tmp90 liste_des_sources_f90 | wc -w` \
608     || ! -f makefile \
609     || ! -f liste_des_sources_f90 \
610     || ! -f liste_des_sources_f77 ) then
611        echo "les fichiers suivants ont ete crees ou detruits"
612        echo "ou les fichiers suivants sont passes ou ne sont plus en Fortran 90"
613        diff liste_des_sources_f77 tmp77
614        diff liste_des_sources_f90 tmp90
615        \cp tmp77 liste_des_sources_f77
616        \cp tmp90 liste_des_sources_f90
617        echo "On recree le makefile"
618        if ("$dyntype" == "olddyn") then
619          ./create_make_gcm olddyn3d grid bibio aeronomars phy$physique >! tmp
620        else
621          ./create_make_gcm dyn3d grid bibio aeronomars phy$physique >! tmp
622        endif
623        \mv tmp makefile
624        echo "Nouveau makefile cree."
625endif
626
627########################################################################
628#  Execution de la comande make
629########################################################################
630
631echo PHYSIQUE $phys
632echo dynamique $dyn $dimension
633echo OPTIM90="$optim90" $filtre LIBO=$libo $dyn PHYS=$phys DIM=$dimc PROG=$code
634echo PATH pour les fichiers INCLUDE $include
635echo OPLINK="$oplink"
636
637if $HP then
638   set f77='fort77 +OP'
639   set f90='jensaisrien'
640   set opt_link="$opt_link -lm"
641else  if $VPP then
642   set f77=frt
643   set f90=$f77
644else if $CRAY then
645   set f77=f90
646   set f90=f90
647else if $LINUX then
648#   set f77=pgf90
649#   set f90=pgf90
650   set f77=g95
651   set f90=g95
652else if $SUN then
653   set f77=f90
654   set f90=f90
655else if $NEC then
656   set f77=f90
657   set f90=f90
658else if $XNEC then
659   set f77=sxmpif90
660   set f90=sxmpif90
661else
662   set f77=f77
663   set f90=f90
664endif
665
666cd $model
667
668if $VPP then
669  set make="gmake RANLIB=ls"
670else if $CRAY then
671  set make="make RANLIB=ls"
672else if $NEC then
673  set make="make RANLIB=ls"
674else if $LINUX then
675  set make="make -k RANLIB=ranlib"
676else if $XNEC then
677  set make="/usr/local/bin/gmake RANLIB=ls"
678  set make="/usr/freeware/bin/gmake RANLIB=ls"
679else
680  set make="make RANLIB=ranlib"
681endif
682
683
684
685#
686# les deux test suivants sont "temporaires" pour pallier des "faiblesses" du
687# compilateur fortran Sun: f90: SC4.0 11 Sep 1995 FORTRAN 90 1.1
688#
689#if ($code == 'create_limit' && $SUN) then
690#   set link=f77
691#   set opt_link="-L$NCDFLIB -lnetcdf"
692#endif
693
694#if ($code == 'create_etat0' && $SUN) then
695#   if ( ! -f $libo/libdyn3d.a ) then
696#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
697#     \rm $libf/grid/dimensions.h
698#     exit
699#   endif
700#   set optim90=" -dalign -fixed "
701#   set opt_link="-L$IOIPSLDIR -lioipsl  -L$NCDFLIB -lnetcdf"
702#   set link="$f90 $optim90"
703#   touch $LMDGCM/libf/dyn3d/startvar.F
704#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
705#endif
706
707#
708# Encore un test temporaire: probleme de compilation sur VPP
709# l'optimisation de startvar se passe mal
710#
711#if ($code == 'create_etat0' && $VPP) then
712#   if ( ! -f $libo/libdyn3d.a ) then
713#     echo "Priere de compiler gcm en premier pour des raisons d'optimisation"
714#     \rm $libf/grid/dimensions.h                                             
715#     exit                       
716#   endif
717#   set optim90="$optim90"" -X9 -w"
718#   set opt_link="-L$NCDFLIB -lnetcdf"
719#   touch $LMDGCM/libf/dyn3d/startvar.F
720#   touch $LMDGCM/libf/dyn3d/etat0_netcdf.F
721#endif
722
723#
724# etat0_netcdf a besoin d'info de la physique
725# A revoir
726set include="$include"" -I$libf/phy$physique"
727
728
729#################################################################
730# Execution de la comande make... ENFIN!
731#################################################################
732
733if $VPP then
734  set optim90=" $optim90 -Am -M$libo"
735  set optimtru90="$optim90"
736else if $SUN then
737 set optim90=" $optim90 -M$libo"
738 set optimtru90=" $optimtru90 "
739else if $NEC then
740 set optim90=" $optim90 -I$libo "
741else if $XNEC then
742 set optim90=" $optim90 -I$libo "
743 set optimtru90=" $optimtru90 -I$libo "
744else if $LINUX then
745# Ehouarn : adapt to g95
746 set optim="$optim -fmod=$libo"
747 set optim90="$optim90 -fmod=$libo"
748 set optimtru90="$optimtru90 -fmod=$libo"
749# Ehouarn: remove set mod_loc_dir def below; mod_loc_dir=$localdir (set above)
750# set mod_loc_dir=$libo
751endif
752
753set link="$f90 $optim90"
754
755set ar=ar
756
757if $XNEC then
758  set link="sxld $opt_link"
759  set link="$f90 "
760#  set ar=sxar
761endif
762
763
764cd $localdir
765
766echo $make -f $LMDGCM/makefile \
767OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
768OPTIM="$optim" \
769OPTIM90="$optim90" \
770OPTIMTRU90="$optimtru90" \
771INCLUDE="$include" \
772$filtre \
773LIBO=$libo \
774$dyn \
775$phys \
776DIM=$dimc \
777DYNTYPE="$dyntype" \
778L_ADJNT="$adjnt" \
779LOCAL_DIR="$localdir"  \
780F77="$f77" \
781F90="$f90" \
782OPLINK="$oplink" \
783LINK="$link" \
784GCM="$LMDGCM" \
785MOD_LOC_DIR=$mod_loc_dir \
786MOD_SUFFIX=$mod_suffix \
787AR=$ar \
788PROG=$code
789
790
791$make -f $LMDGCM/makefile \
792OPTION_DEP="$opt_dep" OPTION_LINK="$opt_link" \
793OPTIM="$optim" \
794OPTIM90="$optim90" \
795OPTIMTRU90="$optimtru90" \
796INCLUDE="$include" \
797$filtre \
798LIBO=$libo \
799$dyn \
800$phys \
801DIM=$dimc \
802DYNTYPE="$dyntype" \
803L_ADJNT="$adjnt" \
804LOCAL_DIR="$localdir"  \
805F77="$f77" \
806F90="$f90" \
807OPLINK="$oplink" \
808LINK="$link" \
809GCM="$LMDGCM" \
810MOD_LOC_DIR=$mod_loc_dir \
811MOD_SUFFIX=$mod_suffix \
812AR=$ar \
813PROG=$code
814
815\rm $libf/grid/dimensions.h
Note: See TracBrowser for help on using the repository browser.