--- MITgcm/tools/genmake 1998/09/29 18:50:57 1.4 +++ MITgcm/tools/genmake 2000/11/30 19:58:13 1.22 @@ -1,6 +1,6 @@ #!/bin/csh -f # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/Attic/genmake,v 1.4 1998/09/29 18:50:57 cnh Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/Attic/genmake,v 1.22 2000/11/30 19:58:13 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 @@ -55,8 +60,8 @@ # copy everything in ../eesupp/src, ../model/src, # ../eesupp/inc and ../model/inc into a directory and then # edit the paths below to ./ -set SOURCEDIRS = ( ../eesupp/src/ ../model/src/ ../diags/src/) -set INCLUDEDIRS = ( ../eesupp/inc/ ../model/inc/ ../diags/inc/) +set SOURCEDIRS = ( ../eesupp/src/ ../model/src/ ../diags/src/ ../pkg/*/ ) +set INCLUDEDIRS = ( ./ ../eesupp/inc/ ../model/inc/ ../diags/inc/ ../pkg/*/ ) set BUILDDIR = ( ../bin/ ) set EXEDIR = ( ../exe/ ) set EXECUTABLE = ( mitgcmuv ) @@ -91,11 +96,11 @@ # 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=' ) @@ -104,68 +109,175 @@ set FOPTIM = ( '-O5 -fast -tune host -inline all' ) set NOOPTFLAGS = ( '-O0' ) set LIBS = ( '-lfmpi -lmpi -lkmp_osfp10 -pthread' ) - set NOOPTFILES = ( 'barrier.F different_multiple.F load_external_fields.F') + set NOOPTFILES = ( 'barrier.F different_multiple.F external_fields_load.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 = ( '-O3' ) +# set NOOPTFLAGS = ( '-O0' ) +# set NOOPTFILES = ( 'barrier.F different_multiple.F ' \ +# 'external_fields_load.F' ) + set RMFILES = ( 'rii_files' ) + breaksw + case o2: + case IRIX: + echo "Configuring for SGI O2 running IRIX 6.5" + set DEFINES = ( ${DEFINES} '-DTARGET_SGI -DWORDLENGTH=4' ) + set FFLAGS = ( '-extend_source -bytereclen -r10000 -mips4' ) set FOPTIM = ( '-O2' ) set NOOPTFLAGS = ( '-O0' ) - set NOOPTFILES = ( 'barrier.F different_multiple.F ' \ - 'load_external_fields.F' ) - set RMFILES = ( 'rii_files' ) breaksw - case sparc: + case o2+mpi: + case IRIX+mpi: + echo "Configuring for SGI O2 running IRIX 6.5 with MPI" + set DEFINES = ( ${DEFINES} '-DTARGET_SGI -DWORDLENGTH=4' ) + set FFLAGS = ( '-extend_source -bytereclen -r10000 -mips4' ) + set FOPTIM = ( '-O2' ) + set NOOPTFILES = ( 'barrier.F different_multiple.F external_fields_load.F' ) + set NOOPTFLAGS = ( '-O0' ) + set LIBS = ( '-lmpi' ) + breaksw + case o2k+mpi: + echo "Configuring for SGI Origin2000 running IRIX 6.5" + set DEFINES = ( ${DEFINES} '-DTARGET_SGI -DWORDLENGTH=4' ) + set INCLUDES = ( '-I/usr/include' ) + set FFLAGS = ( '-n32 -extend_source -bytereclen' ) + set FOPTIM = ( '-O2' ) + set NOOPTFILES = ( 'calc_mom_rhs.F' ) + set NOOPTFLAGS = ( '-O1' ) + set LIBS = ( '-lmpi -lscs' ) + breaksw + case onyx: + case onyx+mpi: + echo "Configuring for SGI ONYX running IRIX64" + set DEFINES = ( ${DEFINES} '-DTARGET_SGI -DWORDLENGTH=4' ) + set FFLAGS = ( '-extend_source -bytereclen -r10000 -64' ) + set FOPTIM = ( '-O2' ) + set NOOPTFLAGS = ( '-O0' ) + set NOOPTFILES = ( 'barrier.F different_multiple.F external_fields_load.F' ) + set LIBS = ( '-lmpi' ) + breaksw + 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 -O3' ) + set NOOPTFLAGS = ( '-O0' ) + set NOOPTFILES = ( 'barrier.F different_multiple.F external_fields_load.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 -O3' ) 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 external_fields_load.F ini_vertical_grid.F') breaksw - case onyx: - case onyx+mpi: + case IRIX32: echo "Configuring for SGI ONYX running IRIX64" - set DEFINES = ( ${DEFINES} '-DTARGET_SGI' ) + 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' ) + 'external_fields_load.F' ) set LIBS = ( '-lmpi' ) breaksw - case exemplar: - case exemplar+mpi: - echo "Configuring for HP Exemplar" - set CPP = ( '/usr/ccs/lbin/cpp -P' ) - set DEFINES = ( ${DEFINES} '-DTARGET_HP' ) - set INCLUDES = ( '-I/opt/mpi/include' ) + 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 NOOPTFLAGS = ( '+O0' ) set NOOPTFILES = ( 'barrier.F different_multiple.F' \ - 'load_external_fields.F' ) + 'external_fields_load.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 + case T90: + case sn7113: + set FC = ( 'f90' ) + set LINK = ( 'f90' ) + set LN = ( '/bin/ln -fs' ) + set CPP = ( '/opt/ctl/bin/cpp -N -P' ) + set DEFINES = ( ${DEFINES} '-DTARGET_CRAY_VECTOR -DWORDLENGTH=4' ) + set FFLAGS = ( '-m3 -Rabc -N 132') + set FOPTIM = ( '-O0' ) + set NOOPTFLAGS = ( '-O0' ) + set NOOPTFILES = ( 'barrier.F different_multiple.F external_fields_load.F') + breaksw + case SV1: + case sn3002: + set FC = ( 'f90' ) + set LINK = ( 'f90' ) + set LN = ( '/bin/ln -fs' ) + set CPP = ( '/opt/ctl/bin/cpp -N -P' ) + set DEFINES = ( ${DEFINES} '-DTARGET_CRAY_VECTOR -DWORDLENGTH=4' ) + set FFLAGS = ( '-m3 -Rabc -ei -eI -s cf77types -N 132') + set FOPTIM = ( '-O0' ) + set NOOPTFLAGS = ( '-O0' ) + set NOOPTFILES = ( 'barrier.F different_multiple.F external_fields_load.F') breaksw default: echo "Error: platform not recognized: uname -p = " $platform$USEMPI @@ -181,27 +293,31 @@ ############################################################################### # 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 - echo -n "OBJFILES = " > objlist.inc + echo -n 'SRCFILES = ' > srclist.inc foreach ff ( ${flist} ) set fname = ( ${ff:t} ) - echo ' \' >> srclist.inc + echo ' \' >> srclist.inc echo -n " " ${fname:r}.F >> srclist.inc - echo ' \' >> f77list.inc - echo -n " " ${fname:r}.f >> f77list.inc - 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 +echo " " >> srclist.inc + +set flist = `ls -1 ${SOURCEDIRS} | grep '.*\.[c]$'` +if ( $#flist ) then + echo -n 'CSRCFILES = ' > csrclist.inc + foreach ff ( ${flist} ) + set fname = ( ${ff:t} ) + echo ' \' >> csrclist.inc + echo -n " " ${fname} >> csrclist.inc +else + echo -n 'CSRCFILES =' > csrclist.inc +endif +echo " " >> csrclist.inc # Convert lists of directories into command-line options foreach inc ($INCLUDEDIRS) @@ -209,7 +325,7 @@ end set SRCSTARS = ( ) foreach dr ($SOURCEDIRS) - set SRCSTARS = ("${SRCSTARS}" $dr/\*.F) + set SRCSTARS = ("${SRCSTARS}" $dr\*.\[Fc\] ) end set THISHOSTNAME = ( `hostname` ) @@ -252,10 +368,47 @@ EXEDIR = ${EXEDIR} EXECUTABLE = \$(EXEDIR)${EXECUTABLE} +EOF + + +# JAM libraries on Hyades +if ($?include_jam_libs) then +cat >> ${mfile} <> ${mfile} <> ${mfile} -cat f77list.inc >> ${mfile} -cat objlist.inc >> ${mfile} -rm -f srclist.inc f77list.inc objlist.inc +cat srclist.inc >> ${mfile} +cat csrclist.inc >> ${mfile} +echo 'F77FILES = $(SRCFILES:.F=.f)' >> ${mfile} +echo 'OBJFILES = $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o)' >> ${mfile} + +rm -f srclist.inc csrclist.inc cat >> ${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