aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES8
-rw-r--r--Mk/bsd.gcc.mk76
-rw-r--r--Mk/bsd.port.mk2
3 files changed, 63 insertions, 23 deletions
diff --git a/CHANGES b/CHANGES
index 01c5feb9bf6f..b4fedfd8537a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,14 @@ in the release notes.
All ports committers are allowed to commit to this file.
+20070712:
+AUTHOR: maho@FreeBSD.org
+
+ * Add knob USE_FORTRAN for ports which uses FORTRAN. All ports uses
+ FORTRAN compiler should use this knob. Usages are: USE_FORTRAN=yes
+ (default;gfortran42), USE_FROTRAN=ifc (Intel FORTRAN compiler)
+ and USE_FORTRAN=g77 (/usr/bin/f77 or g77-34).
+
20070701:
AUTHOR: portmgr@FreeBSD.org
The following change was made to the ports infrastructure:
diff --git a/Mk/bsd.gcc.mk b/Mk/bsd.gcc.mk
index 09977e1b99dd..b6ab72da1480 100644
--- a/Mk/bsd.gcc.mk
+++ b/Mk/bsd.gcc.mk
@@ -9,12 +9,25 @@
# If your port needs a specific version of GCC, you can easily specify
# that with the "USE_GCC=" statement. If you need a certain minimal version,
# but don't care if about the upperversion, just the + sign behind
-# the version.
+# the version. Note that the Fortran compiler is specified with the
+# USE_FORTRAN knob.
#
# For example:
# USE_GCC= 3.3 # port requires GCC 3.3 to build with.
# USE_GCC= 3.4+ # port requires GCC 3.4 or later to build with.
#
+# If your port needs a Fortran compiler, please specify that with the
+# USE_FORTRAN= knob. Here is the list of options for that knob:
+#
+# USE_FORTRAN= yes # use gfortran42 (/lang/gcc42)
+# USE_FORTRAN= gfortran42
+# USE_FORTRAN= g77 # use g77-34 (lang/gcc34; FreeBSD>=7)
+# # or system f77 (/usr/bin/f77; FreeBSD<=6)
+# USE_FORTRAN= ifort # use the Intel compiler (lang/ifc)
+#
+# Due to object file incompatiblity between Fortran compilers, we strongly
+# recommend to use only one of them on any system.
+#
# If you are wondering what your port exactly does, use "make test-gcc"
# to see some debugging.
#
@@ -51,8 +64,43 @@ GCCVERSION_040200= 700042 999999 4.2
#
#
-# See if we can use a later version
+# bsd.gcc.mk can also be used only for FC, F77 settings; in this case we
+# do not define USE_GCC.
#
+
+.if defined (USE_FORTRAN)
+# gfortran42 from lang/gcc42 is the default for now.
+. if ${USE_FORTRAN} == yes || ${USE_FORTRAN} == gfortran42
+BUILD_DEPENDS+= gfortran42:${PORTSDIR}/lang/gcc42
+FC:= gfortran42
+F77:= gfortran42
+. endif
+
+# Intel Fortran compiler from lang/ifc.
+. if ${USE_FORTRAN} == ifort
+BUILD_DEPENDS+= ${LOCALBASE}/intel_fc_80/bin/ifort:${PORTSDIR}/lang/ifc
+FC:= ${LOCALBASE}/intel_fc_80/bin/ifort
+F77:= ${LOCALBASE}/intel_fc_80/bin/ifort
+. endif
+
+# In some case we want to use g77 from lang/gcc34 (FreeBSD>=7) or f77
+# (FreeBSD<=6).
+. if ${USE_FORTRAN} == g77
+. if (${OSVERSION} > 700000)
+BUILD_DEPENDS+= g77-34:${PORTSDIR}/lang/gcc34
+FC:= g77-34
+F77:= g77-34
+.else
+F77:= f77
+FC:= f77
+. endif
+. endif
+
+MAKE_ENV+= F77="${F77}" FC="${FC}"
+.endif
+
+.if defined(USE_GCC)
+# See if we can use a later version
_USE_GCC:= ${USE_GCC:S/+//}
.if ${USE_GCC} != ${_USE_GCC}
_GCC_ORLATER:= true
@@ -127,44 +175,27 @@ _USE_GCC:=${_GCC_FOUND}
#
# Determine if the installed OS already has this GCCVERSION, and if not
-# then set BUILD_DEPENDS, CC, CXX, F77, and FC.
+# then set BUILD_DEPENDS, CC, and CXX.
#
.for v in ${GCCVERSIONS}
. if ${_USE_GCC} == ${_GCCVERSION_${v}_V}
. if ${OSVERSION} < ${_GCCVERSION_${v}_L} || ${OSVERSION} > ${_GCCVERSION_${v}_R}
-# If Fortran support is requested, regardless of the value of USE_GCC
-# we use lang/gcc42 which is the first release which features the new
-# Fortran frontend and has Fortran enabled by default.
-. if defined(WITH_FORTRAN)
-V:= 42
-_GCC_BUILD_DEPENDS:= gcc42
-_GCC_PORT_DEPENDS:= gfortran${V}
-.else
V:= ${_GCCVERSION_${v}_V:S/.//}
_GCC_BUILD_DEPENDS:= gcc${V}
_GCC_PORT_DEPENDS:= gcc${V}
-. endif
CC:= gcc${V}
CXX:= g++${V}
-# Up to GCC 4.0, we had g77, g77-33, g77-34, and the like. Starting
-# with GCC 4.0, we have gfortran, gfortran40, gfortran41, and the like.
-. if ${_USE_GCC} < 4.0
-F77:= g77-${V}
-FC:= ${F77}
-. else
-FC:= gfortran${V}
-F77:= ${FC}
-. endif
. endif
. endif
.endfor
.undef V
+
.if defined(_GCC_BUILD_DEPENDS)
BUILD_DEPENDS+= ${_GCC_PORT_DEPENDS}:${PORTSDIR}/lang/${_GCC_BUILD_DEPENDS}
.endif
-MAKE_ENV+= CC="${CC}" CXX="${CXX}" F77="${F77}" FC="${FC}"
+MAKE_ENV+= CC="${CC}" CXX="${CXX}"
test-gcc:
@echo USE_GCC=${USE_GCC}
@@ -184,3 +215,4 @@ test-gcc:
.endfor
@echo Using GCC version ${_USE_GCC}
@echo CC:${CC} - CXX:${CXX} - F77:${F77} - FC:${FC} - BUILD_DEPENDS:${BUILD_DEPENDS}
+.endif
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index 12597cb6fa1f..cef3fccae2ed 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -1769,7 +1769,7 @@ BUILD_DEPENDS+= gmake:${PORTSDIR}/devel/gmake
CONFIGURE_ENV+= MAKE=${GMAKE}
.endif
-.if defined(USE_GCC)
+.if defined(USE_GCC) || defined(USE_FORTRAN)
.include "${PORTSDIR}/Mk/bsd.gcc.mk"
.endif