aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES14
-rw-r--r--Mk/Uses/fortran.mk39
2 files changed, 53 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index f1f4481d0597..0d75a65b4aaa 100644
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,20 @@ in the release notes and/or placed into UPDATING.
All ports committers are allowed to commit to this file.
+20131213:
+AUTHOR: tijl@FreeBSD.org
+
+ New USES=fortran to replace USE_FORTRAN.
+
+ USE_FORTRAN=yes can be replaced with USES=fortran or USES=fortran:gcc.
+ USE_FORTRAN=ifort can be replaced with USES=fortran:ifort.
+ USE_FORTRAN=f77 is deprecated and the version of gcc it depends
+ on (lang/gcc34) is scheduled to be removed.
+
+ Note that USE_FORTRAN=yes also makes GCC the C/C++ compiler while
+ USES=fortran only sets the Fortran compiler and can be used together
+ with Clang as C/C++ compiler.
+
20131208:
AUTHOR: mva@FreeBSD.org
diff --git a/Mk/Uses/fortran.mk b/Mk/Uses/fortran.mk
new file mode 100644
index 000000000000..f86b37d6ec06
--- /dev/null
+++ b/Mk/Uses/fortran.mk
@@ -0,0 +1,39 @@
+# $FreeBSD$
+#
+# Fortran support
+#
+# MAINTAINER: fortran@FreeBSD.org
+#
+# Feature: fortran
+# Usage: USES=fortran
+# Valid ARGS: gcc (default), ifort
+
+.if !defined(_INCLUDE_USES_FORTRAN_MK)
+_INCLUDE_USES_FORTRAN_MK= yes
+
+.if !defined(fortran_ARGS)
+fortran_ARGS= gcc
+.endif
+
+.if ${fortran_ARGS} == gcc
+_GCC_VER= 46
+BUILD_DEPENDS+= gfortran${_GCC_VER}:${PORTSDIR}/lang/gcc
+RUN_DEPENDS+= gfortran${_GCC_VER}:${PORTSDIR}/lang/gcc
+USE_BINUTILS= yes
+F77= gfortran${_GCC_VER}
+FC= gfortran${_GCC_VER}
+FFLAGS+= -Wl,-rpath=${LOCALBASE}/lib/gcc${_GCC_VER}
+LDFLAGS+= -Wl,-rpath=${LOCALBASE}/lib/gcc${_GCC_VER}
+.elif ${fortran_ARGS} == ifort
+BUILD_DEPENDS+= ${LOCALBASE}/intel_fc_80/bin/ifort:${PORTSDIR}/lang/ifc
+RUN_DEPENDS+= ${LOCALBASE}/intel_fc_80/bin/ifort:${PORTSDIR}/lang/ifc
+F77= ${LOCALBASE}/intel_fc_80/bin/ifort
+FC= ${LOCALBASE}/intel_fc_80/bin/ifort
+.else
+IGNORE= USES=fortran: invalid arguments: ${fortran_ARGS}
+.endif
+
+CONFIGURE_ENV+= F77="${F77}" FC="${FC}" FFLAGS="${FFLAGS}"
+MAKE_ENV+= F77="${F77}" FC="${FC}" FFLAGS="${FFLAGS}"
+
+.endif