]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
icecc-toolchain: Disable caret workaround
authorJoshua Watt <jpewhacker@gmail.com>
Mon, 12 Feb 2018 16:52:11 +0000 (10:52 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 15 Feb 2018 13:24:10 +0000 (13:24 +0000)
Icecream has a behavior that causes it to recompile files locally if gcc
generates any warnings or errors. The reason for this is that GCC tries
to re-read the input file in order to display the offending line with a
caret below it, which doesn't work in the remote chroot.

Default to disabling this this workaround and add
-fno-diagnostics-show-caret to the GCC flags so that errors and warnings
generated by GCC do not show erroneous results. Users can override this
default in the SDK by defining ICECC_CARET_WORKAROUND="1" either before
or after sourcing the SDK environment.

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-devtools/icecc-toolchain/icecc-toolchain/icecc-env.sh

index 9c9bb4dc4ea9f308ebe4c7f19a8924b43083cbbb..94760076bfa5ac2ee330c4559bac2b84baa0c9e7 100644 (file)
@@ -25,7 +25,19 @@ if [ -z "$ICECC_PATH" ]; then
 fi
 
 if [ -n "$ICECC_PATH" ]; then
-    export ICECC_PATH
+    # Default to disabling the caret workaround. If set to "1", icecc will
+    # locally recompile any files that have warnings, which can adversely
+    # affect performance.
+    #
+    # See: https://github.com/icecc/icecream/issues/190
+    if [ -z "$ICECC_CARET_WORKAROUND" ]; then
+        ICECC_CARET_WORKAROUND="0"
+    fi
+    if [ "$ICECC_CARET_WORKAROUND" != "1" ]; then
+        CFLAGS="$CFLAGS -fno-diagnostics-show-caret"
+        CXXFLAGS="$CXXFLAGS -fno-diagnostics-show-caret"
+    fi
+    export ICECC_PATH ICECC_CARET_WORKAROUND
     export ICECC_VERSION="$OECORE_NATIVE_SYSROOT/usr/share/icecream/@TOOLCHAIN_ENV@"
     export ICECC="$(which ${CROSS_COMPILE}gcc)"
     export ICECXX="$(which ${CROSS_COMPILE}g++)"