#!/bin/bash
|
|
|
|
# Usage: buildall [-e] [-nocmp] [-work]
|
|
#
|
|
# Builds everything (std) for every GOOS/GOARCH combination but installs nothing.
|
|
#
|
|
# By default, runs the builds with -toolexec 'toolstash -cmp', to test that the
|
|
# toolchain is producing bit identical output to a previous known good toolchain.
|
|
#
|
|
# Options:
|
|
# -e: stop at first failure
|
|
# -nocmp: turn off toolstash -cmp; just check that ordinary builds succeed
|
|
# -work: pass -work to go command
|
|
|
|
sete=false
|
|
if [ "$1" = "-e" ]; then
|
|
sete=true
|
|
shift
|
|
fi
|
|
|
|
cmp=true
|
|
if [ "$1" = "-nocmp" ]; then
|
|
cmp=false
|
|
shift
|
|
fi
|
|
|
|
work=""
|
|
if [ "$1" = "-work" ]; then
|
|
work="-work"
|
|
shift
|
|
fi
|
|
|
|
cd $(go env GOROOT)/src
|
|
go install cmd/compile cmd/link cmd/asm || exit 1
|
|
pattern="$1"
|
|
if [ "$pattern" = "" ]; then
|
|
pattern=.
|
|
fi
|
|
|
|
targets="$(go tool dist list; echo linux/386/387)"
|
|
targets="$(echo "$targets" | tr '/' '-' | sort | egrep "$pattern" | egrep -v 'android-arm|darwin-arm')"
|
|
|
|
# put linux, nacl first in the target list to get all the architectures up front.
|
|
targets="$(echo "$targets" | egrep 'linux|nacl') $(echo "$targets" | egrep -v 'linux|nacl')"
|
|
|
|
if [ "$sete" = true ]; then
|
|
set -e
|
|
fi
|
|
for target in $targets
|
|
do
|
|
echo $target
|
|
export GOOS=$(echo $target | sed 's/-.*//')
|
|
export GOARCH=$(echo $target | sed 's/.*-//')
|
|
unset GO386
|
|
if [ "$GOARCH" = "387" ]; then
|
|
export GOARCH=386
|
|
export GO386=387
|
|
fi
|
|
if $cmp; then
|
|
if [ "$GOOS" = "android" ]; then
|
|
go build $work -a -toolexec 'toolstash -cmp' std
|
|
else
|
|
go build $work -a -toolexec 'toolstash -cmp' std cmd
|
|
fi
|
|
else
|
|
go build $work -a std
|
|
fi
|
|
done
|