summaryrefslogtreecommitdiffstats
path: root/scripts/gcc-plugin.sh
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2016-06-18 02:11:12 -0400
committerKees Cook <keescook@chromium.org>2016-08-08 20:49:05 -0400
commited58c0e9eefef517aa5a547b78658e2ab4422232 (patch)
tree678081bd9195ee83fc89ccf06ffd4c551d1d9d44 /scripts/gcc-plugin.sh
parentd26e94149276f8c3d4911aa2c8395ba99b613c8d (diff)
gcc-plugins: abort builds cleanly when not supported
When the compiler doesn't support gcc plugins (either due to missing headers or too old a version), report the problem and abort the build instead of emitting a warning and letting the build founder with arcane compiler errors. Signed-off-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'scripts/gcc-plugin.sh')
-rwxr-xr-xscripts/gcc-plugin.sh14
1 files changed, 14 insertions, 0 deletions
diff --git a/scripts/gcc-plugin.sh b/scripts/gcc-plugin.sh
index fb9207565471..b65224bfb847 100755
--- a/scripts/gcc-plugin.sh
+++ b/scripts/gcc-plugin.sh
@@ -1,5 +1,12 @@
1#!/bin/sh 1#!/bin/sh
2srctree=$(dirname "$0") 2srctree=$(dirname "$0")
3
4SHOW_ERROR=
5if [ "$1" = "--show-error" ] ; then
6 SHOW_ERROR=1
7 shift || true
8fi
9
3gccplugins_dir=$($3 -print-file-name=plugin) 10gccplugins_dir=$($3 -print-file-name=plugin)
4plugincc=$($1 -E -x c++ - -o /dev/null -I"${srctree}"/gcc-plugins -I"${gccplugins_dir}"/include 2>&1 <<EOF 11plugincc=$($1 -E -x c++ - -o /dev/null -I"${srctree}"/gcc-plugins -I"${gccplugins_dir}"/include 2>&1 <<EOF
5#include "gcc-common.h" 12#include "gcc-common.h"
@@ -13,6 +20,9 @@ EOF
13 20
14if [ $? -ne 0 ] 21if [ $? -ne 0 ]
15then 22then
23 if [ -n "$SHOW_ERROR" ] ; then
24 echo "${plugincc}" >&2
25 fi
16 exit 1 26 exit 1
17fi 27fi
18 28
@@ -48,4 +58,8 @@ then
48 echo "$2" 58 echo "$2"
49 exit 0 59 exit 0
50fi 60fi
61
62if [ -n "$SHOW_ERROR" ] ; then
63 echo "${plugincc}" >&2
64fi
51exit 1 65exit 1