git: 6379a25b53e6 - main - benchmarks/hpl: let’s choose among various BLAS × MPI implementations

From: Thierry Thomas <thierry_at_FreeBSD.org>
Date: Sun, 31 Dec 2023 15:19:47 UTC
The branch main has been updated by thierry:

URL: https://cgit.FreeBSD.org/ports/commit/?id=6379a25b53e6988f825bddd0057e00871b9ebffe

commit 6379a25b53e6988f825bddd0057e00871b9ebffe
Author:     Thierry Thomas <thierry@FreeBSD.org>
AuthorDate: 2023-11-02 21:01:06 +0000
Commit:     Thierry Thomas <thierry@FreeBSD.org>
CommitDate: 2023-12-31 15:18:39 +0000

    benchmarks/hpl: let’s choose among various BLAS × MPI implementations
    
    - Add a license
    - Add options to choose MPI and BLAS implementations.
    - Do not bump PORTREVISION because the default remains Netlib
      (excepted static vs shared libs).
    - And also this fixes the port with BLAS 3.12
    
    Caveat: may install an unneeded liblapack.
    
    PR:             274882, 275860
    Approved by:    maintainer’s time-out
---
 benchmarks/hpl/Makefile | 43 ++++++++++++++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 13 deletions(-)

diff --git a/benchmarks/hpl/Makefile b/benchmarks/hpl/Makefile
index d8cde4f8ef35..e34c23d8e39c 100644
--- a/benchmarks/hpl/Makefile
+++ b/benchmarks/hpl/Makefile
@@ -8,36 +8,53 @@ MAINTAINER=	oliver@FreeBSD.org
 COMMENT=	High Performance Computing Linpack Benchmark
 WWW=		https://www.netlib.org/benchmark/hpl/
 
-LIB_DEPENDS=	libblas.so:math/blas \
-		libmpich.so:net/mpich
+LICENSE=	BSD4CLAUSE
+LICENSE_FILE=	${WRKSRC}/www/copyright.html
 
 USES=		fortran
-USE_LDCONFIG=	yes
 HPL_ARCH?=	FreeBSD_PIV_CBLAS
 MAKE_ARGS=	arch=${HPL_ARCH}
 ALL_TARGET=	build
 
-OPTIONS_DEFINE=	DOCS
+OPTIONS_DEFINE=		DOCS
+OPTIONS_RADIO=		BLAS MPI
+OPTIONS_RADIO_BLAS=	ATLAS BLIS FLEXIBLAS NETLIB OPENBLAS
+OPTIONS_RADIO_MPI=	MPICH OPENMPI
+OPTIONS_DEFAULT=	NETLIB MPICH
+BLIS_DESC=		BLAS implementation from FLAME
+FLEXIBLAS_DESC=		BLAS and LAPACK wrapper library
 
-post-patch:
-	@${REINPLACE_CMD} -e 's|^TOPdir[ ]*=.*$$|TOPdir = ${WRKSRC}| ; \
+ATLAS_USES=		blaslapack:atlas
+BLIS_USES=		blaslapack:blis
+FLEXIBLAS_USES=		blaslapack:flexiblas
+NETLIB_USES=		blaslapack:netlib
+OPENBLAS_USES=		blaslapack:openblas
+
+MPICH_USES=		mpi:mpich
+OPENMPI_USES=		mpi:openmpi
+
+CFLAGS+=	-fomit-frame-pointer -funroll-loops
+
+pre-configure:
+	${REINPLACE_CMD} -e 's|^TOPdir[ ]*=.*$$|TOPdir = ${WRKSRC}| ; \
 		s|^MPdir[ ]*=.*$$|MPdir = ${LOCALBASE}| ; \
 		s|^LAdir[ ]*=.*$$|LAdir = ${LOCALBASE}| ; \
 		s|^CC[ ]*=.*$$|CC = ${CC}| ; \
-		s|^CCFLAGS[ ]*=.*$$|CCFLAGS = $$\(HPL_DEFS\) ${CFLAGS} -fomit-frame-pointer -funroll-loops| ; \
+		s|^CCFLAGS[ ]*=.*$$|CCFLAGS = $$\(HPL_DEFS\) ${CFLAGS}| ; \
 		s|^LINKER[ ]*=.*$$|LINKER = ${FC}| ; \
 		s|^LINKFLAGS[ ]*=\(.*\)$$|LINKFLAGS =\1 ${LDFLAGS}| ; \
 		s|^ARCHIVER[ ]*=.*$$|ARCHIVER = ${AR}| ; \
 		s|ARCH[ )]|_&|g ; \
 		s|^HPL_OPTS[ ]*=.*$$|HPL_OPTS =| ; \
-		s|^LAlib[ ]*=.*$$|LAlib = $$\(LAdir\)/lib/libblas.a| ; \
-		s|libmpich.a|libmpich.so -lpthread| ; \
-		s|libpmpich.a|libmpl.so -lpthread|' \
+		s|^LAlib[ ]*=.*$$|LAlib = ${BLASLIB}| ; \
+		s|^MPdir[ ]*=.*$$|MPdir = ${MPI_HOME}| ; \
+		s|^MPinc[ ]*=.*$$|MPinc = ${MPI_CFLAGS}| ; \
+		s|^MPlib[ ]*=.*$$|MPlib = ${MPI_LIBS}|' \
 		${WRKSRC}/setup/Make.${HPL_ARCH}
-	@${REINPLACE_CMD} -e 's|HPL\.dat|${PREFIX}/etc/${PORTNAME}/&|' \
+	${REINPLACE_CMD} -e 's|HPL\.dat|${PREFIX}/etc/${PORTNAME}/&|' \
 		${WRKSRC}/testing/ptest/HPL_pdinfo.c
-	@${CP} ${WRKSRC}/setup/Make.${HPL_ARCH} ${WRKSRC}/
-	@${REINPLACE_CMD} -e '/^build/s|$$| startup|' ${WRKSRC}/Makefile
+	${CP} ${WRKSRC}/setup/Make.${HPL_ARCH} ${WRKSRC}/
+	${REINPLACE_CMD} -e '/^build/s|$$| startup|' ${WRKSRC}/Makefile
 
 do-install:
 	${MKDIR} ${STAGEDIR}${ETCDIR}