blob: 2a63e6480620af4de3225eedec4c954fc4c83905 [file] [log] [blame]
#!/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.
if test -z "$GOBIN"; then
if ! test -d "$HOME"/bin; then
echo '$GOBIN is not set and $HOME/bin is not a directory or does not exist.' 1>&2
echo 'mkdir $HOME/bin or set $GOBIN to a directory where binaries should' 1>&2
echo 'be installed.' 1>&2
exit 1
fi
GOBIN="$HOME/bin"
elif ! test -d "$GOBIN"; then
echo '$GOBIN is not a directory or does not exist' 1>&2
echo 'create it or set $GOBIN differently' 1>&2
exit 1
fi
GOROOT=${GOROOT:-$(cd ..; pwd)}
if ! test -f "$GOROOT"/include/u.h
then
echo '$GOROOT is not set correctly or not exported' 1>&2
exit 1
fi
# Double-check that we're in $GOROOT, for people with multiple Go trees.
# Various aspects of the build cd into $GOROOT-rooted paths,
# making it easy to jump to a different tree and get confused.
DIR1=$(cd ..; pwd)
DIR2=$(cd $GOROOT; pwd)
if [ "$DIR1" != "$DIR2" ]; then
echo 'Suspicious $GOROOT: does not match current directory.' 1>&2
exit 1
fi
GOARCH=${GOARCH:-$(uname -m | sed 's/^..86$/386/; s/^.86$/386/; s/x86_64/amd64/')}
case "$GOARCH" in
amd64 | 386 | arm)
;;
*)
echo '$GOARCH is set to <'$GOARCH'>, must be amd64, 386, or arm' 1>&2
exit 1
esac
GOOS=${GOOS:-$(uname | tr A-Z a-z)}
case "$GOOS" in
darwin | freebsd | linux | windows | nacl)
;;
*)
echo '$GOOS is set to <'$GOOS'>, must be darwin, freebsd, linux, windows, or nacl' 1>&2
exit 1
esac
export GOBIN GOROOT GOARCH GOOS