# $OpenBSD: Makefile,v 1.147 2013/02/24 11:18:38 espie Exp $

MULTI_PACKAGES=	-main -ntlm

BROKEN-hppa=	broken autoconf test for atomic ops; test succeeds but actual code build fails
BROKEN-mips64=	broken autoconf test for atomic ops; test succeeds but actual code build fails

COMMENT-main=	WWW and FTP proxy cache and accelerator
COMMENT-ldap=	LDAP authentication/ACL support for Squid
COMMENT-ntlm=	NTLM authentication/ACL support for Squid

V=		3.2.7

DISTNAME=	squid-$V
PKGNAME-main=	squid-$V
PKGNAME-ldap=	squid-ldap-$V
PKGNAME-ntlm=	squid-ntlm-$V
CATEGORIES=	www
REVISION-main = 0
REVISION-ldap = 0

# bzr repository at https://code.launchpad.net/squid
MASTER_SITES=	${HOMEPAGE}Versions/v${V:R:R}/${V:R}/

MAINTAINER=	Stuart Henderson <sthen@openbsd.org>

HOMEPAGE=	http://www.squid-cache.org/

# GPLv2+
PERMIT_PACKAGE_CDROM=	Yes
PERMIT_PACKAGE_FTP=	Yes
PERMIT_DISTFILES_CDROM=	Yes
PERMIT_DISTFILES_FTP=	Yes

WANTLIB += c m pthread stdc++

WANTLIB-main=	${WANTLIB} asn1 crypto execinfo gssapi krb5 ssl

LIB_DEPENDS-main= ${LIB_DEPENDS} devel/libexecinfo

SYSCONFDIR=	${BASESYSCONFDIR}/squid
LOCALSTATEDIR=	${BASELOCALSTATEDIR}/squid
SUBST_VARS=	LOCALSTATEDIR

PSEUDO_FLAVORS=	no_ldap
FLAVOR?=

BASIC_AUTH=	NCSA SMB NIS radius
DIGEST_AUTH=	file
EXTERNAL_ACL=	file_userip session unix_group wbinfo_group
STOREIO=	aufs ufs diskd #coss rock

SEPARATE_BUILD=	Yes
AUTOCONF_VERSION= 2.68
AUTOMAKE_VERSION= 1.11
BUILD_DEPENDS=	${MODGNU_AUTOCONF_DEPENDS} \
		${MODGNU_AUTOMAKE_DEPENDS} \
		devel/libtool
CONFIGURE_STYLE= gnu
MODGNU_CONFIG_GUESS_DIRS= ${WRKSRC}/cfgaux

USE_GROFF=	Yes
USE_LIBTOOL=	Yes

# gcc 4.2: src/ipc/StoreMap.cc fails with "unrecognizable insn" unless
# optimizer is disabled, see e.g.
# http://www.squid-cache.org/mail-archive/squid-users/201208/0060.html
MODULES+=	gcc4
MODGCC4_ARCHS=	powerpc
MODGCC4_LANGS=	c c++

CONFIGURE_ARGS+= ${CONFIGURE_SHARED} \
		--datadir="${PREFIX}/share/squid" \
		--libexecdir="${PREFIX}/libexec/squid" \
		--disable-loadable-modules \
		--enable-arp-acl \
		--enable-auth \
		--enable-auth-basic="${BASIC_AUTH}" \
		--enable-auth-digest="${DIGEST_AUTH}" \
		--enable-auth-negotiate="kerberos" \
		--enable-auth-ntlm="fake smb_lm" \
		--enable-delay-pools \
		--enable-external-acl-helpers="${EXTERNAL_ACL}" \
		--enable-follow-x-forwarded-for \
		--enable-forw-via-db \
		--enable-http-violations \
		--enable-icap-client \
		--enable-ipv6 \
		--enable-referer-log \
		--enable-removal-policies="lru heap" \
		--enable-ssl \
		--enable-stacktraces \
		--enable-storeio="${STOREIO}" \
		--with-default-user="_squid" \
		--with-filedescriptors=8192 \
		--with-pidfile="/var/run/squid.pid" \
		--with-pthreads \
		--with-swapdir="${LOCALSTATEDIR}/cache"
# PF transparent support requires access to /dev/pf to retrieve the original
# source address; ipfw-transparent (which requires divert-to) uses an
# unprivileged getsockname() call instead.
CONFIGURE_ARGS+= --disable-pf-transparent \
		--enable-ipfw-transparent
CONFIGURE_ENV+=	CPPFLAGS="-I${LOCALBASE}/include" \
		LDFLAGS="-L${LOCALBASE}/lib" \
		ac_cv_header_et_com_err_h=false
E=		${TRUEPREFIX}/share/examples/squid
FAKE_FLAGS=	sysconfdir=$E \
		DEFAULT_CONFIG_FILE=$E/squid.conf \
		DEFAULT_MIME_TABLE=$E/mime.conf
REGRESS_DEPENDS= devel/cppunit

.if !${FLAVOR:Mno_ldap}
MULTI_PACKAGES+= -ldap
BASIC_AUTH+=	LDAP
DIGEST_AUTH+=	LDAP
EXTERNAL_ACL+=	LDAP_group
RUN_DEPENDS-ldap= ${BASE_PKGPATH}
LIB_DEPENDS-ldap= ${LIB_DEPENDS} databases/openldap
WANTLIB-ldap +=	${WANTLIB} asn1 com_err crypto gssapi krb5
WANTLIB-ldap +=	lber-2.4 ldap-2.4 sasl2 ssl
.endif

RUN_DEPENDS-ntlm= net/samba,ads ${BASE_PKGPATH}

post-extract:
	@cp ${FILESDIR}/krb5-config ${WRKDIR}/bin
	@chmod a+x ${WRKDIR}/bin/krb5-config

post-patch:
	cd ${WRKSRC}; AUTOCONF_VERSION=${AUTOCONF_VERSION} AUTOMAKE_VERSION=${AUTOMAKE_VERSION} LOCALBASE=${LOCALBASE} ./bootstrap.sh

pre-build:
	@cd ${WRKSRC}; \
	perl -pi -e 's,/usr/local,${LOCALBASE},g' \
	    helpers/external_acl/wbinfo_group/ext_wbinfo_group_acl.pl.in \
	    helpers/*/*/config.test \
	    src/squid.8.in

post-install:
	rm -rf ${WRKINST}/var/squid
	cd ${PREFIX}/share/examples/squid; \
	    rm -f mime.conf squid.conf cachemgr.conf errorpage.css
	${INSTALL_DATA_DIR} ${PREFIX}/share/snmp/mibs
	-cd ${PREFIX}/share; mv squid/mib.txt snmp/mibs/SQUID-MIB.txt

.include <bsd.port.mk>
