85 lines
1.6 KiB
Bash
Executable File
85 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Script to configure environment variables for Go compiler
|
|
# to allow cross compilation
|
|
|
|
: ${TARGETPLATFORM=}
|
|
: ${TARGETOS=}
|
|
: ${TARGETARCH=}
|
|
: ${TARGETVARIANT=}
|
|
|
|
CGO_ENABLED="$(go env CGO_ENABLED)"
|
|
GOARCH="$(go env GOARCH)"
|
|
GOOS="$(go env GOOS)"
|
|
GOARM="$(go env GOARM)"
|
|
GOBIN="$(go env GOBIN)"
|
|
|
|
set -eu
|
|
|
|
if [ ! -z "$TARGETPLATFORM" ]; then
|
|
TARGETOS="$(echo $TARGETPLATFORM | cut -d"/" -f1)"
|
|
TARGETARCH="$(echo $TARGETPLATFORM | cut -d"/" -f2)"
|
|
TARGETVARIANT="$(echo $TARGETPLATFORM | cut -d"/" -f3)"
|
|
fi
|
|
|
|
if [ ! -z "$TARGETOS" ]; then
|
|
export GOOS="$TARGETOS"
|
|
fi
|
|
|
|
if [ ! -z "$TARGETARCH" ]; then
|
|
export GOARCH="$TARGETARCH"
|
|
fi
|
|
|
|
if [ "$TARGETARCH" = "arm" ]; then
|
|
if [ ! -z "$TARGETVARIANT" ]; then
|
|
case "$TARGETVARIANT" in
|
|
"v5")
|
|
export GOARM="5"
|
|
;;
|
|
"v6")
|
|
export GOARM="6"
|
|
;;
|
|
*)
|
|
export GOARM="7"
|
|
;;
|
|
esac
|
|
else
|
|
export GOARM="7"
|
|
fi
|
|
fi
|
|
|
|
if [ "$CGO_ENABLED" = "1" ]; then
|
|
case "$GOARCH" in
|
|
"amd64")
|
|
export COMPILER_ARCH="x86_64-linux-gnu"
|
|
;;
|
|
"ppc64le")
|
|
export COMPILER_ARCH="powerpc64le-linux-gnu"
|
|
;;
|
|
"s390x")
|
|
export COMPILER_ARCH="s390x-linux-gnu"
|
|
;;
|
|
"arm64")
|
|
export COMPILER_ARCH="aarch64-linux-gnu"
|
|
;;
|
|
"arm")
|
|
case "$GOARM" in
|
|
"5")
|
|
export COMPILER_ARCH="arm-linux-gnueabi"
|
|
;;
|
|
*)
|
|
export COMPILER_ARCH="arm-linux-gnueabihf"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
export CC="${COMPILER_ARCH}-gcc"
|
|
export CXX="${COMPILER_ARCH}-g++"
|
|
export PKG_CONFIG_PATH="/usr/lib/${COMPILER_ARCH}/pkgconfig/"
|
|
|
|
if [ -z "$GOBIN" ] && [ -n "$GOPATH" ] && [ -n "$GOARCH" ] && [ -n "$GOOS" ]; then
|
|
export PATH=${GOPATH}/bin/${GOOS}_${GOARCH}:${PATH}
|
|
fi
|