#!/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
	mkdir -p "$DEST/linux/amd64"
	(
		cd "$DEST/linux/amd64"
		ln -s ../../../binary-daemon/* ./
		ln -s ../../../binary-client/* ./
	)
	echo "Created symlinks:" "$DEST/linux/amd64/"*
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 [ -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
	)
done
