1PORTNAME=	apr
2PORTVERSION=	${APR_VERSION}.${APU_VERSION}
3PORTREVISION=	3
4CATEGORIES=	devel
5MASTER_SITES=	APACHE/apr
6DISTFILES=	apr-${APR_VERSION}.tar.gz \
7		apr-util-${APU_VERSION}.tar.gz
8
9MAINTAINER=	ports@MidnightBSD.org
10COMMENT=	Apache Portability Library
11WWW=		https://apr.apache.org/
12
13LICENSE=	Apache-2.0
14
15LIB_DEPENDS=	libexpat.so:textproc/expat2
16
17USES=		autoreconf iconv pathfix libtool cpe
18USE_LDCONFIG=	yes
19GNU_CONFIGURE=	yes
20CONFIGURE_ARGS+=	--build=${ARCH}-midnightbsd-freebsd12.4
21
22APR_VERSION=	1.7.5
23APU_VERSION=	1.6.3
24
25CPE_VENDOR=	apache
26CPE_PRODUCT=	apr-util
27CPE_VERSION=	${APU_VERSION}
28
29OPTIONS_SUB=		yes
30OPTIONS_GROUP=		APU
31OPTIONS_DEFINE=		IPV6
32OPTIONS_GROUP_APU=	GDBM LDAP MYSQL NDBM ODBC PGSQL SQLITE
33OPTIONS_RADIO=		BERKELEYDB CRYPTO
34OPTIONS_RADIO_BERKELEYDB=	BDB1 BDB5 BDB18
35OPTIONS_RADIO_CRYPTO=	SSL NSS
36OPTIONS_DEFAULT=	BDB1 GDBM SSL
37
38APU_DESC=		Database support
39BDB1_DESC=		Berkeley DB 1.85 support (BSD 3-clause)
40BDB5_DESC=		Berkeley DB v5 support (deprecated)
41BDB18_DESC=		Berkeley DB 18.x support (AGPLv3)
42BERKELEYDB_DESC=	Berkeley DB provider
43CRYPTO_DESC=		Cryptography provider
44NDBM_DESC=		NDBM support
45NSS_DESC=		NSS crypto driver
46SSL_DESC=		OpenSSL crypto driver
47
48# APR-Util Options
49BDB5_USES=		bdb:5
50BDB18_USES=		bdb:18
51GDBM_LIB_DEPENDS=	libgdbm.so:databases/gdbm
52LDAP_USE=		OPENLDAP=yes
53LDAP_USES=		ldap
54MYSQL_USES=		mysql
55NSS_LIB_DEPENDS=	libnss3.so:security/nss
56ODBC_LIB_DEPENDS=	libodbc.so:databases/unixODBC
57PGSQL_USES=		pgsql
58SQLITE_USES=		sqlite
59SSL_USES=		ssl
60
61APR_WRKDIR=	${WRKDIR}/apr-${APR_VERSION}
62APU_WRKDIR=	${WRKDIR}/apr-util-${APU_VERSION}
63WRKSRC=		${APR_WRKDIR}
64PATCH_WRKSRC=	${WRKDIR}
65PATHFIX_WRKSRC=	${WRKDIR}
66
67SHLIB_APR_MAJOR=${APR_VERSION:C/^1/0/}
68SHLIB_APU_MAJOR=${APU_VERSION:C/^1/0/}
69
70PLIST_SUB+=	SHLIB_APR_MAJOR="${SHLIB_APR_MAJOR}" \
71		SHLIB_APU_MAJOR="${SHLIB_APU_MAJOR}"
72
73APR_CONF_ARGS=	--with-installbuilddir=${DATADIR}/build-1 \
74		--enable-threads \
75		--enable-posix-shm \
76		--with-devrandom
77
78APU_CONF_ARGS=	--with-apr=${APR_WRKDIR} \
79		--with-expat=${LOCALBASE} \
80		--with-iconv=${ICONV_PREFIX}
81
82########## APR Options
83IPV6_VARS=		APR_CONF_ARGS+=--enable-ipv6
84IPV6_VARS_OFF=		APR_CONF_ARGS+=--disable-ipv6
85
86######### APR-Util Options
87# make sure 1st include is "${APR_WRKDIR}/include"
88# to avoid failures if previous apr_version.h is present
89APU_CPPFLAGS=	-I${APR_WRKDIR}/include
90
91BDB1_VARS=	LICENSE_COMB=dual LICENSE+=bsd4 \
92		APU_CONF_ARGS+="--with-berkeley-db=/usr/include:/usr/lib \
93		--with-dbm=db1"
94BDB5_VARS=	APU_CONF_ARGS+="--with-berkeley-db=${BDB_INCLUDE_DIR}:${BDB_LIB_DIR} \
95		--with-dbm=db5"
96BDB18_VARS=	LICENSE_COMB=dual LICENSE+=agpl3 \
97		APU_CONF_ARGS+="--with-berkeley-db=${BDB_INCLUDE_DIR}:${BDB_LIB_DIR} \
98		--with-dbm=db185"
99GDBM_VARS=	APU_CONF_ARGS+=--with-gdbm=${LOCALBASE}
100LDAP_VARS=	APU_CONF_ARGS+="--with-ldap-include=${LOCALBASE}/include \
101			--with-ldap-lib=${LOCALBASE}/lib --with-ldap=ldap"
102MYSQL_VARS=	APU_CONF_ARGS+=--with-mysql=${LOCALBASE} \
103		APU_CPPFLAGS+="-I${LOCALBASE}/include -I${LOCALBASE}/include/mysql -DHAVE_MYSQL_H" \
104		LIBS+=-L${LOCALBASE}/lib/mysql
105NDBM_VARS=	APU_CONF_ARGS+=--with-ndbm=/usr
106NSS_VARS=	APU_CONF_ARGS+=--with-nss=${LOCALBASE} \
107		APU_CPPFLAGS+=-I${LOCALBASE}/include/nss \
108		LDFLAGS+=-L${LOCALBASE}/lib/nss
109ODBC_VARS=	APU_CONF_ARGS+=--with-odbc=${LOCALBASE}
110SSL_VARS=	APU_CONF_ARGS+=--with-openssl=${OPENSSLBASE} \
111		APU_CPPFLAGS+=-I${OPENSSLINC} \
112		LDFLAGS+=-L${OPENSSLLIB}
113SSL_VARS_OFF=	APU_CONF_ARGS+=--without-openssl
114PGSQL_VARS=	APU_CONF_ARGS+=--with-pgsql=${LOCALBASE} \
115		APU_CONF_ENV+=ac_cv_path_PGSQL_CONFIG=""
116SQLITE_VARS=		APU_CONF_ARGS+=--with-sqlite3=${LOCALBASE}
117SQLITE_VARS_OFF=	APU_CONF_ARGS+=--without-sqlite3
118
119.for db in GDBM NDBM LDAP ODBC MYSQL NSS PGSQL
120${db}_VARS_OFF=	APU_CONF_ARGS+=--without-${db:tl}
121.endfor
122
123APR_CONF_ENV+=	${CONFIGURE_ENV:O:u} CC="${CC}" CC_FOR_BUILD="${CC}" \
124		CFLAGS="${CFLAGS}" CPPFLAGS="${CPPFLAGS}"
125# include apu specific CPPFLAGS 1st!
126APU_CONF_ENV+=	${CONFIGURE_ENV:O:u} CC="${CC}" CFLAGS="${CFLAGS}" CPPFLAGS="${APU_CPPFLAGS} ${CPPFLAGS}"
127
128.include <bsd.mport.options.mk>
129
130.if !${PORT_OPTIONS:MBDB1} && !${PORT_OPTIONS:MBDB18} && !${PORT_OPTIONS:MBDB5}
131APU_CONF_ARGS+=	--without-berkeley-db
132PLIST_SUB+=	BERKELEYDB="@comment "
133.else
134PLIST_SUB+=	BERKELEYDB=""
135.endif
136
137.if ${PORT_OPTIONS:MSSL} || ${PORT_OPTIONS:MNSS}
138APU_CONF_ARGS+=	--with-crypto
139.else
140APU_CONF_ARGS+=	--without-crypto
141.endif
142
143.include <bsd.port.pre.mk>
144
145post-extract:
146# cleanup files not used on this platform
147	@${FIND} ${WRKDIR} -type f \( -name 'NWGNU*' -o -name '*.ds?' -o -name '*.dep' -o -name '*.mak' -o -name '*.win' \) -delete
148
149post-patch:
150	@${REINPLACE_CMD} -e 's/OSVERSION/${OSVERSION}/g' \
151		${APR_WRKDIR}/configure
152
153do-configure:
154	@${ECHO_MSG} "# ===> ${.TARGET} apr-${APR_VERSION}"
155	(cd ${APR_WRKDIR} && \
156		${SETENV} ${APR_CONF_ENV} ./configure ${APR_CONF_ARGS} ${CONFIGURE_ARGS})
157	@${ECHO_MSG} "# ===> ${.TARGET} apr-util-${APU_VERSION}"
158	(cd ${APU_WRKDIR} && \
159		autoreconf -f -i && \
160		${SETENV} ${APU_CONF_ENV} ./configure ${APU_CONF_ARGS} ${CONFIGURE_ARGS})
161
162do-build:
163	@${ECHO_MSG} "# ===> ${.TARGET} apr-${APR_VERSION}"
164	(cd ${APR_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${_MAKE_JOBS})
165	@${ECHO_MSG} "# ===> ${.TARGET} apr-util-${APU_VERSION}"
166	(cd ${APU_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${_MAKE_JOBS})
167
168pre-install:
169# always create the modules directory
170	@${MKDIR} ${PREFIX}/lib/apr-util-1
171	${ECHO} "keep me" > ${PREFIX}/lib/apr-util-1/.keep.me
172
173do-install:
174	@(cd ${APR_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${FAKE_MAKEARGS} ${INSTALL_TARGET})
175	@(cd ${APU_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${FAKE_MAKEARGS} ${INSTALL_TARGET})
176	-${FIND} ${PREFIX}/lib/ -name \*.so | ${XARGS} ${STRIP_CMD}
177
178do-test:
179	@${ECHO_MSG} "# ===> ${.TARGET} apr-${APR_VERSION}"
180	-(cd ${APR_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} test)
181	@${ECHO_MSG} "# ===> ${.TARGET} apr-util-${APU_VERSION}"
182	-(cd ${APU_WRKDIR} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} test)
183
184#regression-test: test
185
186rpfl: configure
187# maintainer only: strip PID from logs (better compare)
188	${SED} -i '' -E 's|^configure:[0-9]+:|configure:_pid_:|g' ${APR_WRKDIR}/config.log
189	${SED} -i '' -E 's|^configure:[0-9]+:|configure:_pid_:|g' ${APU_WRKDIR}/config.log
190
191.include <bsd.port.post.mk>
192