commit:     3ef6b33339da7bb04afd77e1bc5db011b02d658a
Author:     Mattias Nissler <mnissler <AT> chromium <DOT> org>
AuthorDate: Mon Nov  4 10:11:20 2019 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Wed Nov  6 22:44:33 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3ef6b333

toolchain-funcs.eclass: fix tc-cpp-is-true() to work with clang

Clang's preprocessor likes to output a leading newline, which makes
the comparison always fail. GCC generates additional output with certain
flags (e.g. -ggdb3) as well. Hence, switch the test to trigger a
preprocessor error when the condition is not true and examine the exit
code.

Bug: https://bugs.gentoo.org/698912

Signed-off-by: Mattias Nissler <mnissler <AT> chromium.org>
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 eclass/toolchain-funcs.eclass | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/eclass/toolchain-funcs.eclass b/eclass/toolchain-funcs.eclass
index e358d484417..1bc6cbbc108 100644
--- a/eclass/toolchain-funcs.eclass
+++ b/eclass/toolchain-funcs.eclass
@@ -207,14 +207,13 @@ tc-cpp-is-true() {
        local CONDITION=${1}
        shift
 
-       local RESULT=$($(tc-getTARGET_CPP) "${@}" -P - <<-EOF 2>/dev/null
-                       #if ${CONDITION}
-                       true
-                       #endif
-               EOF
-       )
-
-       [[ ${RESULT} == true ]]
+       $(tc-getTARGET_CPP) "${@}" -P - <<-EOF >/dev/null 2>&1
+               #if ${CONDITION}
+               true
+               #else
+               #error false
+               #endif
+       EOF
 }
 
 # @FUNCTION: tc-detect-is-softfloat

Reply via email to