aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'eclass/fortran-2.eclass')
-rw-r--r--eclass/fortran-2.eclass63
1 files changed, 63 insertions, 0 deletions
diff --git a/eclass/fortran-2.eclass b/eclass/fortran-2.eclass
new file mode 100644
index 000000000..6528724c4
--- /dev/null
+++ b/eclass/fortran-2.eclass
@@ -0,0 +1,63 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+# Author Justin Lecher <jlec@gentoo.org>
+
+# @ECLASS: fortran-2.eclass
+# @MAINTAINER:
+# sci@gentoo.org
+# jlec@gentoo.org
+# @BLURB: Packages, which need a frortran compiler should inherit this eclass.
+# @DESCRIPTION:
+# If you need a fortran compiler, inherit this eclass. This eclass tests for
+# working fortran compilers. Optional, check for openmp capability of the
+# current fortran compiler through FCOPENMP=1. Only function exported
+# is pkg_setup.
+
+# @ECLASS-VARIABLE: FCOPENMP
+# @DESCRIPTION:
+# If FCOPNMP=1, FC is tested for openmp capabilities
+#
+# Default is 0
+
+inherit toolchain-funcs
+
+DEPEND="virtual/fortran"
+RDEPEND="${DEPEND}"
+
+_tc-has-fortran() {
+ local base="${T}/test-tc-fortran"
+ cat <<-EOF > "${base}.f"
+ end
+ EOF
+ $(tc-getFC "$@") "${base}.f" -o "${base}" >&/dev/null
+ local ret=$?
+ rm -f "${base}"*
+ return ${ret}
+}
+
+# See if the toolchain gfortran only supports OpenMP.
+_gfortran-has-openmp() {
+ [[ $(tc-getFC) != *gfortran* ]] && return 0
+ local base="${T}/test-fc-openmp"
+ # leave extra leading space to make sure it works on fortran 77 as well
+ cat <<- EOF > "${base}.f"
+ call omp_get_num_threads
+ end
+ EOF
+ $(tc-getFC "$@") -fopenmp "${base}.f" -o "${base}" >&/dev/null
+ local ret=$?
+ rm -f "${base}"*
+ return ${ret}
+}
+
+fortran-2_pkg_setup() {
+ _tc-has-fortran || \
+ die "Please emerge the current gcc with USE=fortran or export FC defining a working fortran compiler"
+ if [[ ${FCOPENMP} == 1 ]]; then
+ _gfortran-has-openmp || die "Please emerge current gcc with USE=openmp"
+ fi
+}
+
+EXPORT_FUNCTIONS pkg_setup