1PORTNAME=	db5
2PORTVERSION=	5.3.28
3PORTREVISION=	5
4CATEGORIES=	databases java
5MASTER_SITES=	https://download.oracle.com/berkeley-db/
6PKGNAMEPREFIX?=
7#
8# the distfiles aren't named db5-* but db-*:
9DISTNAME=	db-${PORTVERSION}
10DIST_SUBDIR=	bdb
11
12DEPRECATED=	EOLd, potential security issues, maybe use db18 instead
13
14MAINTAINER=	ports@MidnightBSD.org
15COMMENT=	Oracle Berkeley DB, revision ${BDBVER}
16WWW=		https://www.oracle.com/database/berkeley-db/db.html
17
18LICENSE=	SLEEPYCAT
19LICENSE_NAME=	Sleepycat
20LICENSE_PERMS=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
21LICENSE_FILE=	${WRKSRC}/../LICENSE
22LICENSE_GROUPS=	FSF GPL OSI
23
24BDBVER=		${PORTVERSION:R}
25BDBMAJ=		${BDBVER:R}
26CONFIGURE_ARGS=	--enable-cxx --enable-stl --enable-dbm \
27		--enable-compat185 --enable-dump185 \
28		--includedir=${PREFIX}/include/${PORTNAME} \
29		--libdir=${PREFIX}/lib/${PORTNAME} \
30		--bindir=${PREFIX}/bin/${PORTNAME} \
31		--host=${ARCH}-portbld-midnightbsd${OSREL} \
32		--target=${ARCH}-portbld-midnightbsd${OSREL}
33CONFIGURE_SCRIPT=	../dist/configure
34GNU_CONFIGURE=	yes
35USES=		gmake libtool
36INSTALL_TARGET=	install_include install_lib install_utilities
37WRKSRC=		${WRKDIR}/${DISTNAME}/build_unix
38PATCH_WRKSRC=	${WRKDIR}/${DISTNAME}
39USE_LDCONFIG=	yes
40PLIST_SUB=	BDBMAJ=${BDBMAJ} BDBVER=${BDBVER}
41MAKE_ARGS+=	docdir=${DOCSDIR}
42CFLAGS+=	-Wall -Wextra
43
44OPTIONS_DEFINE=	CRYPTO DEBUG L10N JAVA TCL DOCS
45OPTIONS_DEFAULT=CRYPTO
46OPTIONS_SUB=	yes
47CRYPTO_DESC=	Cryptography support
48L10N_DESC=	Localization support (EXPERIMENTAL)
49
50PORTDOCS=	*
51
52DBLIBS=	libdb libdb_cxx libdb_stl
53
54DEBUG_CONFIGURE_ENABLE=	debug umrw
55CRYPTO_CONFIGURE_WITH=	cryptography=yes
56L10N_CONFIGURE_ENABLE=	localization
57JAVA_USE=		java
58# db5 is incompatible with openjdk8 and causes IllegalArgument
59# exceptions during build
60JAVA_VARS=		DBLIBS+=libdb_java JAVA_VERSION="8"
61JAVA_CONFIGURE_ENABLE=	java
62JAVA_CPPFLAGS=		-I"${JAVA_HOME}/include"
63JAVA_CONFIGURE_ENV=	JAVAC="${JAVAC}" JAR="${JAR}" JAVA="${JAVA}" JAVACFLAGS="-Xlint:unchecked"
64TCL_CONFIGURE_ENABLE=	tcl
65TCL_USES=		tcl
66TCL_CONFIGURE_WITH=	tcl=${TCL_LIBDIR}
67TCL_VARS=		DBLIBS+=libdb_tcl
68DOCS_INSTALL_TARGET=	install_docs
69
70.include <bsd.mport.options.mk>
71
72.if ${ARCH} == aarch64 || ${ARCH:Marmv*}
73# db5 uses a deprecated instruction for mutexes on ARM, fbsd bug#197227
74# and also bug#205001
75CONFIGURE_ARGS+=	--enable-posixmutexes
76# force POSIX mutexes - the OS supports PTHREAD_PROCESS_SHARED
77CONFIGURE_ARGS+=	--with-mutex=POSIX/pthreads
78.endif
79
80post-patch:
81	${REINPLACE_CMD} -i '' -e '/^DOCLIST/{s/csharp//;}' ${WRKSRC}/../dist/Makefile.in
82	${REINPLACE_CMD} -i '' -Ee 's/[[:<:]]atomic_init[[:>:]]/db_atomic_init/g' ${WRKSRC}/../src/mp/mp* ${WRKSRC}/../src/mutex/mut_*
83
84post-install:
85	${STRIP_CMD} ${PREFIX}/bin/db5/db_*
86	${RM} -r ${DOCSDIR}/bdb-sql
87.for i in ${DBLIBS}
88	${STRIP_CMD} ${PREFIX}/lib/${PORTNAME}/${i}-${BDBVER}.so.0
89	${LN} -s -f ${PORTNAME}/${i}-${BDBVER}.so.0 ${PREFIX}/lib
90	${LN} -s -f ${PORTNAME}/${i}-${BDBMAJ}.so ${PREFIX}/lib
91	${LN} -s -f ${i}-${BDBVER}.so.0 ${PREFIX}/lib/${i}-${BDBVER}.so
92	${LN} -s -f ${i}-${BDBVER}.so.0 ${PREFIX}/lib/${i}-${BDBMAJ}.so.0
93	${LN} -s -f ${i}-${BDBVER}.a ${PREFIX}/lib/${PORTNAME}/${i}.a
94.endfor
95	cd ${PREFIX}/bin/${PORTNAME}; \
96	for i in *; do ${LN} -s -f ${PORTNAME}/$$i ../$$i-${BDBVER} ; \
97		       ${LN} -s -f ${PORTNAME}/$$i ../$$i-${BDBMAJ} ; done
98
99post-install-JAVA-off:
100	${RM} -r ${FAKE_DESTDIR}${DOCSDIR}/java
101.for i in gsg gsg_db_rep gsg_txn
102	${RM} -r ${FAKE_DESTDIR}${DOCSDIR}/${i}/JAVA
103.endfor
104
105post-install-TCL-on:
106	echo "package ifneeded Db_tcl ${BDBVER} \
107	      [list load [file join $$dir libdb_tcl-${BDBVER}.so]] \
108	     " > ${FAKE_DESTDIR}${PREFIX}/lib/${PORTNAME}/pkgIndex.tcl
109
110post-install-TCL-off:
111.for i in api_reference/TCL
112	${RM} -r ${FAKE_DESTDIR}${DOCSDIR}/${i}
113.endfor
114
115.include <bsd.port.mk>
116