#!/bin/bash
# Copyright 2015 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

set -e

output="$1"
if test -z "$output"; then
    output=deps.go
fi

# We need to test enough GOOS/GOARCH combinations to pick up all the
# package dependencies.
gooslist="windows linux darwin solaris"
goarchlist="386 amd64 arm arm64 ppc64"

echo NOTE: errors about loading internal/syscall/windows are ok

deps_of() {
	for goos in $gooslist
	do
		for goarch in $goarchlist
		do
			GOOS=$goos GOARCH=$goarch go list -tags cmd_go_bootstrap -f '{{range .Deps}}{{$.ImportPath}} {{.}}
{{end}}' $*
		done
	done | sort -u | grep . | grep -v ' unsafe$'
}

all="$(deps_of cmd/go | awk '{print $2}') cmd/go"
deps_of $all >tmp.all.deps

(
	echo '// generated by mkdeps.bash'
	echo
	echo 'package main'
	echo
	echo 'var builddeps = map[string][]string{'
	for pkg in $all
	do
		echo -n "\"$pkg\": {"
		for dep in $(awk -v pkg=$pkg '$1==pkg {print $2}' tmp.all.deps)
		do
			echo -n "\"$dep\","
		done
		echo '},'
	done
	echo '}'
) |gofmt >$output

rm -f tmp.all.deps
