summaryrefslogtreecommitdiff
path: root/src/quietgcc.bash
diff options
context:
space:
mode:
Diffstat (limited to 'src/quietgcc.bash')
-rwxr-xr-xsrc/quietgcc.bash44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/quietgcc.bash b/src/quietgcc.bash
new file mode 100755
index 000000000..759f6b407
--- /dev/null
+++ b/src/quietgcc.bash
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# The master for this file is $GOROOT/src/quietgcc.bash
+# Changes made to $GOBIN/quietgcc will be overwritten.
+
+# Gcc output that we don't care to see.
+ignore=': error: .Each undeclared identifier'
+ignore=$ignore'|: error: for each function it appears'
+ignore=$ignore'|is dangerous, better use'
+ignore=$ignore'|is almost always misused'
+ignore=$ignore'|: In function '
+ignore=$ignore'|: At top level: '
+ignore=$ignore'|In file included from'
+ignore=$ignore'| from'
+
+# Figure out which cc to run; this is set by make.bash.
+gcc="@CC@"
+if test "$gcc" = "@C""C@"; then
+ gcc=gcc
+fi
+
+# Build 64-bit binaries on 64-bit systems, unless GOHOSTARCH=386.
+case "$(uname -m -p)-$GOHOSTARCH" in
+*x86_64*-386 | *amd64*-386)
+ gcc="$gcc -m32"
+ ;;
+*x86_64* | *amd64*)
+ gcc="$gcc -m64"
+esac
+
+# Run gcc, save error status, redisplay output without noise, exit with gcc status.
+tmp="${TMPDIR:-/tmp}/quietgcc.$$.$USER.out"
+$gcc -Wall -Wno-sign-compare -Wno-missing-braces \
+ -Wno-parentheses -Wno-unknown-pragmas -Wno-switch -Wno-comment \
+ -Werror \
+ "$@" >"$tmp" 2>&1
+status=$?
+egrep -v "$ignore" "$tmp" | uniq | tee "$tmp.1"
+
+rm -f "$tmp" "$tmp.1"
+exit $status