summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2016-06-22 21:50:21 +0200
committerMichał Górny <mgorny@gentoo.org>2016-06-26 17:34:47 +0200
commit2fea606eba41d9246f510814ce833879368bd835 (patch)
tree98345156df535f81b749e0f5b9162f7e6f0e494f /eclass/toolchain-funcs.eclass
parenttoolchain-funcs.eclass: Assume CPP="$(tc-getCC) -E" when unset, #582822 (diff)
downloadgentoo-2fea606eba41d9246f510814ce833879368bd835.tar.gz
gentoo-2fea606eba41d9246f510814ce833879368bd835.tar.bz2
gentoo-2fea606eba41d9246f510814ce833879368bd835.zip
toolchain-funcs.eclass: Add tc-get-compiler-type()
Add a tc-get-compiler-type() function that can be used to identify the compiler being used, using the preprocessor defines. Alike gcc-*version() routines, it uses CPP (which in turn uses CC). The major usage would be applying compiler-specific quirks and limiting gcc version checks to compilers that actually are gcc, since e.g. clang reports gcc version 4.2 -- which would incorrectly cause numerous gcc version checks in ebuilds to fail.
Diffstat (limited to 'eclass/toolchain-funcs.eclass')
-rw-r--r--eclass/toolchain-funcs.eclass22
1 files changed, 22 insertions, 0 deletions
diff --git a/eclass/toolchain-funcs.eclass b/eclass/toolchain-funcs.eclass
index 1baab96aeb70..a29784cd14a4 100644
--- a/eclass/toolchain-funcs.eclass
+++ b/eclass/toolchain-funcs.eclass
@@ -585,6 +585,28 @@ tc-endian() {
esac
}
+# @FUNCTION: tc-get-compiler-type
+# @RETURN: keyword identifying the compiler: gcc, clang, pathcc, unknown
+tc-get-compiler-type() {
+ local code='
+#if defined(__PATHSCALE__)
+ HAVE_PATHCC
+#elif defined(__clang__)
+ HAVE_CLANG
+#elif defined(__GNUC__)
+ HAVE_GCC
+#endif
+'
+ local res=$($(tc-getCPP "$@") -E -P - <<<"${code}")
+
+ case ${res} in
+ *HAVE_PATHCC*) echo pathcc;;
+ *HAVE_CLANG*) echo clang;;
+ *HAVE_GCC*) echo gcc;;
+ *) echo unknown;;
+ esac
+}
+
# Internal func. The first argument is the version info to expand.
# Query the preprocessor to improve compatibility across different
# compilers rather than maintaining a --version flag matrix. #335943