| #!/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 overridden. |
| |
| # 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=/tmp/qcc.$$.$USER.out |
| $gcc -Wall -Wno-sign-compare -Wno-missing-braces \ |
| -Wno-parentheses -Wno-unknown-pragmas -Wno-switch -Wno-comment \ |
| "$@" >$tmp 2>&1 |
| status=$? |
| egrep -v "$ignore" $tmp | uniq | tee $tmp.1 |
| |
| # Make incompatible pointer type "warnings" stop the build. |
| # Not quite perfect--we should remove the object file--but |
| # a step in the right direction. |
| if egrep 'incompatible pointer type' $tmp.1 >/dev/null; then |
| status=1 |
| fi |
| rm -f $tmp $tmp.1 |
| exit $status |