# $NetBSD$

DISTNAME=	rcvd-0.2.0
CATEGORIES=	net
MASTER_SITES=	${MASTER_SITE_GITHUB:=rcvd-dns/}
GITHUB_PROJECT=	rcvd
GITHUB_TAG=	v${PKGVERSION_NOREV}

MAINTAINER=	office@cpm.is
HOMEPAGE=	https://rcvd.net/
COMMENT=	Privacy-first encrypted DNS engine (DoQ/DoT/DoH, no cleartext)
LICENSE=	mit

# rcvd's go.mod requires Go 1.27.
GO_VERSION_REQD=	127

.include "go-modules.mk"

# rcvd runs unprivileged and needs a dedicated user/group.
PKG_GROUPS=		rcvd
PKG_USERS=		rcvd:rcvd
PKG_GECOS.rcvd=		rcvd DNS daemon
PKG_HOME.rcvd=		/nonexistent
PKG_SHELL.rcvd=		${NOLOGIN}

RCD_SCRIPTS=		rcvd

BUILD_DEFS+=		VARBASE

# Config and log directories, owned by the rcvd user.
OWN_DIRS_PERMS+=	${PKG_SYSCONFDIR}/rcvd rcvd rcvd 0755
OWN_DIRS_PERMS+=	${VARBASE}/log/rcvd rcvd rcvd 0755

# The example forwarder profile becomes the default config on first install.
EGDIR=			${PREFIX}/share/examples/rcvd
CONF_FILES=		${EGDIR}/rcvd.toml ${PKG_SYSCONFDIR}/rcvd/rcvd.toml

# Stamp version, date, and source into the binary (parity with the release
# recipe). buildDate is derived from SOURCE_DATE_EPOCH so the build stays
# reproducible: pkgsrc sets it (to a fixed value) under PKGSRC_MKREPRO=yes;
# otherwise it is unset and buildDate keeps the source default ("unknown"),
# never a varying wall-clock time. The release tarball carries no .git, so
# the commit is "unknown" too, by design.
GO_LDFLAGS=		-s -w \
			-X main.version=${PKGVERSION_NOREV} \
			-X main.buildSource=pkgsrc
.if !empty(SOURCE_DATE_EPOCH)
BUILD_DATE_cmd=		date -u -d "@${SOURCE_DATE_EPOCH}" +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || \
			date -u -r "${SOURCE_DATE_EPOCH}" +%Y-%m-%dT%H:%M:%SZ
GO_LDFLAGS+=		-X main.buildDate=${BUILD_DATE_cmd:sh}
.endif
GOFLAGS+=		-ldflags=${GO_LDFLAGS:Q}
GO_BUILD_PATTERN=	./cmd/rcvd

# rcvd is a pure-Go static binary (no cgo), matching the upstream release recipe.
MAKE_ENV+=		CGO_ENABLED=0

INSTALLATION_DIRS+=	${EGDIR} share/doc/rcvd/examples ${PKGMANDIR}/man1

post-install:
	${INSTALL_DATA} ${WRKSRC}/etc/mode1-forwarder-3providers.toml \
		${DESTDIR}${EGDIR}/rcvd.toml
.for f in flagship-dualmode mode1-forwarder-3providers mode2-doh-service
	${INSTALL_DATA} ${WRKSRC}/etc/${f}.toml \
		${DESTDIR}${PREFIX}/share/doc/rcvd/examples/${f}.toml
.endfor
	${INSTALL_MAN} ${WRKSRC}/man/rcvd.1 \
		${DESTDIR}${PREFIX}/${PKGMANDIR}/man1/rcvd.1

.include "../../lang/go/go-module.mk"
.include "../../mk/bsd.pkg.mk"
