# $NetBSD: Makefile.common,v 1.88 2023/07/19 08:42:57 tnn Exp $
#
# used by x11/xlockmore/Makefile
# used by x11/xlockmore-lite/Makefile

DISTNAME=	xlockmore-5.72
CATEGORIES=	x11
# the curl User-Agent is blocked with code 406
#MASTER_SITES=	http://sillycycle.com/xlock/
EXTRACT_SUFX=	.tar.xz

MAINTAINER=	pkgsrc-users@NetBSD.org
HOMEPAGE=	https://sillycycle.com/xlockmore.html
# Similar to BSD license, but uses different words (see xlockmore.spec)
LICENSE=	2-clause-bsd

DISTINFO_FILE?=		${.CURDIR}/../../x11/xlockmore/distinfo
PATCHDIR?=		${.CURDIR}/../../x11/xlockmore/patches
PLIST_SRC?=		${.CURDIR}/../../x11/xlockmore/PLIST
FILESDIR?=		${.CURDIR}/../../x11/xlockmore/files

.include "../../mk/bsd.prefs.mk"

PKG_OPTIONS_VAR=		PKG_OPTIONS.xlockmore
PKG_SUPPORTED_OPTIONS=		xlockmore-allow-root xlockmore-dpms pam
.if ${OPSYS} == "NetBSD"
PKG_SUPPORTED_OPTIONS+=		oss
.endif
PKG_SUGGESTED_OPTIONS=		xlockmore-allow-root xlockmore-dpms
PKG_OPTIONS_LEGACY_VARS+=	XLOCK_DISABLE_ALLOW_ROOT:-xlockmore-allow-root
PKG_OPTIONS_LEGACY_VARS+=	XLOCK_NO_DPMS:-xlockmore-dpms

.include "../../mk/bsd.options.mk"

USE_LANGUAGES=		c c++
USE_TOOLS+=		autoconf autoreconf bash xmkmf

XLOCK_MODULEDIR=	${PREFIX}/lib/X11/xlock/modules
DEFINES+=		-DDEF_MODULEPATH="\"${XLOCK_MODULEDIR}\""
CPPFLAGS+=		${DEFINES}
CXXFLAGS+=		${DEFINES}

# Variable RANDOM is used (a POSIX shell is not sufficient)
CONFIG_SHELL=		bash
GNU_CONFIGURE=		YES
CONFIGURE_ARGS+=	--without-motif
CONFIGURE_ARGS+=	--without-editres
CONFIGURE_ARGS+=	--without-dtsaver
CONFIGURE_ARGS+=	--without-rplay
CONFIGURE_ARGS+=	--without-nas
CONFIGURE_ARGS+=	--without-gtk
CONFIGURE_ARGS+=	--without-esound
CONFIGURE_ARGS+=	--enable-appdefaultdir=${PREFIX}/lib/X11/app-defaults
CONFIGURE_ENV+=		ac_cv_x_app_defaults=${PREFIX}/lib/X11/app-defaults/XLock

OWN_DIRS+=		${PREFIX}/lib/X11/app-defaults
CONF_FILES+=		${EGDIR}/app-defaults/XLock ${PREFIX}/lib/X11/app-defaults/XLock

.if ${OPSYS} == "NetBSD"
XLOCK_AUDIOPLAY?=	/usr/bin/audioplay
CONFIGURE_ARGS+=	--enable-def-play=${XLOCK_AUDIOPLAY:Q}
.endif

.if empty(PKG_OPTIONS:Mxlockmore-dpms)
CONFIGURE_ARGS+=	--without-dpms
.else
.  if ${X11_TYPE} != "native" || !exists(${X11BASE}/lib${LIBABISUFFIX}/libXdpms.a)
BUILDLINK_TRANSFORM+=	l:Xdpms:Xext
.  endif
DPMS_ENV=		no_dpms= ac_dpms_includes=${BUILDLINK_PREFIX.xorgproto}/include ac_dpms_libraries=${BUILDLINK_PREFIX.libXext}/lib
CONFIGURE_ENV+=		ac_cv_path_dpms=${DPMS_ENV:Q}
.endif

.if empty(PKG_OPTIONS:Mxlockmore-allow-root)
CONFIGURE_ARGS+=	--disable-allow-root
.endif

