--- MITgcm/tools/genmake 1998/07/15 22:05:44 1.2 +++ MITgcm/tools/genmake 2000/03/24 19:28:46 1.16 @@ -1,6 +1,6 @@ #!/bin/csh -f # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/Attic/genmake,v 1.2 1998/07/15 22:05:44 adcroft Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/Attic/genmake,v 1.16 2000/03/24 19:28:46 adcroft Exp $ # # Makefile generator for MITgcm UV codes # created by cnh 03/98 @@ -11,12 +11,11 @@ while ($#allargs) set arg = $allargs[1] switch ($arg) - case -makefile*: - if ($arg == "-makefile") then - set mfile = ( Makefile ) - else - set mfile = ( `echo $arg | sed 's/-makefile=//' `) - endif + case -makefile: + set mfile = ( Makefile ) + breaksw + case -makefile=*: + set mfile = ( `echo $arg | sed 's/-makefile=//' `) breaksw case -platform: case -platform=: @@ -31,6 +30,10 @@ echo "Enabling MPI options" set USEMPI breaksw + case -jam: + set include_jam_libs + echo "Including paths to JAM libraries" + breaksw case -help: echo "usage: $0 [-help] [-makefile[=...]] [-platform=...] [-mpi]" exit @@ -43,8 +46,10 @@ endsw shift allargs end - -if ($?platform == 0) set platform = (`uname -p`) + +if ($?platform == 0) then + set platform = (`uname`) +endif if ($?mfile == 0) set mfile = ( Makefile.$platform ) set mach = ( `uname -a` ) echo Operating system: $mach @@ -91,12 +96,13 @@ # Platform specific options switch ($platform$USEMPI) - case alpha: - case alpha+mpi: + case OSF1: + case OSF1+mpi: echo "Configuring for DEC Alpha" set CPP = ( '/usr/bin/cpp -P' ) - set DEFINES = ( ${DEFINES} '-DTARGET_DEC' ) + set DEFINES = ( ${DEFINES} '-DTARGET_DEC -DWORDLENGTH=1' ) set KPP = ( 'kapf' ) + set KPPFILES = ( 'main.F' ) set KFLAGS1 = ( '-scan=132 -noconc -cmp=' ) set FC = ( 'f77' ) set FFLAGS = ( '-convert big_endian -r8 -extend_source -u -automatic -call_shared -notransform_loops -align dcommons' ) @@ -106,38 +112,110 @@ set NOOPTFILES = ( 'barrier.F different_multiple.F load_external_fields.F') set RMFILES = ( '*.p.out' ) breaksw - case mips+mpi: + case IRIX64+mpi: echo "Configuring for SGI Mips with MPI" - set DEFINES = ( ${DEFINES} '-DTARGET_SGI' ) + set DEFINES = ( ${DEFINES} '-DTARGET_SGI -DWORDLENGTH=4' ) set INCLUDES = ( '-I/usr/local/mpi/include' ) set FC = ( 'mpif77' ) set LINK = ( 'mpif77' ) - set FFLAGS = ( '-extend_source -bytereclen -r10000' ) + set FFLAGS = ( '-extend_source -bytereclen -r10000 -mips4' ) set FOPTIM = ( '-O3' ) set RMFILES = ( 'rii_files' ) breaksw - case mips: + case IRIX64: echo "Configuring for SGI Mips" - set DEFINES = ( ${DEFINES} '-DTARGET_SGI' ) + set DEFINES = ( ${DEFINES} '-DTARGET_SGI -DWORDLENGTH=4' ) set INCLUDES = ( '-I/usr/local/mpi/include' ) set FFLAGS = ( '-extend_source -mp -mpio -bytereclen -r10000 -mips4' ) - set FOPTIM = ( '-O2' ) - set NOOPTFLAGS = ( '-O0' ) - set NOOPTFILES = ( 'barrier.F different_multiple.F ' \ - 'load_external_fields.F' ) + set FOPTIM = ( '-O3' ) +# set NOOPTFLAGS = ( '-O0' ) +# set NOOPTFILES = ( 'barrier.F different_multiple.F ' \ +# 'load_external_fields.F' ) set RMFILES = ( 'rii_files' ) breaksw - case sparc: + case SunOS: set LN = ( '/usr/bin/ln -fs' ) set CPP = ( '/usr/ccs/lib/cpp -P' ) - set DEFINES = ( ${DEFINES} '-DTARGET_SUN' ) + set DEFINES = ( ${DEFINES} '-DTARGET_SUN -DWORDLENGTH=4' ) + set FFLAGS = ( '-stackvar -explicitpar -vpara -e -u -noautopar') + set FOPTIM = ( '-fast -O4' ) + set NOOPTFLAGS = ( '-O0' ) + set NOOPTFILES = ( 'barrier.F different_multiple.F load_external_fields.F ini_vertical_grid.F') + breaksw + case SunOS+mpi: + set LN = ( '/usr/bin/ln -fs' ) + set CPP = ( '/usr/ccs/lib/cpp -P' ) + set DEFINES = ( ${DEFINES} '-DTARGET_SUN -DWORDLENGTH=4' ) set INCLUDES = ( '-I/usr/local/mpi/include' ) set FFLAGS = ( '-stackvar -explicitpar -vpara -e -u -noautopar') - set FOPTIM = ( '-O5' ) + set FOPTIM = ( '-fast -O4' ) set NOOPTFLAGS = ( '-O0' ) set LIBS = ( '-L/usr/local/mpi/lib/solaris/ch_shmem -lmpi -lthread' \ - '-lsocket -lnsl -fast' ) - set NOOPTFILES = ( 'barrier.F different_multiple.F load_external_fields.F') + '-lsocket -lnsl' ) + set NOOPTFILES = ( 'barrier.F different_multiple.F load_external_fields.F ini_vertical_grid.F') + breaksw + case IRIX32: + echo "Configuring for SGI ONYX running IRIX64" + set DEFINES = ( ${DEFINES} '-DTARGET_SGI -DWORDLENGTH=4' ) + set INCLUDES = ( '-I/usr/include' ) + set FFLAGS = ( '-extend_source -bytereclen -r10000 -64' ) + set FOPTIM = ( '-O2' ) + set NOOPTFLAGS = ( '-O0' ) + set NOOPTFILES = ( 'barrier.F different_multiple.F ' \ + 'load_external_fields.F' ) + set LIBS = ( '-lmpi' ) + breaksw + case HP-UX+mpi: + set FC = ( 'mpif77' ) + set LINK = ( 'mpif77' ) + set INCLUDES = ( '-I/opt/mpi/include' ) + case HP-UX: + echo "Configuring for HP Exemplar" + set CPP = ( '/usr/ccs/lbin/cpp -P' ) + set DEFINES = ( ${DEFINES} '-DTARGET_HP -DWORDLENGTH=4' ) + set FFLAGS = ( '+es +U77 +Onoautopar +Oexemplar_model' \ + '+Okernel_threads' ) + set FOPTIM = ( '+O2' ) + set NOOPTFLAGS = ( '+O0' ) + set NOOPTFILES = ( 'barrier.F different_multiple.F' \ + 'load_external_fields.F' ) + breaksw + case Linux+mpi: + set LIBS = ( '-L/usr/local/lib/LINUX/ch_p4/ -lfmpich -lmpich' ) + set INCLUDES = ( '-I/usr/local/include' ) + case Linux: + set LN = ( '/bin/ln -fs' ) + set CPP = ( '/lib/cpp -traditional -P' ) + set DEFINES = ( ${DEFINES} '-D_BYTESWAPIO -DWORDLENGTH=4' ) + set FC = ( 'g77' ) + set FFLAGS = ( '-Wimplicit -Wunused -Wuninitialized' ) + set FOPTIM = ( '-O3 -malign-double -funroll-loops ' ) + set LINK = ( 'g77' ) + breaksw + case Linux+pgi+mpi: + if ($?include_jam_libs) then + set INCLUDES = ( '-I/usr/local//mpich-cnh-install/include' ) + set LIBS = ( '-L/usr/local/mpich-cnh-install/lib/LINUX/ch_p4/ -lfmpich -lmpich' ) + else + set INCLUDES = ( '-I/usr/local/include' ) + set LIBS = ( '-L/usr/local/lib/LINUX/ch_p4/ -lfmpich -lmpich' ) + endif + case Linux+pgi: + set LN = ( '/bin/ln -fs' ) + set CPP = ( '/lib/cpp -traditional -P' ) + set DEFINES = ( ${DEFINES} '-DWORDLENGTH=4' ) + set FC = ( 'pgf77' ) + set FFLAGS = ( '-byteswapio' ) + set FOPTIM = ( '-tp p6 -v -O2 -Munroll -Mvect=cachesize:512000,transform -Kieee' ) + set LINK = ( 'pgf77' ) + breaksw + case T3E: + case sn6312: + set CPP = ( '/opt/ctl/bin/cpp -P') + set DEFINES = ( ${DEFINES} '-DTARGET_T3E -DWORDLENGTH=4' ) + set FC = ( 'f90' ) + set LINK = ( 'f90' ) + set FFLAGS = ( '-O 2,fusion' ) breaksw default: echo "Error: platform not recognized: uname -p = " $platform$USEMPI @@ -153,7 +231,7 @@ ############################################################################### # Create list of files -set flist = `ls -1 ${SOURCEDIRS} | grep '.*\.F'` +set flist = `ls -1 ${SOURCEDIRS} | grep '.*\.[F]$'` if ( $#flist ) then echo -n "SRCFILES = " > srclist.inc echo -n "F77FILES = " > f77list.inc @@ -167,13 +245,20 @@ echo ' \' >> objlist.inc echo -n " " ${fname:r}.o >> objlist.inc end - echo " " >> srclist.inc - echo " " >> f77list.inc - echo " " >> objlist.inc else echo No source files found...\! exit endif +set flist = `ls -1 ${SOURCEDIRS} | grep '.*\.[c]$'` +if ( $#flist ) then + foreach ff ( ${flist} ) + set fname = ( ${ff:t} ) + echo ' \' >> objlist.inc + echo -n " " ${fname:r}.o >> objlist.inc +endif +echo " " >> srclist.inc +echo " " >> f77list.inc +echo " " >> objlist.inc # Convert lists of directories into command-line options foreach inc ($INCLUDEDIRS) @@ -181,7 +266,7 @@ end set SRCSTARS = ( ) foreach dr ($SOURCEDIRS) - set SRCSTARS = ("${SRCSTARS}" $dr/\*.F) + set SRCSTARS = ("${SRCSTARS}" $dr\*.\[Fc\] ) end set THISHOSTNAME = ( `hostname` ) @@ -224,10 +309,47 @@ EXEDIR = ${EXEDIR} EXECUTABLE = \$(EXEDIR)${EXECUTABLE} +EOF + + +# JAM libraries on Hyades +if ($?include_jam_libs) then +cat >> ${mfile} <> ${mfile} <> ${mfile} < \$@ + \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@ .f.o: \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$< # Special exceptions that use the ( .F - .p - .f - .o ) rule-chain .F.p: - \$(CPP) \$(DEFINES) \$(INCLUDES) \$< > \$@ + \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@ .p.f: \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$< EOF