source: LMDZ.3.3/branches/rel-LF/create_make_gcm @ 306

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

Les compilations des programmes principaux se font toutes avec F90 dans
le makefile
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
Line 
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
12XNEC=0
13if [ "$machine" = "rhodes" ] ; then
14  XNEC=1
15fi
16VPP=0
17if [ "$machine" = "nymphea0" ] ; then
18  VPP=1
19fi
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
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
72echo
73echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
74echo "# Option de compilation FORTRAN"
75echo "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
76echo
77   echo 'COMPILE = $(F77) $(OPTIM) $(INCLUDE) -c'
78   echo 'COMPILE90 = $(F90) $(OPTIM90) $(INCLUDE) -c'
79   echo 'COMPTRU90 = $(F90) $(OPTIMTRU90) $(INCLUDE) -c'
80   echo "LINK    = $LINK"
81   echo "AR      = $AR"
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); \'
96echo '  $(COMPILE90) $(LIBF)/$(DIRMAIN)/$(PROG).F -o $(PROG).o ; \'
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
126   if [ "`ls $diri/*.F`" != "" ] || [ "`ls $diri/*.F90`" != "" ]  ; then 
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
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
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
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
173         [ "$fili" = "chem.subs" ] && str1=$str1' $(LIBF)/'$diri/chem.mods.F
174         for stri in ` ( sed -n "/\#include/s/\#include//p" $trufile | sed 's/\"//g' ; egrep -i '^ *use ' $trufile | awk ' { print $2 } ' ) `
175         do
176            stri=`echo $stri | tr [A-Z] [a-z]`
177            if [ -f $stri ] ; then
178               echo $str1 \\
179               str1='$(LIBF)/'$diri'/'$stri
180            else
181               if [ -f $stri.F ] || [ -f $stri.F90 ] ; then
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
196           echo '       cd $(LOCAL_DIR); \'
197           echo '       $(COMPILE) $(LIBF)/'$diri'/'$trufile' ; \'
198         else
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
206            if [ "$MODU" -eq '1' -a "$CRAY" != '1' ] ; then
207              if [ "$os" = 'UNIX_System_V' ] ; then
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
214         if [ "$XNEC" -eq '1' ] ; then
215           echo '       sxar r $(LIBO)/libsx'$diri'.a '$fili'.o ; \'
216         fi
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.