source: LMDZ.3.3/trunk/create_make_gcm @ 319

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

Les compilations des programmes principaux se font toutes avec F90 dans le
makefile (branche principale)
LF

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 6.9 KB
RevLine 
[2]1#!/bin/sh
2#set -xv
3machine=`hostname`
4os=`uname`
5gcm=`pwd`
6libf=$gcm/libf
7libo=$gcm/libo
8CRAY=0
9if [ "$machine" = "atlas" -o "$machine" = "etoile" -o "$machine" = "axis" ] ; then
10  CRAY=1
11fi
[168]12XNEC=0
13if [ "$machine" = "rhodes" ] ; then
14  XNEC=1
15fi
16VPP=0
17if [ "$machine" = "nymphea0" ] ; then
18  VPP=1
19fi
[2]20#
21echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
22echo "# Definitions de Macros pour Make"
23echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
24echo
25echo "# Repertoires :"
26echo
27echo "GCM     = "$gcm
28if [ "$CRAY" = '0' ] ; then
29   echo "MACHINE = sun4"
30fi
31echo 'LIBF    = $(GCM)/libf'
32if [ "$CRAY" = '0' ] ; then
33#   echo 'LIBO    = $(GCM)/libo/$(MACHINE)'
34   echo 'LIBO    = $(LIBOGCM)/$(MACHINE)'
35else
36   echo 'LIBO    = $(GCM)/libo'
37fi
38#echo 'LOCAL_DIR=$(GCM)'
39#echo $localdir
40echo "LOCAL_DIR=`echo $localdir`"
41echo 'BIBIO    = $(LIBF)/bibio'
42echo "FILTRE   = filtre"
43echo "PHYS  = "
44echo "DYN  = dyn "
45echo 'LIBPHY = $(LIBO)/libphy$(PHYS).a'
46echo 'DIRMAIN=dyn$(DIM)d'
47echo 'RM=rm'
48echo
49echo "OPLINK = "
50echo
51echo '# Les differentes librairies pour l"edition des liens:'
52echo
[168]53if [ "$XNEC" = '1' ] ; then
54  echo 'dyn3d      = $(LIBO)/libsxdyn3d.a $(LIBO)/libsx$(FILTRE).a'
55  echo 'dyn2d      = $(LIBO)/libsxdyn2d.a'
56  echo 'dyn1d      = $(LIBO)/libsxdyn1d.a'
57  echo 'L_DYN      = -lsxdyn$(DIM)d'
58  echo 'L_FILTRE   = -lsx$(FILTRE)'
59  echo 'L_PHY = -lsxphy$(PHYS) '
60  echo 'L_BIBIO    = -lsxbibio'
61  echo 'L_ADJNT    ='
62else
63  echo 'dyn3d      = $(LIBO)/libdyn3d.a $(LIBO)/lib$(FILTRE).a'
64  echo 'dyn2d      = $(LIBO)/libdyn2d.a'
65  echo 'dyn1d      = $(LIBO)/libdyn1d.a'
66  echo 'L_DYN      = -ldyn$(DIM)d'
67  echo 'L_FILTRE   = -l$(FILTRE)'
68  echo 'L_PHY = -lphy$(PHYS) '
69  echo 'L_BIBIO    = -lbibio'
70  echo 'L_ADJNT    ='
71fi
[2]72echo
73echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
74echo "# Option de compilation FORTRAN"
75echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
76echo
77   echo 'COMPILE = $(F77) $(OPTIM) $(INCLUDE) -c'
78   echo 'COMPILE90 = $(F90) $(OPTIM90) $(INCLUDE) -c'
[168]79   echo 'COMPTRU90 = $(F90) $(OPTIMTRU90) $(INCLUDE) -c'
80   echo "LINK    = $LINK"
81   echo "AR      = $AR"
[2]82echo
83echo
84echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
85echo "# Creation des differents executables"
86echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
87echo
88echo "# Executables:"
89echo "# ------------"
90echo
91echo "PROG = code"
92echo
93echo 'main : $(DYN) bibio phys $(OPTION_DEP) '
94echo '  cd $(LIBO) ; $(RANLIB) lib*.a ; cd $(GCM) ;\'
95echo '  cd $(LOCAL_DIR); \'
[307]96echo '  $(COMPILE90) $(LIBF)/$(DIRMAIN)/$(PROG).F -o $(PROG).o ; \'
[2]97if [ "$CRAY" = '0' ] ; then
98echo '  $(LINK) $(PROG).o -L$(LIBO) $(L_DYN) $(L_ADJNT) $(L_FILTRE) $(L_PHY) $(L_BIBIO) $(L_DYN) $(OPLINK) $(OPTION_LINK) -o $(LOCAL_DIR)/$(PROG).e ; $(RM) $(PROG).o '
99else
100echo '  $(LINK) $(PROG).o -L$(LIBO) $(L_DYN) $(L_ADJNT) $(L_FILTRE) $(L_PHY) $(L_BIBIO) $(OPLINK) $(OPTION_LINK) -o $(LOCAL_DIR)/$(PROG).e ; $(RM) $(PROG).o '
101fi
102echo
103echo 'dyn : $(LIBO)/libdyn$(DIM)d.a $(FILTRE)$(DIM)d'
104echo
105echo 'phys : $(LIBPHY)'
106echo
107echo 'bibio : $(LIBO)/libbibio.a'
108echo
109echo 'adjnt : $(LIBO)/libadjnt.a'
110echo
111echo '$(FILTRE)3d : $(LIBO)/lib$(FILTRE).a'
112echo
113echo '$(FILTRE)2d :'
114echo
115echo '$(FILTRE)1d :'
116echo
117echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
118echo "# Contenu des differentes bibliotheques"
119echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
120echo
121echo
122cd $libf >/dev/null 2>&1
123for diri in ` ls `
124do
125   if [ -d $diri ] ; then
[168]126   if [ "`ls $diri/*.F`" != "" ] || [ "`ls $diri/*.F90`" != "" ]  ; then 
[2]127      cd $diri >/dev/null 2>&1
128      echo
129      listlib=""
130      for i in `ls *.F`
131      do
132         fili=`basename $i .F`
133         test=` (  head $i | grep '      PROGRAM' ) `
134         if [ "$test" = "" ] ; then 
135            listlib=$listlib" "$fili
136         fi
137      done
[168]138      for i in `ls *.F90`
139      do
140         fili=`basename $i .F90`
141         test=` (  head $i | grep '      PROGRAM' ) `
142         if [ "$test" = "" ] ; then
143            listlib=$listlib" "$fili
144         fi 
145      done
[2]146#
147      echo
148      echo
149      echo "#======================================================================="
150      echo "# Contenu de la bibliotheque correspondant au Directory "$diri
151      echo "#======================================================================="
152      echo
153      for fili in $listlib
154      do
155         echo '$(LIBO)/lib'$diri".a : " '$(LIBO)/lib'$diri".a("$fili".o)"
156         echo
157      done
158      echo '.PRECIOUS   : $(LIBO)/lib'$diri'.a'
159      echo
160      echo
161      echo "# Compilation des membres de la bibliotheque lib"$diri".a"
162      echo
163      for fili in $listlib
164      do
[168]165         if [ -f $fili.F90 ] ; then
166           trufile=$fili.F90
167         else
168           trufile=$fili.F
169         fi
170         F90=0 ; egrep -i '^ *use ' $trufile > /dev/null 2>&1 && F90=1
171                 egrep -i '^ *module ' $trufile > /dev/null 2>&1 && F90=1
172         str1='$(LIBO)/lib'$diri'.a('$fili'.o) : $(LIBF)/'$diri/$trufile
[2]173         [ "$fili" = "chem.subs" ] && str1=$str1' $(LIBF)/'$diri/chem.mods.F
[168]174         for stri in ` ( sed -n "/\#include/s/\#include//p" $trufile | sed 's/\"//g' ; egrep -i '^ *use ' $trufile | awk ' { print $2 } ' ) `
[2]175         do
[12]176            stri=`echo $stri | tr [A-Z] [a-z]`
[2]177            if [ -f $stri ] ; then
178               echo $str1 \\
179               str1='$(LIBF)/'$diri'/'$stri
180            else
[168]181               if [ -f $stri.F ] || [ -f $stri.F90 ] ; then
[2]182                  str1='$(LIBO)/lib'$diri'.a('$stri'.o)'
183               else
184                  for dirinc in dyn3d grid bibio
185                  do
186                     if [ -f ../$dirinc/$stri ] ; then
187                        echo $str1 \\
188                        str1='$(LIBF)/'`cd .. ; ls */$stri | head -1`
189                     fi
190                  done
191               fi
192            fi
193         done
194         echo $str1
195         if [ "$F90" -eq '0' ] ; then
[168]196           echo '       cd $(LOCAL_DIR); \'
197           echo '       $(COMPILE) $(LIBF)/'$diri'/'$trufile' ; \'
[2]198         else
[168]199           echo '       cd $(LOCAL_DIR); \'
200           if [ -f $fili.F90 ] ; then
201              echo '    $(COMPTRU90) $(LIBF)/'$diri'/'$trufile' ; \'
202           else
203              echo '    $(COMPILE90) $(LIBF)/'$diri'/'$trufile' ; \'
204           fi
205           MODU=0; egrep -i ' *module ' $trufile> /dev/null 2>&1 && MODU=1
[2]206            if [ "$MODU" -eq '1' -a "$CRAY" != '1' ] ; then
[172]207              if [ "$os" = 'UNIX_System_V' ] ; then
[2]208                echo '  cp $(MOD_LOC_DIR)/*.$(MOD_SUFFIX) $(LIBO)/ ; \'
209              else
210                echo '  mv $(MOD_LOC_DIR)/'$fili'.$(MOD_SUFFIX) $(LIBO)/'$fili'.$(MOD_SUFFIX) ; \'
211              fi
212            fi
213         fi
[168]214         if [ "$XNEC" -eq '1' ] ; then
215           echo '       sxar r $(LIBO)/libsx'$diri'.a '$fili'.o ; \'
216         fi
[2]217         echo ' $(AR) r $(LIBO)/lib'$diri'.a '$fili'.o ; $(RM) '$fili'.o ; \'
218         echo ' cd $(GCM)'
219         echo
220      done
221#       
222      echo
223   cd $libf
224   fi
225   fi
226done
Note: See TracBrowser for help on using the repository browser.