#!/usr/bin/env bash . "$GVM_ROOT/scripts/functions" display_usage() { display_message "Usage: gvm cross [os] [arch]" display_message " os = linux/darwin/windows" display_message " arch = amd64/386/arm" } display_list() { echo display_usage echo display_message "Installed platforms:" echo $LS_PATH "$GOROOT/pkg" | $GREP_PATH windows_ | sed 's/^/ /g' $LS_PATH "$GOROOT/pkg" | $GREP_PATH darwin_ | sed 's/^/ /g' $LS_PATH "$GOROOT/pkg" | $GREP_PATH linux_ | sed 's/^/ /g' echo exit 1 } which go &> /dev/null || display_fatal "Only available in versions after Go 1" [ -z "$1" ] && display_list if [ ! -f "$GOROOT/pkg/tool/cross" ]; then display_message "Installing x86, x86-64, and ARM commands" set -e for arch in 8 6 5; do for cmd in a c g l; do go tool dist install -v cmd/$arch$cmd || display_fatal "Couldn't compile tool: $arch$cmd" done done touch "$GOROOT/pkg/tool/cross" fi export GOOS=$1 shift [ -z "$1" ] && display_usage && display_fatal "arch is not specified" export GOARCH=$1 if [ ! -d "$GOROOT/pkg/${GOOS}_${GOARCH}" ]; then display_message "Installing $GOOS $GOARCH runtime library" if [ "$GOOS" = "windows" ]; then export CGO_ENABLED=0 fi cd "$GOROOT/src" go tool dist install -v pkg/runtime || display_fatal "Couldn't compile runtime library for $GOOS $GOARCH" go install -v -a std || display_fatal "Install runtime library for $GOOS $GOARCH" else display_message "Runtime library already installed for $GOOS $GOARCH" fi