PORTNAME=	foreign-cdm
DISTVERSION=	20250224
CATEGORIES=	www multimedia linux
MASTER_SITES=	https://arrowd.name/:cdm
DISTFILES=	cdm-${CDM_INT_HASH}.tar.gz:cdm

MAINTAINER=	ports@MidnightBSD.org
COMMENT=	CDM agent for Chromium
WWW=		https://github.com/shkhln/foreign-cdm

LICENSE=	mit

ONLY_FOR_ARCHS=	aarch64 amd64

BUILD_DEPENDS=	cmake:devel/cmake-core

USES=		linux:rl9

USE_GITHUB=	yes
USE_LDCONFIG=	yes
USE_LINUX=	base:build,run devtools:build

GH_ACCOUNT=	shkhln
GH_PROJECT=	foreign-cdm
GH_TUPLE=	capnproto:capnproto:928c8390d4d562bd32dc79a42eb64e9bdba572d8:capnproto/third_party/capnproto

MAKE_ENV=	MAKE_JOBS_NUMBER=${MAKE_JOBS_NUMBER}

SUB_FILES=	fcdm-setup-env

PLIST_FILES=	libexec/fcdm-jail \
		libexec/fcdm-worker \
		lib/foreign-cdm/fcdm-fbsd.so \
		share/chromium/WidevineCdm/_platform_specific/linux_${LINUX_ARCH}/libwidevinecdm.so \
		share/chromium/WidevineCdm/manifest.json \
		share/foreign-cdm/fcdm-setup-env

CDM_INT_HASH=	06395a2863cb1ebdb47617a995b73f95c14fe120

LINUX_ARCH=	${ARCH:S/amd64/x64/:S/aarch64/arm64/}

.include <bsd.port.pre.mk>

# mports has no devel/linux-c7-devtoolset, so unlike FreeBSD this port is
# Rocky Linux 9 only (USES=linux:rl9 above).
MAKE_ENV+=	LINUX_CC=/compat/linux/usr/bin/${ARCH:S/amd64/x86_64/}-redhat-linux-g++

post-extract:
	${MV} ${WRKDIR}/*.h ${WRKSRC}/third_party/cdm/

post-patch:
	${REINPLACE_CMD} -e 's|chmod a+srX|chmod a+rX|' ${WRKSRC}/Makefile

do-install:
	${MKDIR} ${PREFIX}/libexec
	${INSTALL_PROGRAM} ${WRKSRC}/build/fcdm-jail ${PREFIX}/libexec/
	${CHMOD} u+s ${PREFIX}/libexec/fcdm-jail
	${INSTALL_PROGRAM} ${WRKSRC}/build/fcdm-worker ${PREFIX}/libexec/

	${MKDIR} ${DATADIR}
	${INSTALL_DATA} ${WRKDIR}/fcdm-setup-env ${DATADIR}

	${MKDIR} ${PREFIX}/lib/foreign-cdm
	${CP} ${WRKSRC}/build/fcdm-fbsd.so ${PREFIX}/lib/foreign-cdm/
	${STRIP_CMD} ${PREFIX}/lib/foreign-cdm/fcdm-fbsd.so

	${MKDIR} ${PREFIX}/share/chromium/WidevineCdm/_platform_specific/linux_${LINUX_ARCH}
	# TRUE_PREFIX, not PREFIX: the link targets are runtime paths, while the
	# links themselves land in the staging tree.
	${LN} -s ${TRUE_PREFIX}/lib/foreign-cdm/fcdm-fbsd.so ${PREFIX}/share/chromium/WidevineCdm/_platform_specific/linux_${LINUX_ARCH}/libwidevinecdm.so
	${LN} -s ${TRUE_PREFIX}/lib/WidevineCdm/manifest.json ${PREFIX}/share/chromium/WidevineCdm/manifest.json

.include <bsd.port.post.mk>
