# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

EGO_PN="github.com/xtaci/kcptun"

inherit go-module

DESCRIPTION="A Stable & Secure Tunnel Based On KCP with N:M Multiplexing"
HOMEPAGE="https://github.com/xtaci/kcptun"

SRC_URI="https://github.com/xtaci/kcptun/archive/v${PV}.tar.gz -> ${P}.tar.gz"

KEYWORDS="~amd64 ~arm64"
LICENSE="MIT"
IUSE="+server"
SLOT="0"

src_compile() {
#	for x in client $(usev server); do
#		CGO_ENABLED=0 GOPATH="${S}:$(get_golibdir_gopath)" \
#			go build -v -work -x -ldflags "-X main.VERSION=${PV} -w" \
#				-o "bin/${PN}-${x}" "${EGO_PN}/${x}" || die
#	done
	./build-release.sh
}

src_install() {
#	dodoc "src/${EGO_PN}"/{README.md,Dockerfile}

	use amd64 && newbin build/client_linux_amd64 ${PN}-client
	use arm64 && newbin build/client_linux_arm64 ${PN}-client

	use amd64 && use server && newbin build/server_linux_amd64 ${PN}-server
	use arm64 && use server && newbin build/server_linux_arm64 ${PN}-server

	insinto "/etc/kcptun"
	for x in client $(usev server); do
		doins "${FILESDIR}"/example-${x}.json

		newinitd "${FILESDIR}"/kcptun-${x}.initd kcptun-${x}
		newconfd "${FILESDIR}"/kcptun-${x}.confd kcptun-${x}
	done
	default
}

pkg_postinst() {
	ewarn "\nSuggested \"/etc/sysctl.conf\" parameters for better handling of UDP packets:"
	ewarn "    net.core.rmem_max=26214400 // BDP - bandwidth delay product"
	ewarn "    net.core.rmem_default=26214400"
	ewarn "    net.core.wmem_max=26214400"
	ewarn "    net.core.wmem_default=26214400"
	ewarn "    net.core.netdev_max_backlog=2048 // proportional to -rcvwnd"

	einfo "\nSee documentation:"
	einfo "    https://github.com/xtaci/kcptun#quickstart"
	einfo "    https://github.com/skywind3000/kcp/blob/master/README.en.md\n"
}