#!/usr/bin/env bash
set -e

# a helper to provide ".exe" when it's appropriate
binary_extension() {
	if [ "$(go env GOOS)" = 'windows' ]; then
		echo -n '.exe'
	fi
}

GO_PACKAGE='github.com/docker/docker/cmd/dockerd'
BINARY_SHORT_NAME='dockerd'
BINARY_NAME="$BINARY_SHORT_NAME-$VERSION"
BINARY_EXTENSION="$(binary_extension)"
BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"

source "${MAKEDIR}/.go-autogen"

hash_files() {
	while [ $# -gt 0 ]; do
		f="$1"
		shift
		dir="$(dirname "$f")"
		base="$(basename "$f")"
		for hashAlgo in md5 sha256; do
			if command -v "${hashAlgo}sum" &> /dev/null; then
				(
					# subshell and cd so that we get output files like:
					#   $HASH docker-$VERSION
					# instead of:
					#   $HASH /go/src/github.com/.../$VERSION/binary/docker-$VERSION
					cd "$dir"
					"${hashAlgo}sum" "$base" > "$base.$hashAlgo"
				)
			fi
		done
	done
}

(
	export GOGC=${DOCKER_BUILD_GOGC:-1000}

	if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARCH)" ]; then
		# must be cross-compiling!
		case "$(go env GOOS)/$(go env GOARCH)" in
			windows/amd64)
				export CC="${CC:-x86_64-w64-mingw32-gcc}"
				export CGO_ENABLED=1
				;;
			linux/arm)
				case "${GOARM}" in
					5 | "")
						export CC="${CC:-arm-linux-gnueabi-gcc}"
						export CGO_ENABLED=1
						;;
					7)
						export CC="${CC:-arm-linux-gnueabihf-gcc}"
						export CGO_ENABLED=1
						;;
				esac
				;;
			linux/arm64)
				export CC="${CC:-aarch64-linux-gnu-gcc}"
				export CGO_ENABLED=1
				;;
			linux/amd64)
				export CC="${CC:-x86_64-linux-gnu-gcc}"
				export CGO_ENABLED=1
				;;
		esac
	fi

	# -buildmode=pie is not supported on Windows and Linux on mips and riscv64.
	case "$(go env GOOS)/$(go env GOARCH)" in
		windows/* | linux/mips* | linux/riscv*) ;;

		*)
			BUILDFLAGS+=("-buildmode=pie")
			;;
	esac

	echo "Building: $DEST/$BINARY_FULLNAME"
	echo "GOOS=\"${GOOS}\" GOARCH=\"${GOARCH}\" GOARM=\"${GOARM}\""
	go build \
		-o "$DEST/$BINARY_FULLNAME" \
		"${BUILDFLAGS[@]}" \
		-ldflags "
		$LDFLAGS
		$LDFLAGS_STATIC_DOCKER
		$DOCKER_LDFLAGS
	" \
		${GO_PACKAGE}
)

echo "Created binary: $DEST/$BINARY_FULLNAME"
ln -sf "$BINARY_FULLNAME" "$DEST/$BINARY_SHORT_NAME$BINARY_EXTENSION"

hash_files "$DEST/$BINARY_FULLNAME"
