1
0
mirror of https://github.com/golang/go synced 2024-10-04 22:31:22 -06:00
go/src/quietgcc.bash
Andrew Gerrand 3f032d5670 build: add GOHOSTOS and GOHOSTARCH environment variables.
Auto-detect both if not set, and if GOARCH is not set use GOHOSTARCH.

GOHOSTARCH is used to set the -m32 or -m64 flags for gcc.

This is so that 64-bit can build binaries that run on 32-bit systems.

R=rsc, iant, brainman
CC=golang-dev
https://golang.org/cl/2342045
2010-10-08 18:52:28 +11:00

50 lines
1.5 KiB
Bash
Executable File

#!/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