69 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
#!/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
 |