/[MITgcm]/MITgcm/tools/genmake
ViewVC logotype

Diff of /MITgcm/tools/genmake

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1 by cnh, Wed Jul 8 15:24:05 1998 UTC revision 1.16 by adcroft, Fri Mar 24 19:28:46 2000 UTC
# Line 11  set allargs=( $argv ) Line 11  set allargs=( $argv )
11  while ($#allargs)  while ($#allargs)
12   set arg = $allargs[1]   set arg = $allargs[1]
13   switch ($arg)   switch ($arg)
14   case -makefile*:   case -makefile:
15     if ($arg == "-makefile") then     set mfile = ( Makefile )
16       set mfile = ( Makefile )     breaksw
17     else   case -makefile=*:
18       set mfile = ( `echo $arg | sed 's/-makefile=//' `)     set mfile = ( `echo $arg | sed 's/-makefile=//' `)
    endif  
19     breaksw     breaksw
20   case -platform:   case -platform:
21   case -platform=:   case -platform=:
# Line 31  while ($#allargs) Line 30  while ($#allargs)
30     echo "Enabling MPI options"     echo "Enabling MPI options"
31     set USEMPI     set USEMPI
32     breaksw     breaksw
33     case -jam:
34       set include_jam_libs
35       echo "Including paths to JAM libraries"
36       breaksw
37   case -help:   case -help:
38     echo "usage: $0 [-help] [-makefile[=...]] [-platform=...] [-mpi]"     echo "usage: $0 [-help] [-makefile[=...]] [-platform=...] [-mpi]"
39     exit     exit
# Line 43  while ($#allargs) Line 46  while ($#allargs)
46   endsw   endsw
47   shift allargs   shift allargs
48  end  end
49    
50  if ($?platform == 0) set platform = (`uname -p`)  if ($?platform == 0) then
51     set platform = (`uname`)
52    endif
53  if ($?mfile == 0) set mfile = ( Makefile.$platform )  if ($?mfile == 0) set mfile = ( Makefile.$platform )
54  set mach  = ( `uname -a` )  set mach  = ( `uname -a` )
55  echo Operating system: $mach  echo Operating system: $mach
# Line 91  endif Line 96  endif
96    
97  # Platform specific options  # Platform specific options
98  switch ($platform$USEMPI)  switch ($platform$USEMPI)
99    case alpha:    case OSF1:
100    case alpha+mpi:    case OSF1+mpi:
101      echo "Configuring for DEC Alpha"      echo "Configuring for DEC Alpha"
102      set CPP        = ( '/usr/bin/cpp -P' )      set CPP        = ( '/usr/bin/cpp -P' )
103      set DEFINES    = ( ${DEFINES}  '-DTARGET_DEC' )      set DEFINES    = ( ${DEFINES}  '-DTARGET_DEC -DWORDLENGTH=1' )
104      set KPP        = ( 'kapf' )      set KPP        = ( 'kapf' )
105        set KPPFILES   = ( 'main.F' )
106      set KFLAGS1    = ( '-scan=132 -noconc -cmp=' )      set KFLAGS1    = ( '-scan=132 -noconc -cmp=' )
107      set FC         = ( 'f77' )      set FC         = ( 'f77' )
108      set FFLAGS     = ( '-convert big_endian -r8 -extend_source -u -automatic -call_shared -notransform_loops -align dcommons -p1' )      set FFLAGS     = ( '-convert big_endian -r8 -extend_source -u -automatic -call_shared -notransform_loops -align dcommons' )
109      set FOPTIM     = ( '-O5 -fast -tune host -inline all' )      set FOPTIM     = ( '-O5 -fast -tune host -inline all' )
110      set NOOPTFLAGS = ( '-O0' )      set NOOPTFLAGS = ( '-O0' )
111      set LIBS       = ( '-lfmpi -lmpi -lkmp_osfp10 -pthread' )      set LIBS       = ( '-lfmpi -lmpi -lkmp_osfp10 -pthread' )
     set KPPFILES   = ( 'main.F' )  
112      set NOOPTFILES = ( 'barrier.F different_multiple.F load_external_fields.F')      set NOOPTFILES = ( 'barrier.F different_multiple.F load_external_fields.F')
113      set RMFILES    = ( '*.p.out' )      set RMFILES    = ( '*.p.out' )
114      breaksw      breaksw
115    case mips+mpi:    case IRIX64+mpi:
116      echo "Configuring for SGI Mips with MPI"      echo "Configuring for SGI Mips with MPI"
117      set DEFINES    = ( ${DEFINES} '-DTARGET_SGI' )      set DEFINES    = ( ${DEFINES} '-DTARGET_SGI -DWORDLENGTH=4' )
118      set INCLUDES   = ( '-I/usr/local/mpi/include' )      set INCLUDES   = ( '-I/usr/local/mpi/include' )
119      set FC         = ( 'mpif77' )      set FC         = ( 'mpif77' )
120      set LINK       = ( 'mpif77' )      set LINK       = ( 'mpif77' )
121      set FFLAGS     = ( '-extend_source -bytereclen -r10000' )      set FFLAGS     = ( '-extend_source -bytereclen -r10000 -mips4' )
122      set FOPTIM     = ( '-O3' )      set FOPTIM     = ( '-O3' )
123      set RMFILES    = ( 'rii_files' )      set RMFILES    = ( 'rii_files' )
124      breaksw      breaksw
125    case mips:    case IRIX64:
126      echo "Configuring for SGI Mips"      echo "Configuring for SGI Mips"
127      set DEFINES    = ( ${DEFINES} '-DTARGET_SGI' )      set DEFINES    = ( ${DEFINES} '-DTARGET_SGI -DWORDLENGTH=4' )
128      set INCLUDES   = ( '-I/usr/local/mpi/include' )      set INCLUDES   = ( '-I/usr/local/mpi/include' )
129      set FFLAGS     = ( '-extend_source -mp -mpio -bytereclen -r10000 -mips4' )      set FFLAGS     = ( '-extend_source -mp -mpio -bytereclen -r10000 -mips4' )
130      set FOPTIM     = ( '-O2' )      set FOPTIM     = ( '-O3' )
131      set NOOPTFLAGS = ( '-O0' )  #   set NOOPTFLAGS = ( '-O0' )
132      set NOOPTFILES = ( 'barrier.F different_multiple.F ' \  #   set NOOPTFILES = ( 'barrier.F different_multiple.F ' \
133                         'load_external_fields.F' )  #                      'load_external_fields.F' )
134      set RMFILES    = ( 'rii_files' )      set RMFILES    = ( 'rii_files' )
135      breaksw      breaksw
136    case sparc:    case SunOS:
137        set LN         = ( '/usr/bin/ln -fs' )
138        set CPP        = ( '/usr/ccs/lib/cpp -P' )
139        set DEFINES    = ( ${DEFINES} '-DTARGET_SUN -DWORDLENGTH=4' )
140        set FFLAGS     = ( '-stackvar -explicitpar -vpara -e -u -noautopar')
141        set FOPTIM     = ( '-fast -O4' )
142        set NOOPTFLAGS = ( '-O0' )
143        set NOOPTFILES = ( 'barrier.F different_multiple.F load_external_fields.F ini_vertical_grid.F')
144        breaksw
145      case SunOS+mpi:
146      set LN         = ( '/usr/bin/ln -fs' )      set LN         = ( '/usr/bin/ln -fs' )
147      set CPP        = ( '/usr/ccs/lib/cpp -P' )      set CPP        = ( '/usr/ccs/lib/cpp -P' )
148      set DEFINES    = ( ${DEFINES} '-DTARGET_SUN' )      set DEFINES    = ( ${DEFINES} '-DTARGET_SUN -DWORDLENGTH=4' )
149      set INCLUDES   = ( '-I/usr/local/mpi/include' )      set INCLUDES   = ( '-I/usr/local/mpi/include' )
150      set FFLAGS     = ( '-stackvar -explicitpar -vpara -e -u -noautopar')      set FFLAGS     = ( '-stackvar -explicitpar -vpara -e -u -noautopar')
151      set FOPTIM     = ( '-O5' )      set FOPTIM     = ( '-fast -O4' )
152      set NOOPTFLAGS = ( '-O0' )      set NOOPTFLAGS = ( '-O0' )
153      set LIBS       = ( '-L/usr/local/mpi/lib/solaris/ch_shmem -lmpi -lthread' \      set LIBS       = ( '-L/usr/local/mpi/lib/solaris/ch_shmem -lmpi -lthread' \
154                         '-lsocket -lnsl -fast' )                         '-lsocket -lnsl' )
155      set NOOPTFILES = ( 'barrier.F different_multiple.F load_external_fields.F')      set NOOPTFILES = ( 'barrier.F different_multiple.F load_external_fields.F ini_vertical_grid.F')
156        breaksw
157      case IRIX32:
158        echo "Configuring for SGI ONYX running IRIX64"
159        set DEFINES    = ( ${DEFINES} '-DTARGET_SGI -DWORDLENGTH=4' )
160        set INCLUDES   = ( '-I/usr/include' )
161        set FFLAGS     = ( '-extend_source -bytereclen -r10000 -64' )
162        set FOPTIM     = ( '-O2' )
163        set NOOPTFLAGS = ( '-O0' )
164        set NOOPTFILES = ( 'barrier.F different_multiple.F ' \
165                           'load_external_fields.F' )
166        set LIBS       = ( '-lmpi' )
167        breaksw
168      case HP-UX+mpi:
169        set FC         = ( 'mpif77' )
170        set LINK       = ( 'mpif77' )
171        set INCLUDES   = ( '-I/opt/mpi/include' )
172      case HP-UX:
173        echo "Configuring for HP Exemplar"
174        set CPP        = ( '/usr/ccs/lbin/cpp -P' )
175        set DEFINES    = ( ${DEFINES}  '-DTARGET_HP -DWORDLENGTH=4' )
176        set FFLAGS     = ( '+es +U77 +Onoautopar +Oexemplar_model' \
177                           '+Okernel_threads' )
178        set FOPTIM     = ( '+O2' )
179        set NOOPTFLAGS = ( '+O0' )
180        set NOOPTFILES = ( 'barrier.F different_multiple.F' \
181                           'load_external_fields.F' )
182        breaksw
183      case Linux+mpi:
184        set LIBS       = ( '-L/usr/local/lib/LINUX/ch_p4/ -lfmpich -lmpich' )
185        set INCLUDES   = ( '-I/usr/local/include' )
186      case Linux:
187        set LN         = ( '/bin/ln -fs' )
188        set CPP        = ( '/lib/cpp  -traditional -P' )
189        set DEFINES    = ( ${DEFINES} '-D_BYTESWAPIO -DWORDLENGTH=4' )
190        set FC         = ( 'g77' )
191        set FFLAGS     = ( '-Wimplicit -Wunused -Wuninitialized' )
192        set FOPTIM     = ( '-O3 -malign-double -funroll-loops ' )
193        set LINK       = ( 'g77' )
194        breaksw
195      case Linux+pgi+mpi:
196        if ($?include_jam_libs) then
197         set INCLUDES   = ( '-I/usr/local//mpich-cnh-install/include' )
198         set LIBS       = ( '-L/usr/local/mpich-cnh-install/lib/LINUX/ch_p4/ -lfmpich -lmpich' )
199        else
200         set INCLUDES   = ( '-I/usr/local/include' )
201         set LIBS       = ( '-L/usr/local/lib/LINUX/ch_p4/ -lfmpich -lmpich' )
202        endif
203      case Linux+pgi:
204        set LN         = ( '/bin/ln -fs' )
205        set CPP        = ( '/lib/cpp -traditional -P' )
206        set DEFINES    = ( ${DEFINES} '-DWORDLENGTH=4' )
207        set FC         = ( 'pgf77' )
208        set FFLAGS     = ( '-byteswapio' )
209        set FOPTIM     = ( '-tp p6 -v -O2 -Munroll -Mvect=cachesize:512000,transform -Kieee' )
210        set LINK       = ( 'pgf77' )
211        breaksw
212      case T3E:
213      case sn6312:
214        set CPP        = ( '/opt/ctl/bin/cpp -P')
215        set DEFINES    = ( ${DEFINES} '-DTARGET_T3E -DWORDLENGTH=4' )
216        set FC         = ( 'f90' )
217        set LINK       = ( 'f90' )
218        set FFLAGS     = ( '-O 2,fusion' )
219      breaksw      breaksw
220    default:    default:
221      echo "Error: platform not recognized: uname -p = " $platform$USEMPI      echo "Error: platform not recognized: uname -p = " $platform$USEMPI
# Line 154  endsw Line 231  endsw
231  ###############################################################################  ###############################################################################
232    
233  # Create list of files  # Create list of files
234  set flist = `ls -1 ${SOURCEDIRS} | grep '.*\.F'`  set flist = `ls -1 ${SOURCEDIRS} | grep '.*\.[F]$'`
235  if ( $#flist ) then  if ( $#flist ) then
236   echo -n "SRCFILES = " > srclist.inc   echo -n "SRCFILES = " > srclist.inc
237   echo -n "F77FILES = " > f77list.inc   echo -n "F77FILES = " > f77list.inc
# Line 168  if ( $#flist ) then Line 245  if ( $#flist ) then
245    echo ' \' >> objlist.inc    echo ' \' >> objlist.inc
246    echo -n "           " ${fname:r}.o >> objlist.inc    echo -n "           " ${fname:r}.o >> objlist.inc
247   end   end
  echo " " >> srclist.inc  
  echo " " >> f77list.inc  
  echo " " >> objlist.inc  
248  else  else
249   echo No source files found...\!   echo No source files found...\!
250   exit   exit
251  endif  endif
252    set flist = `ls -1 ${SOURCEDIRS} | grep '.*\.[c]$'`
253    if ( $#flist ) then
254     foreach ff ( ${flist} )
255      set fname = ( ${ff:t}       )
256      echo ' \' >> objlist.inc
257      echo -n "           " ${fname:r}.o >> objlist.inc
258    endif
259    echo " " >> srclist.inc
260    echo " " >> f77list.inc
261    echo " " >> objlist.inc
262    
263  # Convert lists of directories into command-line options  # Convert lists of directories into command-line options
264  foreach inc ($INCLUDEDIRS)  foreach inc ($INCLUDEDIRS)
# Line 182  foreach inc ($INCLUDEDIRS) Line 266  foreach inc ($INCLUDEDIRS)
266  end  end
267  set SRCSTARS = ( )  set SRCSTARS = ( )
268  foreach dr ($SOURCEDIRS)  foreach dr ($SOURCEDIRS)
269   set SRCSTARS = ("${SRCSTARS}" $dr/\*.F)   set SRCSTARS = ("${SRCSTARS}" $dr\*.\[Fc\] )
270  end  end
271    
272  set THISHOSTNAME = ( `hostname` )  set THISHOSTNAME = ( `hostname` )
# Line 225  INCLUDEDIRS = ${INCLUDEDIRS} Line 309  INCLUDEDIRS = ${INCLUDEDIRS}
309  EXEDIR     = ${EXEDIR}  EXEDIR     = ${EXEDIR}
310  EXECUTABLE = \$(EXEDIR)${EXECUTABLE}  EXECUTABLE = \$(EXEDIR)${EXECUTABLE}
311    
312    EOF
313    
314    
315    # JAM libraries on Hyades
316    if ($?include_jam_libs) then
317    cat >> ${mfile} <<EOF
318    # extra stuff for Hyades ............................................
319    HYADES_DIR = /u/u0/cnh/jam-lib/software
320    HYADES_DIR = /u/u0/cnh/jam-lib-twoproc
321    WORK_DIR   = \$(HYADES_DIR)
322    DEPOSIT_DIR = linux_bin
323    
324    STARTXOBJDIR = startx_util/\$(DEPOSIT_DIR)
325    STARTXOBJ = \$(WORK_DIR)/startx_util/\$(DEPOSIT_DIR)/startx_timer.o \
326                \$(WORK_DIR)/startx_util/\$(DEPOSIT_DIR)/startx_util.o \
327                \$(WORK_DIR)/startx_util/\$(DEPOSIT_DIR)/client.o \
328                \$(WORK_DIR)/startx_util/\$(DEPOSIT_DIR)/csutil.o
329    
330    JAMOBJDIR  = jam/\$(DEPOSIT_DIR)
331    JAMOBJ     = \$(WORK_DIR)/jam/\$(DEPOSIT_DIR)/jam_init.o \
332                 \$(WORK_DIR)/jam/\$(DEPOSIT_DIR)/jam_kernel.o \
333                 \$(WORK_DIR)/jam/\$(DEPOSIT_DIR)/jam_malloc.o \
334                 \$(WORK_DIR)/jam/\$(DEPOSIT_DIR)/jam_vmalloc.o \
335                 \$(WORK_DIR)/jam/\$(DEPOSIT_DIR)/jam_mutex.o
336    
337    JAMCOBJDIR = jam_collective/\$(DEPOSIT_DIR)
338    JAMCOBJ    = \$(WORK_DIR)/jam_collective/\$(DEPOSIT_DIR)/jam_collective.o
339    
340    XLIBS      = \$(STARTXOBJ) \$(JAMOBJ) \$(JAMCOBJ)
341    
342    # ..................................................................
343    
344    EOF
345    endif
346    
347    
348    cat >> ${mfile} <<EOF
349  # Unix ln (link)  # Unix ln (link)
350  LN = ${LN}  LN = ${LN}
351  # C preprocessor  # C preprocessor
352  CPP = ${CPP}  CPP = cat \$< | ../tools/set64bitConst.sh | ${CPP}
353  # Special preprocessor (KAP on DECs, FPP on Crays)  # Special preprocessor (KAP on DECs, FPP on Crays)
354  KPP = ${KPP}  KPP = ${KPP}
355  # Fortran compiler  # Fortran compiler
# Line 250  FOPTIM = ${FOPTIM} Line 371  FOPTIM = ${FOPTIM}
371  NOOPTFILES = ${NOOPTFILES}  NOOPTFILES = ${NOOPTFILES}
372  NOOPTFLAGS = ${NOOPTFLAGS}  NOOPTFLAGS = ${NOOPTFLAGS}
373  # Flags and libraries needed for linking  # Flags and libraries needed for linking
374  LIBS = ${LIBS}  LIBS = ${LIBS} \$(XLIBS)
375    
376  EOF  EOF
377    
# Line 262  rm -f srclist.inc f77list.inc objlist.in Line 383  rm -f srclist.inc f77list.inc objlist.in
383  cat >> ${mfile} <<EOF  cat >> ${mfile} <<EOF
384    
385  .SUFFIXES:  .SUFFIXES:
386  .SUFFIXES: .o .f .p .F  .SUFFIXES: .o .f .p .F .c
387    
388  all: \$(EXECUTABLE)  all: \$(EXECUTABLE)
389  \$(EXECUTABLE): \$(OBJFILES)  \$(EXECUTABLE): \$(OBJFILES)
# Line 274  depend: Line 395  depend:
395          makedepend -o .f \$(INCLUDES) \$(SRCFILES)          makedepend -o .f \$(INCLUDES) \$(SRCFILES)
396  clean:  clean:
397          -rm -rf *.o *.f *.p ${RMFILES}          -rm -rf *.o *.f *.p ${RMFILES}
398    Clean:
399            @make clean
400            -find . -type l -exec rm {} \;
401            -rm Makefile.bak
402    CLEAN:
403            @make Clean
404            -find ../verification/ -name "*.meta" -exec rm {} \;
405            -find ../verification/ -name "*.data" -exec rm {} \;
406            -rm \$(EXECUTABLE)
407    
408  # The normal chain of rules is (  .F - .f - .o  )  # The normal chain of rules is (  .F - .f - .o  )
409  .F.f:  .F.f:
410          \$(CPP) \$(DEFINES) \$(INCLUDES) \$< > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
411  .f.o:  .f.o:
412          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
413    
414  # Special exceptions that use the ( .F - .p - .f - .o ) rule-chain  # Special exceptions that use the ( .F - .p - .f - .o ) rule-chain
415  .F.p:  .F.p:
416          \$(CPP) \$(DEFINES) \$(INCLUDES) \$< > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
417  .p.f:  .p.f:
418          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<
419  EOF  EOF

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.16

  ViewVC Help
Powered by ViewVC 1.1.22