aboutsummaryrefslogtreecommitdiff
path: root/science/gamess/files/patch-comp
diff options
context:
space:
mode:
authorMaho Nakata <maho@FreeBSD.org>2007-03-13 00:39:58 +0000
committerMaho Nakata <maho@FreeBSD.org>2007-03-13 00:39:58 +0000
commiteb150f33f7e91895382d1ed02e0b0aad8e7fdcc7 (patch)
treefecd209fa52ec0c785c2db21b4629ef487f1537f /science/gamess/files/patch-comp
parentfbb7e070757485d5cf58e07a81bd928d0df71a2b (diff)
downloadports-eb150f33f7e91895382d1ed02e0b0aad8e7fdcc7.tar.gz
ports-eb150f33f7e91895382d1ed02e0b0aad8e7fdcc7.zip
Notes
Diffstat (limited to 'science/gamess/files/patch-comp')
-rw-r--r--science/gamess/files/patch-comp293
1 files changed, 293 insertions, 0 deletions
diff --git a/science/gamess/files/patch-comp b/science/gamess/files/patch-comp
new file mode 100644
index 000000000000..dcc1071907c3
--- /dev/null
+++ b/science/gamess/files/patch-comp
@@ -0,0 +1,293 @@
+--- comp.orig Tue Nov 7 00:17:54 2006
++++ comp Fri Mar 9 10:44:49 2007
+@@ -8,11 +8,11 @@
+ # 1. Choose your machine, the legal values for TARGET are
+ # amd64,axp64,compaq-sc,cray-pvp,cray-t3e,cray-x1,cray-xd1,cray-xt3,
+ # fuji-pp32,fuji-pp64,hpux32,hpux64,ibm32,ibm64,ibm64-sp,ibm-bg,
+-# linux-ia64,linux-pc,mac32,macG5,necsx,sgi32,sgi64,sun32,sun64
++# linux-ia64,linux-pc,mac32,macG5,necsx,sgi32,sgi64,sun32,sun64,freebsd-amd64,freebsd-i386
+ # 2. Choose your GAMESS directory tree.
+ #
+-set TARGET=ibm64
+-chdir /u1/mike/gamess
++set TARGET=%%ARCH%%
++#chdir /u1/mike/gamess
+ #
+ # ---- and now the script begins...
+ #
+@@ -31,6 +31,9 @@
+ #
+ set OK=false
+ if ($TARGET == amd64) set OK=true
++if ($TARGET == freebsd-amd64) set OK=true
++if ($TARGET == freebsd-i386) set OK=true
++if ($TARGET == sun64) set OK=true
+ if ($TARGET == axp64) set OK=true
+ if ($TARGET == compaq-sc) set OK=true
+ if ($TARGET == cray-pvp) set OK=true
+@@ -115,6 +118,8 @@
+ endif
+ if ($TARGET == mac32) set BLAS3=true
+ if ($TARGET == macG5) set BLAS3=true
++if ($TARGET == freebsd-i386) set BLAS3=true
++if ($TARGET == freebsd-amd64) set BLAS3=true
+ if ($TARGET == sgi32) set BLAS3=true
+ if ($TARGET == sgi64) set BLAS3=true
+ if (($TARGET == sun32) && (-e /opt/SUNWspro/lib/libsunperf.so)) set BLAS3=true
+@@ -493,6 +498,19 @@
+ if ($MODULE == iolib) setenv MACHIN '*UNX'
+ if ($MODULE == unport) setenv MACHIN '*F2C'
+ endif
++if ($TARGET == freebsd-amd64) then
++ setenv MACHIN '*I64'
++ if ($MODULE == ddi) setenv MACHIN '*SOC'
++ if ($MODULE == iolib) setenv MACHIN '*UNX'
++ if ($MODULE == unport) setenv MACHIN '*AMD'
++endif
++if ($TARGET == freebsd-i386) then
++ setenv MACHIN '*I32'
++ if ($MODULE == ddi) setenv MACHIN '*SOC'
++ if ($MODULE == iolib) setenv MACHIN '*UNX'
++ if ($MODULE == unport) setenv MACHIN '*F2C'
++endif
++
+ if (($TARGET == mac32) || ($TARGET == macG5)) then
+ setenv MACHIN '*I32'
+ if ($MODULE == ddi) setenv MACHIN '*SOC'
+@@ -1630,6 +1648,236 @@
+ #-- f77 -c $OPT -stackvar $MODULE.f
+ #-- unset echo
+ #--endif
++
++#
++# FreeBSD (i386)
++#
++if ($TARGET == freebsd-i386) then
++#
++# The target of freebsd-i386 requires that you select a FORTRAN compiler.
++# There are five choices,
++# g77,
++# the default, because it is on our PCs at Iowa State!
++# lacks support for unit numbers over 99, or REAL*16
++# gfortran,
++# the gnu FORTRAN being included in recent Linux distributions
++# this allows unit numbers over 99, but not REAL*16
++# Intel's commercial ifort,
++# this is usually a bit faster, and supports both unit
++# numbers above 99 and REAL*16 (i.e. runs all of GAMESS)
++# Portland's commercial pgf77,
++# lacks support for REAL*16
++# the obsolete combination of f2c/gcc.
++# lacks support for unit numbers over 99, or REAL*16
++#
++# Note that the source code is the same for any of the possibilities, so
++# something missing means only that you can't run that particular thing:
++# Use of RUNTYP=TDHFX requires file numbers over 99.
++# Use of quadruple precision (MODEQR) in relativity requires REAL*16.
++#
++# The only thing you need to change is the next line.
++# Note: you must make the analogous choice in compddi and lked, as well.
++#
++ set FORTRAN=%%FORTRAN%% # choose from g77, gfortran, ifort, pgf77, f2c
++#
++ switch ($FORTRAN)
++#
++# 1. Using g77 compiler. compiler version query: rpm -q gcc-g77
++# If your RedHat is older than 6.0, see the f2c/gcc clause below.
++#
++# The meaning of g77's flags are
++# -O0, -O1, -O2, -O3 are the optimization levels, -O means -O1
++# -Wno-globals -fno-globals together suppress argument type checking.
++# -fautomatic defeats use of static storage
++# -malign-double uses 64 bit data alignment
++# Tests on a representative GAMESS test suite (executing energy, gradient
++# hessian code, as well as various SCF, MCSCF, MP2 runs, show that each
++# of the more aggressive optimizations -ffast-math, -march=i586, and -O3
++# gave speedups of less than 1% each. (-march=i686 slows a Celeron type
++# Pentium II fractionally). None of these optimizations are used below.
++#
++ case g77:
++ set OPT = '-O2'
++ if ($MODULE == ormas1) set OPT='-O2 -fno-move-all-movables' # RH9, g77 3.3
++ if ($MODULE == zheev) set OPT='-O0' # defensive compiling
++#
++# g77 does not support FORTRAN logical units above 99, or 128 bit math.
++#
++ if (($MODULE == qeigen) || ($MODULE == int2c)) then
++ mv $MODULE.f $MODULE.junk
++ sed -e "s/Q-/D-/g" \
++ -e "s/Q+00/D+00/g" \
++ -e "s/REAL\*16/DOUBLE PRECISION/" $MODULE.junk > $MODULE.f
++ rm -f $MODULE.junk
++ endif
++ if (($MODULE == iolib) || ($MODULE == inputa)) then
++ mv $MODULE.f $MODULE.junk
++ sed -e "s/MXUNIT=299/MXUNIT=99/g" $MODULE.junk > $MODULE.f
++ rm -f $MODULE.junk
++ endif
++ set echo
++ %%FC%% -c $OPT -malign-double -fautomatic \
++ -Wno-globals -fno-globals $MODULE.f
++ unset echo
++ breaksw
++#
++# 2. Using gfortran compiler. Tested with gfortran 4.1.1 on FC5.
++# gfortran was included with Fedora Core distributions starting around FC4.
++# compiler version query: rpm -q gcc-gfortran
++#
++# This is a 32 bit version, i.e. not using -fdefault-integer-8!
++# Unlike g77, gfortran allows for unit numbers above 100.
++# Like g77, gfortran does not support quadruple precision.
++#
++# -Ox optimization level is from the gcc back end, x can be 0,1,2,3
++# -std=legacy suppresses warnings about use of f77 constructs.
++#
++ case gfortran:
++ set OPT='-O2'
++ if ($MODULE == zheev) set OPT='-O0' # defensive compiling
++ if (($MODULE == qeigen) || ($MODULE == int2c)) then
++ mv $MODULE.f $MODULE.junk
++ sed -e "s/Q-/D-/g" \
++ -e "s/Q+00/D+00/g" \
++ -e "s/REAL\*16/DOUBLE PRECISION/" $MODULE.junk > $MODULE.f
++ rm -f $MODULE.junk
++ endif
++ set echo
++ %%FC%% -c $OPT -std=legacy $MODULE.f
++ unset echo
++ breaksw
++#
++# 3. Intel Fortran Compiler for Linux
++# Please see the 64 bit Linux target for more details as to where
++# to get this compiler, and its cost, and for an explanation of
++# the command line arguments.
++#
++# Note that this is more agressive (-O3 compared to -O2) than the
++# other two places in this file where ifort is used. If some
++# version gives you problems, drop this back to -O2.
++#
++# Dmitri likes to use "-O3 -xN -ssp -unroll8 -ip -pad -opt_report",
++# but that may cause certain ifort versions to fail on some files.
++#
++ case ifort:
++ set OPT = '-O3'
++ if ($MODULE == delocl) set OPT='-O0' # from Cheol
++ if ($MODULE == zheev) set OPT='-O0'
++ set echo
++ %%FC%% -c -i4 $OPT -auto -assume byterecl -w95 -cm $MODULE.f
++ unset echo
++ breaksw
++#
++# 4. Portland Group compiler.
++# This is a synthesis of recommendations from Fred Arnold and Brian
++# Salter-Duke. -fast means -O2 -Munroll -Mnoframe, the latter option
++# seems to be the source of several incorrect results. It is said that
++# "-Munroll" and "-tp p6" gives no significant improvement in run times.
++# The -Mlfs flag is supposed to cure the 2 GB file size limit.
++# exam19 may hang when using this compiler. -Mlfs at link-time
++# enables large file support. Your login script must set
++# up the use of this compiler, along the lines of
++# setenv PATH $PATH\:/usr/pgi/linux86/bin
++# setenv PGI /usr/pgi
++#
++ case pgf77:
++ if (($MODULE == qfmm) || ($MODULE == solib) || ($MODULE == zheev)) then
++ mv $MODULE.f $MODULE.junk
++ sed -e s/DREAL/DBLE/g $MODULE.junk > $MODULE.f
++ rm -f $MODULE.junk
++ endif
++ if (($MODULE == qeigen) || ($MODULE == int2c)) then
++ mv $MODULE.f $MODULE.junk
++ sed -e "s/Q-/D-/g" \
++ -e "s/Q+00/D+00/g" \
++ -e "s/REAL\*16/DOUBLE PRECISION/" $MODULE.junk > $MODULE.f
++ rm -f $MODULE.junk
++ endif
++ set OPT = '-O2'
++ if ($MODULE == zheev) set OPT = '-O2 -Kieee'
++ if ($MODULE == bassto) set OPT = '-O0' # Takako
++ set echo
++ pgf77 -c $OPT -Msecond_underscore $MODULE.f
++ unset echo
++ breaksw
++#
++# 5. RedHat 4.x and 5.x's FORTRAN compiler was f2c/gcc.
++# This is a totally obsolete option, actually.
++#
++ case f2c:
++ if (($MODULE == qfmm) || ($MODULE == solib) || ($MODULE == zheev)) then
++ mv $MODULE.f $MODULE.junk
++ sed -e s/DREAL/DBLE/g $MODULE.junk > $MODULE.f
++ rm -f $MODULE.junk
++ endif
++ if (($MODULE == qeigen) || ($MODULE == int2c)) then
++ mv $MODULE.f $MODULE.junk
++ sed -e "s/Q-/D-/g" \
++ -e "s/Q+00/D+00/g" \
++ -e "s/REAL\*16/DOUBLE PRECISION/" $MODULE.junk > $MODULE.f
++ rm -f $MODULE.junk
++ endif
++ if (($MODULE == iolib) || ($MODULE == inputa)) then
++ mv $MODULE.f $MODULE.junk
++ sed -e "s/MXUNIT=299/MXUNIT=99/g" $MODULE.junk > $MODULE.f
++ rm -f $MODULE.junk
++ endif
++ set OPT = '-O3 -malign-double'
++ set echo
++ f2c -w66 -a -Nn1604 -Nx800 $MODULE.f
++ gcc -c $OPT $MODULE.c
++ rm -f $MODULE.c
++ unset echo
++ breaksw
++#
++ default:
++ echo Please spell your ia32 compiler correctly.
++ exit 4
++ breaksw
++ endsw
++# ... end of FreeBSD on 32 bit PC compiler choices.
++endif
++if ($TARGET == freebsd-amd64) then
++#
++# The only thing you need to change is the next line.
++# Note: you must make the analogous choice in compddi and lked, as well.
++#
++ set FORTRAN=%%FORTRAN%% # choose from gfortran, ifort
++#
++ switch ($FORTRAN)
++
++ case gfortran:
++ set OPT='-O2'
++ if ($MODULE == zheev) set OPT='-O0' # defensive compiling
++ if (($MODULE == qeigen) || ($MODULE == int2c)) then
++ mv $MODULE.f $MODULE.junk
++ sed -e "s/Q-/D-/g" \
++ -e "s/Q+00/D+00/g" \
++ -e "s/REAL\*16/DOUBLE PRECISION/" $MODULE.junk > $MODULE.f
++ rm -f $MODULE.junk
++ endif
++ set echo
++ %%FC%% -fdefault-integer-8 $OPT -std=legacy $MODULE.f
++ unset echo
++ breaksw
++
++ case ifort:
++ set OPT = '-O2'
++ if ($MODULE == delocl) set OPT='-O0'
++ if ($MODULE == zheev) set OPT='-O0'
++ set echo
++ %%FC%% -c -i8 $OPT -auto -assume byterecl -w95 -cm $MODULE.f
++ unset echo
++ breaksw
++#
++ default:
++ echo "Please spell your AMD64's FORTRAN compiler name correctly."
++ exit 4
++ breaksw
++ endsw
++# ... end of FreeBSD on 64 bit AMD processors.
++endif
++
+ #
+ # Store the generated object code, clean up, and quit
+ #