git: 0c7a24c1125f - main - math/flexiblas: new port, FlexiBLAS - A BLAS and LAPACK wrapper library

From: Thierry Thomas <thierry_at_FreeBSD.org>
Date: Thu, 02 Nov 2023 16:03:34 UTC
The branch main has been updated by thierry:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0c7a24c1125f30afb75c60c2d659f20de334e283

commit 0c7a24c1125f30afb75c60c2d659f20de334e283
Author:     Thierry Thomas <thierry@FreeBSD.org>
AuthorDate: 2023-11-02 14:37:46 +0000
Commit:     Thierry Thomas <thierry@FreeBSD.org>
CommitDate: 2023-11-02 16:02:06 +0000

    math/flexiblas: new port, FlexiBLAS - A BLAS and LAPACK wrapper library
    
    FlexiBLAS - A BLAS and LAPACK wrapper library with runtime exchangeable
    backends.
---
 math/Makefile            |  1 +
 math/flexiblas/Makefile  | 46 +++++++++++++++++++++++++++++++++++++++++
 math/flexiblas/distinfo  |  3 +++
 math/flexiblas/pkg-descr | 17 +++++++++++++++
 math/flexiblas/pkg-plist | 54 ++++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 121 insertions(+)

diff --git a/math/Makefile b/math/Makefile
index 71788b9e5e6c..cd303f2e1b65 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -329,6 +329,7 @@
     SUBDIR += fftw3-quad
     SUBDIR += flann
     SUBDIR += flexfloat
+    SUBDIR += flexiblas
     SUBDIR += flint2
     SUBDIR += flintqs
     SUBDIR += flopc++