.if !empty(PKG_OPTIONS:Mpam)
.  include "../../mk/pam.buildlink3.mk"
CONFIGURE_ARGS+=	--enable-pam --enable-bad-pam
.  if ${OPSYS} == "NetBSD"
# needed to read shadow passwords
DEPENDS+=       pam-pwauth_suid-[0-9]*:../../security/pam-pwauth_suid
.  endif
.else
CONFIGURE_ARGS+=	--disable-pam

#
# Special permissions of bin/xlock if any.
#
.  if ${OPSYS} == "FreeBSD" || ${OPSYS} == "NetBSD" || \
      ${OPSYS} == "OpenBSD" || ${OPSYS} == "DragonFly" || ${OPSYS} == "SunOS"
SPECIAL_PERMS+=	bin/xlock ${SETUID_ROOT_PERMS}
.  elif ${OPSYS} == "Linux"
# setgid shadow should be enough for modern Linux
SPECIAL_PERMS+=	bin/xlock ${REAL_ROOT_USER} shadow 2511
.  endif
.endif

EGDIR=			${PREFIX}/share/examples/xlock
MESSAGE_SUBST+=		EGDIR=${EGDIR:Q}
INSTALLATION_DIRS+=	${EGDIR}/pam.d
INSTALLATION_DIRS+=	share/doc/xlockmore

# XXX framework bug: while we don't need it, this would kill
# the inherited full dependency
#BUILDLINK_DEPMETHOD.libXt?=	build

.include "../../x11/libICE/buildlink3.mk"
.include "../../x11/libSM/buildlink3.mk"
.include "../../x11/libX11/buildlink3.mk"
.include "../../x11/libXext/buildlink3.mk"
.include "../../x11/libXinerama/buildlink3.mk"
.include "../../x11/libXt/buildlink3.mk"
.include "../../x11/xorgproto/buildlink3.mk"

XINERAMA_ENV=	no_xenerama= ac_xinerama_includes=${BUILDLINK_PREFIX.libXinerama}/include ac_xinerama_libraries=${BUILDLINK_PREFIX.libXinerama}/lib
CONFIGURE_ENV+=	ac_cv_path_xinerama=${XINERAMA_ENV:Q}

# Modify paths in application defaults
SUBST_CLASSES+=		adef
SUBST_STAGE.adef=	pre-configure
SUBST_MESSAGE.adef=	Preparing paths in xlock/XLock.ad file ...
SUBST_FILES.adef=	xlock/XLock.ad
SUBST_SED.adef=		-e 's|/usr/lib/|${PREFIX}/lib/|g'
SUBST_SED.adef+=	-e 's|/usr/local/share/|${PREFIX}/share/|g'

# Set the default xlock mode/screensaver.
# XLOCK_DEFAULT_MODE can be defined by the user in mk.conf
SUBST_CLASSES+=		mode
SUBST_STAGE.mode=	pre-configure
SUBST_MESSAGE.mode=	Preparing default mode in xlock/XLock.ad file ...
SUBST_FILES.mode=	xlock/XLock.ad
SUBST_SED.mode=		-e 's|^\(XLock.mode:[ 	]*\).*|\1${XLOCK_DEFAULT_MODE}|'

# Configure INSTALL.pkgsrc (formerly displayed as MESSAGE)
SUBST_CLASSES+=		install
SUBST_STAGE.install=	post-configure
SUBST_MESSAGE.install=	Preparing INSTALL.pkgsrc file ...
SUBST_FILES.install=	${WRKDIR}/INSTALL.pkgsrc
SUBST_VARS.install=	PREFIX
SUBST_VARS.install+=	EGDIR

post-patch:
	${CP} ${FILESDIR}/INSTALL.pkgsrc ${WRKDIR}

pre-configure:
	cd ${WRKSRC} && autoreconf -vif

post-install:
	${INSTALL_DATA} ${FILESDIR}/pam-xlock-NetBSD \
	    ${DESTDIR}${EGDIR}/pam.d/xlock-NetBSD
	${INSTALL_DATA} ${WRKDIR}/INSTALL.pkgsrc \
	    ${DESTDIR}${PREFIX}/share/doc/xlockmore/INSTALL.pkgsrc
