aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Thomas <thierry@FreeBSD.org>2023-11-02 14:37:46 +0000
committerThierry Thomas <thierry@FreeBSD.org>2023-11-02 16:02:06 +0000
commit0c7a24c1125f30afb75c60c2d659f20de334e283 (patch)
tree274a4b3b29dfa07daa2dfc964b7cb9a202d50083
parent833bce429aa81e28dd8213540adb046dd58987ce (diff)
math/flexiblas: new port, FlexiBLAS - A BLAS and LAPACK wrapper library
FlexiBLAS - A BLAS and LAPACK wrapper library with runtime exchangeable backends.
-rw-r--r--math/Makefile1
-rw-r--r--math/flexiblas/Makefile46
-rw-r--r--math/flexiblas/distinfo3
-rw-r--r--math/flexiblas/pkg-descr17
-rw-r--r--math/flexiblas/pkg-plist54
5 files changed, 121 insertions, 0 deletions
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