github.com/adityamillind98/moby@v23.0.0-rc.4+incompatible/hack/make/.binary (about) 1 #!/usr/bin/env bash 2 set -e 3 4 # a helper to provide ".exe" when it's appropriate 5 binary_extension() { 6 if [ "$(go env GOOS)" = 'windows' ]; then 7 echo -n '.exe' 8 fi 9 } 10 11 BINARY_EXTENSION="$(binary_extension)" 12 BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION" 13 14 source "${MAKEDIR}/.go-autogen" 15 16 ( 17 export GOGC=${DOCKER_BUILD_GOGC:-1000} 18 19 if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARCH)" ]; then 20 # must be cross-compiling! 21 if [ "$(go env GOOS)/$(go env GOARCH)" = "linux/arm" ]; then 22 # specify name of the target ARM architecture 23 case "$(go env GOARM)" in 24 5) 25 export CGO_CFLAGS="-march=armv5t" 26 export CGO_CXXFLAGS="-march=armv5t" 27 ;; 28 6) 29 export CGO_CFLAGS="-march=armv6" 30 export CGO_CXXFLAGS="-march=armv6" 31 ;; 32 7) 33 export CGO_CFLAGS="-march=armv7-a" 34 export CGO_CXXFLAGS="-march=armv7-a" 35 ;; 36 esac 37 fi 38 fi 39 40 # -buildmode=pie is not supported on Windows arm64 and Linux mips*, ppc64be 41 # https://github.com/golang/go/blob/go1.19.4/src/cmd/internal/sys/supported.go#L125-L132 42 if ! [ "$DOCKER_STATIC" = "1" ]; then 43 # -buildmode=pie not supported when -race is enabled 44 if [[ " $BUILDFLAGS " != *" -race "* ]]; then 45 case "$(go env GOOS)/$(go env GOARCH)" in 46 windows/arm64 | linux/mips* | linux/ppc64) ;; 47 *) 48 BUILDFLAGS+=("-buildmode=pie") 49 ;; 50 esac 51 fi 52 fi 53 54 # only necessary for non-sandboxed invocation where TARGETPLATFORM is empty 55 PLATFORM_NAME=$TARGETPLATFORM 56 if [ -z "$PLATFORM_NAME" ]; then 57 PLATFORM_NAME="$(go env GOOS)/$(go env GOARCH)" 58 if [ -n "$(go env GOARM)" ]; then 59 PLATFORM_NAME+="/v$(go env GOARM)" 60 elif [ -n "$(go env GOAMD64)" ] && [ "$(go env GOAMD64)" != "v1" ]; then 61 PLATFORM_NAME+="/$(go env GOAMD64)" 62 fi 63 fi 64 65 echo "Building $([ "$DOCKER_STATIC" = "1" ] && echo "static" || echo "dynamic") $DEST/$BINARY_FULLNAME ($PLATFORM_NAME)..." 66 if [ -n "$DOCKER_DEBUG" ]; then 67 set -x 68 fi 69 go build -o "$DEST/$BINARY_FULLNAME" "${BUILDFLAGS[@]}" -ldflags "$LDFLAGS $LDFLAGS_STATIC $DOCKER_LDFLAGS" ${GO_PACKAGE} 70 ) 71 72 echo "Created binary: $DEST/$BINARY_FULLNAME"