#!/bin/bash
set -e

# explicit list of os/arch combos that support being a daemon
declare -A daemonSupporting
daemonSupporting=(
	[linux/amd64]=1
	[windows/amd64]=1
)

# if we have our linux/amd64 version compiled, let's symlink it in
if [ -x "$DEST/../binary-daemon/dockerd-$VERSION" ]; then
	arch=$(go env GOHOSTARCH)
	mkdir -p "$DEST/linux/${arch}"
	(
		cd "$DEST/linux/${arch}"
		ln -s ../../../binary-daemon/* ./
		ln -s ../../../binary-client/* ./
	)
	echo "Created symlinks:" "$DEST/linux/${arch}/"*
fi

for platform in $DOCKER_CROSSPLATFORMS; do
	(
		export KEEPDEST=1
		export DEST="$DEST/$platform" # bundles/VERSION/cross/GOOS/GOARCH/docker-VERSION
		mkdir -p "$DEST"
		ABS_DEST="$(cd "$DEST" && pwd -P)"
		export GOOS=${platform%/*}
		export GOARCH=${platform##*/}

		if [ "$GOOS" != "solaris" ]; then
			# TODO. Solaris cannot be cross build because of CGO calls.
			if [ -z "${daemonSupporting[$platform]}" ]; then
				# we just need a simple client for these platforms
				export LDFLAGS_STATIC_DOCKER=""
				# remove the "daemon" build tag from platforms that aren't supported
				export BUILDFLAGS=( "${ORIG_BUILDFLAGS[@]/ daemon/}" )
				source "${MAKEDIR}/binary-client"
			else
				source "${MAKEDIR}/binary-client"
				source "${MAKEDIR}/binary-daemon"
			fi
		fi
	)
done
