summaryrefslogtreecommitdiff
path: root/eclass/epunt-cxx.eclass
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /eclass/epunt-cxx.eclass
reinit the tree, so we can have metadata
Diffstat (limited to 'eclass/epunt-cxx.eclass')
-rw-r--r--eclass/epunt-cxx.eclass47
1 files changed, 47 insertions, 0 deletions
diff --git a/eclass/epunt-cxx.eclass b/eclass/epunt-cxx.eclass
new file mode 100644
index 000000000000..30802af340b0
--- /dev/null
+++ b/eclass/epunt-cxx.eclass
@@ -0,0 +1,47 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: epunt-cxx.eclass
+# @MAINTAINER:
+# base-system@gentoo.org
+# @BLURB: A function to punt C++ compiler checks from autoconf
+# @DESCRIPTION:
+# Support for punting C++ compiler checks from autoconf (based
+# on ELT-patches).
+
+if [[ -z ${_EPUNT_CXX_ECLASS} ]]; then
+
+# eutils for eqawarn
+inherit eutils
+
+DEPEND=">=app-portage/elt-patches-20170317"
+
+# @FUNCTION: epunt_cxx
+# @USAGE: [dir to scan]
+# @DESCRIPTION:
+# Many configure scripts wrongly bail when a C++ compiler could not be
+# detected. If dir is not specified, then it defaults to ${S}.
+#
+# https://bugs.gentoo.org/73450
+epunt_cxx() {
+ local dir=$1
+ [[ -z ${dir} ]] && dir=${S}
+ ebegin "Removing useless C++ checks"
+ local f p any_found
+ while IFS= read -r -d '' f; do
+ for p in "${EPREFIX}/usr/share/elt-patches"/nocxx/*.patch ; do
+ if patch --no-backup-if-mismatch -p1 "${f}" "${p}" >/dev/null ; then
+ any_found=1
+ break
+ fi
+ done
+ done < <(find "${dir}" -name configure -print0)
+
+ if [[ -z ${any_found} ]]; then
+ eqawarn "epunt_cxx called unnecessarily (no C++ checks to punt)."
+ fi
+ eend 0
+}
+
+_EPUNT_CXX_ECLASS=1
+fi #_EPUNT_CXX_ECLASS