1PORTNAME=	botan
2DISTVERSION=	3.7.1
3CATEGORIES=	security
4MASTER_SITES=	http://botan.randombit.net/releases/
5PKGNAMESUFFIX=	${_BOTANMAJOR}
6DISTNAME=	Botan-${PORTVERSION}
7
8MAINTAINER=	ports@MidnightBSD.org
9COMMENT=	Portable, easy to use and efficient C++ crypto library
10WWW=		https://botan.randombit.net/
11
12LICENSE=	bsd2
13LICENSE_FILE=	${WRKSRC}/license.txt
14
15BUILD_DEPENDS=	${LOCALBASE}/include/boost/asio.hpp:devel/boost-libs
16
17USES=		compiler:c++20-lang cpe gmake llvm shebangfix tar:xz # llvm fixes build failure, see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=279136
18CPE_VENDOR=	${PORTNAME}_project
19USE_LDCONFIG=	yes
20
21SHEBANG_GLOB=	*.py
22
23HAS_CONFIGURE=		yes
24CONFIGURE_SCRIPT=	configure.py
25CONFIGURE_ARGS=		--cc=${CHOSEN_COMPILER_TYPE} \
26			${"${CCACHE_BIN}" != "":?--compiler-cache=${CCACHE_BIN}:} \
27			--prefix=${PREFIX:Q} \
28			--with-boost \
29			--with-bzip2 \
30			--with-external-includedir=${LOCALBASE}/include \
31			--with-external-libdir=${LOCALBASE}/lib \
32			--with-lzma \
33			--with-zlib \
34			--os=freebsd \
35			--program-suffix=${_BOTANMAJOR}
36TEST_TARGET=		check
37LDFLAGS+=		-pthread
38
39DOCSDIR=	${LOCALBASE}/share/doc/${PORTNAME}-${PORTVERSION}
40
41_SOABIVER=	7
42_BOTANMAJOR=	${DISTVERSION:S/./ /g:[1]}
43_SHLIBVER=	${DISTVERSION:S/./ /g:[2]}
44_SHLIBVERPATCH=	${DISTVERSION:S/./ /g:[3]}
45PLIST_SUB=	SHLIBVER=${_SHLIBVER} \
46		SHLIBVERPATCH=${_SHLIBVERPATCH} \
47		SOABIVER=${_SOABIVER} \
48		BOTANMAJOR=${_BOTANMAJOR}
49PORTDOCS=	*
50
51OPTIONS_DEFINE=			DOCS MANPAGES PYTHON SQLITE3
52OPTIONS_DEFAULT=		MANPAGES
53OPTIONS_SUB=			yes
54
55MANPAGES_BUILD_DEPENDS=		${PYTHON_PKGNAMEPREFIX}sphinx>=0:textproc/py-sphinx@${PY_FLAVOR} \
56				${PYTHON_PKGNAMEPREFIX}furo>=2022.6.21:textproc/py-furo@${PY_FLAVOR}
57MANPAGES_CONFIGURE_WITH=	sphinx
58
59PYTHON_USES=		python
60PYTHON_USES_OFF=	python:build
61PYTHON_CONFIGURE_ON=	--with-python-versions=${PYTHON_VER}
62PYTHON_CONFIGURE_OFF=	--no-install-python-module
63
64SQLITE3_USES=		sqlite
65SQLITE3_CONFIGURE_WITH=	sqlite3
66
67.include <bsd.mport.options.mk>
68
69.if ${ARCH} == aarch64
70CONFIGURE_ARGS+=	--cc-abi="-march=armv8-a+crypto"
71.elif ${ARCH:Mpowerpc64*}
72CONFIGURE_ARGS+=	--cpu="ppc64"
73.if !defined(MACHINE_CPU) || (defined(MACHINE_CPU) && !${MACHINE_ABI:Mvsx2})
74CONFIGURE_ARGS+=	--disable-powercrypto
75.endif
76.endif
77
78.if ${ARCH} == i386 || ${ARCH} == amd64
79PLIST_SUB+=	HAS_RDRAND_RNG=""
80.else
81PLIST_SUB+=	HAS_RDRAND_RNG="@comment "
82.endif
83
84.if ${ARCH} == i386 || ${ARCH} == amd64 || ${ARCH:Mpowerpc64*}
85PLIST_SUB+=	HAS_PROCESSOR_RNG=""
86.else
87PLIST_SUB+=	HAS_PROCESSOR_RNG="@comment "
88.endif
89
90post-patch:
91	@${REINPLACE_CMD} -e 's|^optimization_flags .*|optimization_flags "${CXXFLAGS}"|' \
92		${WRKSRC}/src/build-data/cc/clang.txt
93
94post-install:
95	${STRIP_CMD} ${PREFIX}/bin/botan${_BOTANMAJOR} ${PREFIX}/lib/libbotan-${_BOTANMAJOR}.so.${_SOABIVER}.${_SHLIBVER}.${_SHLIBVERPATCH}
96
97.include <bsd.port.mk>
98