1PORTNAME=	numpy
2PORTVERSION=	1.26.4
3PORTREVISION=	11
4PORTEPOCH=	1
5CATEGORIES=	math python
6MASTER_SITES=	PYPI \
7		https://numpy.org/doc/1.26/:doc
8PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
9DISTFILES=	numpy-${PORTVERSION}${EXTRACT_SUFX} \
10		numpy-html.zip:doc
11DIST_SUBDIR=	numpy-${PORTVERSION:R}
12EXTRACT_ONLY=	${DISTNAME}${EXTRACT_SUFX}
13
14MAINTAINER=	ports@MidnightBSD.org
15COMMENT=	The New Numeric Extension to Python
16WWW=		https://www.numpy.org/
17
18LICENSE=	bsd3
19LICENSE_FILE=	${WRKSRC}/LICENSE.txt
20
21BUILD_DEPENDS=	${PY_SETUPTOOLS} \
22		${PYTHON_PKGNAMEPREFIX}meson-python>=0:devel/meson-python@${PY_FLAVOR}
23
24USES=		compiler:c11 cpe fortran pkgconfig python shebangfix
25USE_PYTHON=	autoplist concurrent cython pep517
26
27# circular ref
28NO_TEST=yes
29
30GCCLIBDIR_CMDS=	${FC} -print-file-name=libgfortran.so | ${SED} -e \
31		s/libgfortran.so//
32PYDISTUTILS_CONFIGUREARGS=	--fcompiler=gnu95
33PYDISTUTILS_BUILDARGS=	--fcompiler=gnu95
34
35LDFLAGS+=	-s
36PIE_UNSAFE=	yes
37
38PORTSCOUT=	limit:^1\.
39
40PORTDOCS=	*
41
42OPTIONS_DEFINE=		DOCS SUITESPARSE
43OPTIONS_DEFAULT=	OPENBLAS SUITESPARSE
44OPTIONS_SINGLE=		BLASLIB
45OPTIONS_SINGLE_BLASLIB=	ATLAS NETLIB OPENBLAS
46SUITESPARSE_DESC=	Use AMD and UMFPACK in SuiteSparse
47
48ATLAS_USES=			blaslapack:atlas
49ATLAS_VARS=			BLASLIBS="ptf77blas, ptcblas" \
50				BLASNAME=atlas \
51				LAPACKLIBS=alapack \
52				LIBRARIES=atlas_libs
53NETLIB_LIB_DEPENDS=		libcblas.so:math/cblas
54NETLIB_USES=			blaslapack:netlib
55NETLIB_VARS=			BLASLIBS="blas, cblas" \
56				BLASNAME=atlas \
57				LAPACKLIBS=lapack \
58				LIBRARIES=atlas_libs
59OPENBLAS_USES=			blaslapack:openblas
60OPENBLAS_VARS=			BLASLIBS="openblas, gfortran" \
61				BLASNAME=openblas \
62				LAPACKLIBS="openblas, gfortran" \
63				LIBRARIES=libraries
64SUITESPARSE_LIB_DEPENDS=	libumfpack.so:math/suitesparse-umfpack
65
66SHEBANG_FILES=	numpy/f2py/crackfortran.py numpy/f2py/f2py2e.py \
67		numpy/f2py/rules.py numpy/testing/print_coercion_tables.py \
68		numpy/testing/setup.py
69
70post-extract:
71	@${TOUCH} ${WRKSRC}/numpy/f2py/tests/src/temp
72	@${TOUCH} ${WRKSRC}/numpy/random/_examples/temp
73	@${TOUCH} ${WRKSRC}/numpy/core/tests/examples/temp
74
75pre-configure:
76	@${REINPLACE_CMD} -e 's|%%FC%%|${FC}|' ${WRKSRC}/numpy/distutils/fcompiler/gnu.py
77	@${CP} ${FILESDIR}/site.cfg ${WRKSRC}/site.cfg
78	${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
79		-e 's|%%BLASLIBS%%|${BLASLIBS}|; s|%%BLASNAME%%|${BLASNAME}|' \
80		-e 's|%%LAPACKLIBS%%|${LAPACKLIBS}|; s|%%LIBRARIES%%|${LIBRARIES}|' \
81			${WRKSRC}/site.cfg
82	@${REINPLACE_CMD} -e "s|%%GCCLIBDIR%%|$$(${GCCLIBDIR_CMDS})|" ${WRKSRC}/site.cfg ${WRKSRC}/numpy/distutils/system_info.py
83
84pre-configure-SUITESPARSE-off:
85	@${REINPLACE_CMD} -e 's|:%%LOCALBASE%%/include/suitesparse||' ${WRKSRC}/site.cfg
86
87do-configure:
88
89post-install:
90	${FIND} ${FAKE_DESTDIR}${PYTHON_SITELIBDIR} -name '*.so' | ${XARGS} ${STRIP_CMD}
91
92post-install-DOCS-on:
93	@${MKDIR} ${FAKE_DESTDIR}${DOCSDIR}
94	${UNZIP_NATIVE_CMD} -qo ${DISTDIR}/${DIST_SUBDIR}/numpy-html.zip -d ${FAKE_DESTDIR}${DOCSDIR}
95	@${RM} ${FAKE_DESTDIR}${DOCSDIR}/.buildinfo
96
97.include <bsd.port.mk>
98