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/tests
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/tests')
-rwxr-xr-xeclass/tests/toolchain-funcs.sh40
1 files changed, 40 insertions, 0 deletions
diff --git a/eclass/tests/toolchain-funcs.sh b/eclass/tests/toolchain-funcs.sh
index 41c1ae59306b..6f3799679a00 100755
--- a/eclass/tests/toolchain-funcs.sh
+++ b/eclass/tests/toolchain-funcs.sh
@@ -111,5 +111,45 @@ tc-ld-disable-gold
)
tend $?
+unset CPP
+
+tbegin "tc-get-compiler-type (gcc)"
+(
+export CC=gcc
+[[ $(tc-get-compiler-type) == gcc ]]
+)
+tend $?
+
+if type -P clang &>/dev/null; then
+ tbegin "tc-get-compiler-type (clang)"
+ (
+ export CC=clang
+ [[ $(tc-get-compiler-type) == clang ]]
+ )
+ tend $?
+fi
+
+if type -P pathcc &>/dev/null; then
+ tbegin "tc-get-compiler-type (pathcc)"
+ (
+ export CC=pathcc
+ [[ $(tc-get-compiler-type) == pathcc ]]
+ )
+ tend $?
+
+ tbegin "! tc-is-gcc (pathcc)"
+ (
+ export CC=pathcc
+ ! tc-is-gcc
+ )
+ tend $?
+
+ tbegin "! tc-is-clang (pathcc)"
+ (
+ export CC=pathcc
+ ! tc-is-clang
+ )
+ tend $?
+fi
texit