#!/bin/bash
set -e

BINARY_NAME="dockerd-$VERSION"
BINARY_EXTENSION="$(binary_extension)"
BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"

PROXY_NAME="docker-proxy-$VERSION"
PROXY_FULLNAME="$PROXY_NAME$BINARY_EXTENSION"

CLIENTBIN_NAME="docker-$VERSION"
CLIENTBIN_FULLNAME="$CLIENTBIN_NAME$BINARY_EXTENSION"

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

if [[ "${BUILDFLAGS[@]}" =~ 'netgo ' ]]; then
	EXTLDFLAGS_STATIC+=' -lnetgo'
fi
# gccgo require explicit flag -pthread to allow goroutines to work.
go build -compiler=gccgo \
	-o "$DEST/$BINARY_FULLNAME" \
	"${BUILDFLAGS[@]}" \
	-gccgoflags "
		-g
		$EXTLDFLAGS_STATIC
		-Wl,--no-export-dynamic
		-ldl
		-pthread
	" \
	./cmd/dockerd

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

go build -compiler=gccgo \
	-o "$DEST/$PROXY_FULLNAME" \
	"${BUILDFLAGS[@]}" \
	-gccgoflags "
		-g
		$EXTLDFLAGS_STATIC
		-Wl,--no-export-dynamic
		-ldl
		-pthread
	" \
	./vendor/src/github.com/docker/libnetwork/cmd/proxy

echo "Created binary: $DEST/$PROXY_FULLNAME"
ln -sf "$PROXY_FULLNAME" "$DEST/docker-proxy$BINARY_EXTENSION"

copy_containerd "$DEST" "hash"
hash_files "$DEST/$BINARY_FULLNAME"

go build -compiler=gccgo \
	-o "$DEST/$CLIENTBIN_FULLNAME" \
	"${BUILDFLAGS[@]}" \
	-gccgoflags "
		-g
		$EXTLDFLAGS_STATIC
		-Wl,--no-export-dynamic
		-ldl
		-pthread
	" \
	./cmd/docker

echo "Created binary: $DEST/$CLIENTBIN_FULLNAME"
ln -sf "$CLIENTBIN_FULLNAME" "$DEST/docker$BINARY_EXTENSION"
hash_files "$DEST/$CLIENTBIN_FULLNAME"