# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=5

export CTARGET=${CTARGET:-${CHOST}}

inherit eutils toolchain-funcs

SRC_URI="https://storage.googleapis.com/golang/go${PV}.src.tar.gz"
# Upstream only supports go on amd64, arm and x86 architectures.
KEYWORDS="-* amd64 ~arm ~x86 ~amd64-fbsd ~x86-fbsd ~x64-macos ~x86-macos ~x64-solaris"

DESCRIPTION="Version of go compiler used for bootstrapping"
HOMEPAGE="http://www.golang.org"

LICENSE="BSD"
SLOT="0"
IUSE=""

DEPEND=""
RDEPEND=""

# The go tools should not cause the multilib-strict check to fail.
QA_MULTILIB_PATHS="usr/lib/go1.4/pkg/tool/.*/.*"

# The go language uses *.a files which are _NOT_ libraries and should not be
# stripped. The test data objects should also be left alone and unstripped.
STRIP_MASK="/usr/lib/go1.4/pkg/*.a
	/usr/lib/go1.4/src/debug/elf/testdata/*
	/usr/lib/go1.4/src/debug/dwarf/testdata/*
	/usr/lib/go1.4/src/runtime/race/*.syso"

S="${WORKDIR}"/go

src_prepare()
{
	sed -i -e 's/"-Werror",//g' src/cmd/dist/build.c
}

src_compile()
{
	export GOROOT_FINAL="${EPREFIX}"/usr/lib/go1.4
	export GOROOT="$(pwd)"
	export GOBIN="${GOROOT}/bin"
	if [[ $CTARGET = armv5* ]]
	then
		export GOARM=5
	fi
	tc-export CC

	cd src
	./make.bash || die "build failed"
}

src_test()
{
	cd src
	PATH="${GOBIN}:${PATH}" \
		./run.bash --no-rebuild --banner || die "tests failed"
}

src_install()
{
	dodir /usr/lib/go1.4
	exeinto /usr/lib/go1.4/bin
	doexe bin/*
	insinto /usr/lib/go1.4
	doins -r lib pkg src
	fperms -R +x /usr/lib/go1.4/pkg/tool
}

pkg_postinst()
{
	# If the go tool sees a package file timestamped older than a dependancy it
	# will rebuild that file.  So, in order to stop go from rebuilding lots of
	# packages for every build we need to fix the timestamps.  The compiler and
	# linker are also checked - so we need to fix them too.
	ebegin "fixing timestamps to avoid unnecessary rebuilds"
	tref="usr/lib/go1.4/pkg/*/runtime.a"
	find "${EROOT}"usr/lib/go1.4 -type f \
		-exec touch -r "${EROOT}"${tref} {} \;
	eend $?
}