diff --git a/math/flexiblas/Makefile b/math/flexiblas/Makefile
new file mode 100644
index 000000000000..327e3ca38f03
--- /dev/null
+++ b/math/flexiblas/Makefile
@@ -0,0 +1,46 @@
+PORTNAME=	flexiblas
+PORTVERSION=	3.3.0
+CATEGORIES=	math
+MASTER_SITES=	https://csc.mpi-magdeburg.mpg.de/mpcsc/software/flexiblas/
+
+MAINTAINER=	thierry@FreeBSD.org
+COMMENT=	BLAS and LAPACK wrapper library with runtime exchangable backends
+WWW=		https://www.mpi-magdeburg.mpg.de/projects/flexiblas
+
+LICENSE=	GPLv3
+
+BUILD_DEPENDS=	tbb>0:devel/tbb	# oneTBB should be supported in 3.3.1
+LIB_DEPENDS=	libblas.so:math/blas	\
+		libblis.so:math/blis	\
+		liblapack.so:math/lapack
+
+USES=		cmake:testing fortran python tar:xz
+
+CONFIGURE_ENV=	PYTHON_EXECUTABLE=${PYTHON_CMD}
+USE_LDCONFIG=	yes
+
+.if defined(WITH_DEBUG)
+CMAKE_ARGS+=	-DFIND_DEBUG:BOOL=ON
+.endif
+
+OPTIONS_DEFINE=		DOCS EXAMPLES
+
+EXAMPLES_CMAKE_ON=	-DEXAMPLES:BOOL=ON
+EXAMPLES_CMAKE_OFF=	-DEXAMPLES:BOOL=OFF
+
+.include <bsd.port.pre.mk>
+
+.if exists(${LOCALBASE}/lib/libatlas.so)
+LIB_DEPENDS+=	libatlas.so:math/atlas
+PLIST_SUB+=	OPENBLAS="@comment " ATLAS=""
+.else
+LIB_DEPENDS+=	libcblas.so:math/cblas	\
+		libopenblas.so:math/openblas
+PLIST_SUB+=	OPENBLAS="" ATLAS="@comment "
+.endif
+
+post-install:
+	${MV} ${STAGEDIR}${PREFIX}/etc/flexiblasrc	\
+		${STAGEDIR}${PREFIX}/etc/flexiblasrc.sample
+
+.include <bsd.port.post.mk>
diff --git a/math/flexiblas/distinfo b/math/flexiblas/distinfo
new file mode 100644
index 000000000000..b503a4b29954
--- /dev/null
+++ b/math/flexiblas/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1697391685
+SHA256 (flexiblas-3.3.0.tar.xz) = 6ae49b098a426d58c9cdc14f3ea4e21196616bf0b87bd4070ffd4cfada2145ee
+SIZE (flexiblas-3.3.0.tar.xz) = 14672164
diff --git a/math/flexiblas/pkg-descr b/math/flexiblas/pkg-descr
new file mode 100644
index 000000000000..dc4860652fd2
--- /dev/null
+++ b/math/flexiblas/pkg-descr
@@ -0,0 +1,17 @@
+FlexiBLAS is a BLAS and LAPACK wrapper library with runtime exchangable
+backends.
+
+- Runtime exchangeable BLAS and LAPACK backend without recompilation of any
+  software.
+- Supports all BLAS functions and al LAPACK functions from Version 3.10.0 with
+  an 100% BLAS and LAPACK compatible ABI/API.
+- Flexible per system/per user/per host configuration files.
+- Integration of user-owned BLAS libraries without administrator privileges,
+  even in system-wide installed programs.
+- Interface for GNU Octave to change the BLAS backend at runtime.
+- Works with NETLIB-BLAS, OpenBLAS, ATLAS, Intel MKL, BLIS, ...
+- Aware of 32-bit and 64-bit integers
+- New: Introspection API to build analysis and profiling tools.
+
+See also: <https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release>
+and <https://github.com/mpimd-csc/flexiblas>.
diff --git a/math/flexiblas/pkg-plist b/math/flexiblas/pkg-plist
new file mode 100644
index 000000000000..9c2851ed69ab
--- /dev/null
+++ b/math/flexiblas/pkg-plist
@@ -0,0 +1,54 @@
+bin/flexiblas
+bin/flexiblas-config
+@sample etc/flexiblasrc.sample
+%%ATLAS%%etc/flexiblasrc.d/ATLAS.conf
+etc/flexiblasrc.d/BlisPThread.conf
+etc/flexiblasrc.d/NETLIB.conf
+%%OPENBLAS%%etc/flexiblasrc.d/OpenBLASOpenMP.conf
+include/flexiblas/blas_gnu.h
+include/flexiblas/blas_intel.h
+include/flexiblas/cblas.h
+include/flexiblas/flexiblas_api.h
+include/flexiblas/flexiblas_backend.h
+include/flexiblas/flexiblas_config.h
+include/flexiblas/flexiblas_dummy_cblas.h
+include/flexiblas/flexiblas_dummy_fortran.h
+include/flexiblas/flexiblas_fortran_mangle.h
+include/flexiblas/flexiblas_mgmt.h
+include/flexiblas/flexiblas_real_calls.h
+include/flexiblas/flexiblas_real_cblas_calls.h
+include/flexiblas/flexiblas_real_lapack.h
+include/flexiblas/lapack.h
+%%ATLAS%%lib/flexiblas/libflexiblas_atlas.so
+lib/flexiblas/libflexiblas_blispthread.so
+lib/flexiblas/libflexiblas_fallback_lapack.so
+lib/flexiblas/libflexiblas_hook_dummy.so
+lib/flexiblas/libflexiblas_hook_profile.so
+lib/flexiblas/libflexiblas_netlib.so
+%%OPENBLAS%%lib/flexiblas/libflexiblas_openblasopenmp.so
+lib/libflexiblas.so
+lib/libflexiblas.so.3
+lib/libflexiblas.so.3.3
+lib/libflexiblas_api.so
+lib/libflexiblas_api.so.3
+lib/libflexiblas_api.so.3.3
+lib/libflexiblas_mgmt.so
+lib/libflexiblas_mgmt.so.3
+lib/libflexiblas_mgmt.so.3.3
+libdata/pkgconfig/flexiblas.pc
+libdata/pkgconfig/flexiblas_api.pc
+share/man/man1/flexiblas.1.gz
+share/man/man3/flexiblas_avail.3.gz
+share/man/man3/flexiblas_current_backend.3.gz
+share/man/man3/flexiblas_get_num_threads.3.gz
+share/man/man3/flexiblas_get_version.3.gz
+share/man/man3/flexiblas_list.3.gz
+share/man/man3/flexiblas_list_loaded.3.gz
+share/man/man3/flexiblas_load_backend.3.gz
+share/man/man3/flexiblas_load_backend_library.3.gz
+share/man/man3/flexiblas_print_avail_backends.3.gz
+share/man/man3/flexiblas_print_current_backend.3.gz
+share/man/man3/flexiblas_print_loaded_backends.3.gz
+share/man/man3/flexiblas_set_num_threads.3.gz
+share/man/man3/flexiblas_switch.3.gz
+share/man/man7/flexiblas-api.7.gz