| #!/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/softfloat)" | |
| targets="$(echo "$targets" | tr '/' '-' | sort | grep -E "$pattern" | grep -E -v 'android-arm|darwin-arm')" | |
| # put linux first in the target list to get all the architectures up front. | |
| targets="$(echo "$targets" | grep -E 'linux') $(echo "$targets" | grep -E -v 'linux')" | |
| 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" = "softfloat" ]; then | |
| export GOARCH=386 | |
| export GO386=softfloat | |
| 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 |