1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-30 01:15:52 +00:00
freebsd-ports/science/gamess/files/patch-comp
2013-03-05 11:43:18 +00:00

323 lines
12 KiB
Plaintext

--- comp.orig 2012-12-05 05:49:41.000000000 +0900
+++ comp 2013-02-27 15:56:56.000000000 +0900
@@ -97,6 +97,8 @@
if ($TARGET == ibm-bg) set OK=true
if ($TARGET == linux32) set OK=true
if ($TARGET == linux64) set OK=true
+if ($TARGET == freebsd32) set OK=true
+if ($TARGET == freebsd64) set OK=true
if ($TARGET == mac32) set OK=true
if ($TARGET == mac64) set OK=true
if ($TARGET == necsx) set OK=true
@@ -149,6 +151,8 @@
if ($TARGET == ibm-bg) set BLAS3=true
if (($TARGET == linux32) && ($GMS_MATHLIB != none)) set BLAS3=true
if (($TARGET == linux64) && ($GMS_MATHLIB != none)) set BLAS3=true
+if (($TARGET == freebsd32) && ($GMS_MATHLIB != none)) set BLAS3=true
+if (($TARGET == freebsd64) && ($GMS_MATHLIB != none)) set BLAS3=true
if ($TARGET == mac32) set BLAS3=true
if ($TARGET == mac64) set BLAS3=true
if ($TARGET == sgi32) set BLAS3=true
@@ -579,6 +583,26 @@
endif
endif
#
+if ($TARGET == freebsd32) then
+ setenv MACHIN '*I32'
+ if ($MODULE == ddi) setenv MACHIN '*SOC'
+ if ($MODULE == iolib) setenv MACHIN '*UNX'
+ if ($MODULE == unport) setenv MACHIN '*L32'
+endif
+#
+if ($TARGET == freebsd64) then
+ setenv MACHIN '*I64'
+ if ($MODULE == ddi) setenv MACHIN '*SOC'
+ if ($MODULE == iolib) setenv MACHIN '*UNX'
+ if ($MODULE == unport) then
+ if ($GMS_FORTRAN == ifort) then
+ setenv MACHIN '*INT'
+ else
+ setenv MACHIN '*L64'
+ endif
+ endif
+endif
+
if ($TARGET == mac32) then
setenv MACHIN '*I32'
if ($MODULE == ddi) setenv MACHIN '*SOC'
@@ -1640,6 +1664,137 @@
endsw
# ... end of Linux on 32 bit processors.
endif
+if ($TARGET == freebsd32) then
+#
+# there are three supported 32 bit compilers: g77, gfortran, ifort
+# g77,
+# the gnu FORTRAN being included in older Linux distributions
+# lacks support for unit numbers over 99, or REAL*16
+# gfortran,
+# the gnu FORTRAN being included in newer Linux distributions
+# this allows unit numbers over 99, but not REAL*16
+# Intel's commercial ifort,
+# supports unit numbers above 99 and REAL*16 (runs all of GAMESS)
+
+ switch ($GMS_FORTRAN)
+#
+# 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
+# g77 does not support FORTRAN logical units above 99, or 128 bit math.
+#
+ 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
+ if (($MODULE == qeigen) || ($MODULE == int2c)) then
+ mv -f $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) || \
+ ($MODULE == gamess) || ($MODULE == mp2ims)) then
+ mv -f $MODULE_F $MODULE.junk
+ sed -e "s/MXUNIT=299/MXUNIT=99/g" $MODULE.junk > $MODULE_F
+ rm -f $MODULE.junk
+ endif
+ set echo
+ g77 -c $OPT -malign-double -fautomatic \
+ -Wno-globals -fno-globals $MODULE_F
+ unset echo
+ breaksw
+#
+# gfortran was included with Fedora Core distributions starting around FC4.
+# 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 == pcmcv2) set OPT='-O1' # EFP+CPCM, ala Francois, v4.1.2
+ if ($GMS_GFORTRAN_VERNO == 4.6) then
+ if ($MODULE == cosmo) set OPT='-O0' # this issue seen in 4.6.x
+ if ($MODULE == tddgrd) set OPT='-O0' # this issue seen in 4.6.1
+ endif
+ if ($GMS_GFORTRAN_VERNO == 4.7) then
+ if ($MODULE == cosmo) set OPT='-O0'
+ if ($MODULE == dcscf) set OPT='-O0'
+ if ($MODULE == rohfcc) set OPT='-O0'
+ if ($MODULE == tddgrd) set OPT='-O0'
+ endif
+# as of 4.6 tested in late 2011, gfortran can do q.p.!
+ switch ($GMS_GFORTRAN_VERNO)
+ case 4.0:
+ case 4.1:
+ case 4.2:
+ case 4.3:
+ case 4.4:
+ case 4.5:
+ set extraflags=''
+ if (($MODULE == qeigen) || ($MODULE == int2c)) then
+ mv -f $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
+ breaksw
+ case 4.6:
+ case 4.7:
+ set extraflags='-fno-whole-file'
+ breaksw
+ default:
+ echo Unrecognized gfortran version
+ exit 4
+ breaksw
+ endsw
+#
+ set echo
+ %%FC%% -c $OPT -std=legacy $MODULE_F
+ unset echo
+ breaksw
+#
+# 3. Intel Fortran Compiler for Linux
+#
+# Note that this is more agressive (-O3 compared to -O2) than the
+# 64 bit compile below. If an ifort version gives you problems,
+# drop the optimization 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.
+# See http://staff.aist.go.jp/d.g.fedorov/compgms.html for aggressive
+# optimizations in 32 bit mode, as a function of the ifort version.
+#
+ case ifort:
+ set OPT = '-O3'
+ if ($MODULE == delocl) set OPT='-O0' # from Cheol
+ if ($MODULE == prpamm) set OPT='-O0' # for exam13
+ if ($MODULE == zheev) set OPT='-O0'
+ set EXTRAOPT=" "
+ if ($GMS_IFORT_VERNO >= 8) set EXTRAOPT="$EXTRAOPT -assume byterecl"
+ if ($GMS_IFORT_VERNO >= 10) set EXTRAOPT="$EXTRAOPT -vec-report0"
+ if ($GMS_IFORT_VERNO < 12) set EXTRAOPT="$EXTRAOPT -w95 -cm"
+ if ($GMS_IFORT_VERNO >= 12) set EXTRAOPT="$EXTRAOPT -warn nousage -inline-level=0"
+ set echo
+ ifort -c -i4 $OPT -ftz -auto $EXTRAOPT $MODULE_F
+ unset echo
+ breaksw
+#
+ default:
+ echo "Please spell your Linux 32 bit FORTRAN compiler name correctly."
+ exit 4
+ breaksw
+ endsw
+# ... end of FreeBSD on 32 bit processors.
+endif
+
+
#
# ------ Linux on 64 bit chips ------
# This should work on any 64 bit Linux release, for any type of
@@ -1897,6 +2052,136 @@
endsw
# ... end of Linux on 64 bit processors.
endif
+
+if ($TARGET == freebsd64) then
+#
+# there are two supported 64 bit compilers: gfortran, ifort
+#
+ switch ($GMS_FORTRAN)
+
+ case gfortran:
+# -finit-real=<zero|inf|-inf|nan> could be interesting debug opt
+# -fno-automatic forces static storage of all local variables
+# -fno-whole-file suppresses argument's data type checking
+ set OPT='-O2'
+ if (".$GMS_DEBUG_FLAGS" != .) set OPT="$GMS_DEBUG_FLAGS"
+
+ if ($GMS_GFORTRAN_VERNO == 4.6) then
+ if ($MODULE == cosmo) set OPT='-O0' # this issue seen in 4.6.1
+ if ($MODULE == tddgrd) set OPT='-O0' # exam41, seen in 4.6.1
+ endif
+ if ($GMS_GFORTRAN_VERNO == 4.7) then
+ if ($MODULE == cosmo) set OPT='-O0'
+ if ($MODULE == dcscf) set OPT='-O0' # exam44, seen in 4.7 only
+ if ($MODULE == rohfcc) set OPT='-O0' # exam47, seen in 4.7 only
+ if ($MODULE == tddgrd) set OPT='-O0'
+ endif
+ if ($MODULE == zheev) set OPT='-O0' # defensive compiling
+
+ set EXTRAOPT=" "
+
+ if (($MODULE == cchem) || ($MODULE == ga)) then
+ mv $MODULE.f $MODULE.F
+ set MODULE_F=$MODULE.F
+ if ($GMS_LIBCCHEM == true) then
+ if ($MODULE == cchem) set EXTRAOPT="-DHAVE_CCHEM $extraflags"
+ if ($MODULE == ga) set EXTRAOPT="-I$GMS_PATH/libcchem/ga/include"
+ endif
+ endif
+#
+# as of 4.6 tested in late 2011, gfortran can do q.p.!
+ switch ($GMS_GFORTRAN_VERNO)
+ case 4.0:
+ case 4.1:
+ case 4.2:
+ case 4.3:
+ case 4.4:
+ case 4.5:
+ if (($MODULE == qeigen) || ($MODULE == int2c)) then
+ mv -f $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
+ breaksw
+ case 4.6:
+ case 4.7:
+ set EXTRAOPT="$EXTRAOPT -fno-whole-file"
+ breaksw
+ default:
+ echo Unrecognized gfortran version
+ exit 4
+ breaksw
+ endsw
+
+ set echo
+ %%FC%% -c -fdefault-integer-8 $OPT -std=legacy $EXTRAOPT $MODULE_F
+ unset echo
+ breaksw
+
+ case ifort:
+# -i4/-i8 set default integer length
+# -On can have n=1,2,3. Use of 3 caused problems with earlier
+# compilers, so it isn't being used here. Try it if you like.
+# stack storage for locals is governed by -auto versus -save.
+# -assume byterecl was introduced at ifort 8.0 (older versions will
+# print a message saying this flag is ignored). Newer versions
+# need this so that direct access file opens are measured in
+# bytes rather than the new default in v8.0, namely 4-byte units.
+# -vec-report0 suppresses loop vectorization messages (new in 10.0)
+# -w95 suppresses Hollerith initialization and other f90-like warnings
+# -cm means suppress comments about programming practices,
+# these two options spelled '-warn nousage' at version 12.
+# -WB means warn but don't fail on out-of-bounds array references
+# -ftz flushes underflow results to zero
+#
+ set OPT = '-O2'
+ if (".$GMS_DEBUG_FLAGS" != .) set OPT="$GMS_DEBUG_FLAGS"
+# alas, I'm so tired of hearing about so many versions failing to
+# diagonalize, that this time critical code is run w/o optimization.
+# Very many (all?) ifort versions have problems with eigen.src.
+ if ($MODULE == eigen) set OPT='-O0' # read note just above.
+ if ($MODULE == fmo) set OPT='-O1' # 12.0.4, exam37
+ if ($MODULE == guess) set OPT='-O0' # 10.0, exam39
+ if ($MODULE == locpol) set OPT='-O1' # 10.0, makefp/gmres
+ if ($MODULE == morokm) set OPT='-O0' # Jan Fredin
+ if ($MODULE == prpel) set OPT='-O1' # 10.0, exam13
+ if (($MODULE == rohfcc) && ($GMS_IFORT_VERNO == 12)) \
+ set OPT='-O0' # exam42+exam47 (op.sh.CC,IP-EOM)
+ if ($MODULE == tdxitr) set OPT='-O1' # 10.0, exam39
+ if ($MODULE == vscf) set OPT='-O0' # intensities for combinations
+ if ($MODULE == zheev) set OPT='-O0' # defensive compiling
+
+ set EXTRAOPT=" "
+
+ if (($MODULE == cchem) || ($MODULE == ga)) then
+ mv $MODULE.f $MODULE.F
+ set MODULE_F=$MODULE.F
+ if ($GMS_LIBCCHEM == true) then
+ if ($MODULE == cchem) set EXTRAOPT="-DHAVE_CCHEM"
+ if ($MODULE == ga) set EXTRAOPT="-I$GMS_PATH/libcchem/ga/include"
+ endif
+ endif
+
+ if ($GMS_IFORT_VERNO >= 8) set EXTRAOPT="$EXTRAOPT -assume byterecl"
+ if ($GMS_IFORT_VERNO >= 10) set EXTRAOPT="$EXTRAOPT -vec-report0"
+ if ($GMS_IFORT_VERNO < 12) set EXTRAOPT="$EXTRAOPT -w95 -cm"
+ if ($GMS_IFORT_VERNO >= 12) set EXTRAOPT="$EXTRAOPT -warn nousage -inline-level=0"
+ set echo
+ ifort -c -i8 $OPT -ftz -auto $EXTRAOPT $MODULE_F
+ unset echo
+ breaksw
+#
+ default:
+ echo "Please spell your FreeBSD 64 bit FORTRAN compiler name correctly."
+ exit 4
+ breaksw
+ endsw
+# ... end of FreeBSD on 64 bit processors.
+endif
+
+
#
# Apple Macintosh system using OS X
# jargon: 10.0=cheetah, 10.1=puma, 10.2=jaguar, 10.3=panther,