diff options
Diffstat (limited to 'src/quietgcc.bash')
-rwxr-xr-x | src/quietgcc.bash | 44 |
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 |