summaryrefslogtreecommitdiff
path: root/src/quietgcc.bash
blob: 759f6b407cb3114e62f3adcdac8d142a2ff55595 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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