diff options
author | Michał Górny <mgorny@gentoo.org> | 2016-06-22 21:50:21 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2016-06-26 17:34:47 +0200 |
commit | 2fea606eba41d9246f510814ce833879368bd835 (patch) | |
tree | 98345156df535f81b749e0f5b9162f7e6f0e494f /eclass/toolchain-funcs.eclass | |
parent | toolchain-funcs.eclass: Assume CPP="$(tc-getCC) -E" when unset, #582822 (diff) | |
download | gentoo-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.eclass | 22 |
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 |