git: ac7e0fd8fa86 - main - science/elk: Update 8.5.10 -> 8.6.7

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Tue, 13 Dec 2022 03:47:41 UTC
The branch main has been updated by yuri:

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

commit ac7e0fd8fa86143b4c735c47e9d9142f1b71e093
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-12-12 15:44:12 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-12-13 03:47:34 +0000

    science/elk: Update 8.5.10 -> 8.6.7
    
    Also add MPI options.
---
 science/elk/Makefile                 |  29 +++++---
 science/elk/distinfo                 |   6 +-
 science/elk/files/make.inc.in        | 133 +++++++++++++++++++++++++++++++----
 science/elk/files/patch-src_Makefile |  11 +++
 4 files changed, 156 insertions(+), 23 deletions(-)

diff --git a/science/elk/Makefile b/science/elk/Makefile
index ef559b466844..3696349faf84 100644
--- a/science/elk/Makefile
+++ b/science/elk/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	elk
-DISTVERSION=	8.5.10
+DISTVERSION=	8.6.7
 CATEGORIES=	science
 MASTER_SITES=	SF/${PORTNAME}/
 PKGNAMESUFFIX=	-chemistry
@@ -12,9 +12,14 @@ WWW=		http://elk.sourceforge.net/
 LICENSE=	GPLv3
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-LIB_DEPENDS=	libblis.so:math/blis \
+LIB_DEPENDS=	libblas.so:math/blas \
+		libblis.so:math/blis \
+		libfftw3.so:math/fftw3 \
+		libfftw3f.so:math/fftw3-float \
+		liblapack.so:math/lapack \
 		libopenblas.so:math/openblas \
-		libwannier.so:science/wannier90
+		libwannier.so:science/wannier90 \
+		libxc.so:science/libxc
 
 USES=		fortran gmake tar:tgz
 
@@ -22,14 +27,22 @@ BINARY_ALIAS=	make=${GMAKE}
 
 LDFLAGS+=	${LOCALBASE}/lib/gcc${GCC_DEFAULT}/libgcc_s.so
 
-OPTIONS_GROUP=		PARALLEL
-OPTIONS_GROUP_PARALLEL=	OPENMP MPI
-OPTIONS_DEFINE=		DOCS EXAMPLES
-OPTIONS_DEFAULT=	${OPTIONS_GROUP_PARALLEL}
+OPTIONS_DEFINE=		DOCS EXAMPLES NATIVE OPENMP
+OPTIONS_RADIO=		MPI
+OPTIONS_RADIO_MPI=	MPICH OPENMPI
+OPTIONS_DEFAULT=	OPENMP MPICH
 PARALLEL_DESC=		Enable parallelizations:
 
+NATIVE_MAKE_ARGS=	FFLAGS="${FFLAGS} -march=native -mtune=native"
+NATIVE_VARS=		FFLAGS="-march=native -mtune=native"
+
 OPENMP_VARS=		OPENMP_FLAGS=-fopenmp
-MPI_RUN_DEPENDS=	mpirun:net/mpich
+
+MPICH_USES=		mpi:mpich
+MPICH_MAKE_ARGS=	F90=${MPIF90}
+
+OPENMPI_USES=		mpi:openmpi
+OPENMPI_MAKE_ARGS=	F90=${MPIF90}
 
 PORTDOCS=		*
 PORTEXAMPLES=		*
diff --git a/science/elk/distinfo b/science/elk/distinfo
index 5514be0a28c4..0d3f3d1db8b0 100644
--- a/science/elk/distinfo
+++ b/science/elk/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1664142665
-SHA256 (elk-chemistry/elk-8.5.10.tgz) = 41d6ff3715c26c7aff50df57d259c03df58abd4a04ad02c8ab76b962643b0c7b
-SIZE (elk-chemistry/elk-8.5.10.tgz) = 4134441
+TIMESTAMP = 1670840855
+SHA256 (elk-chemistry/elk-8.6.7.tgz) = d685be1a8e401875646c80204addcdd6b93952ab8d1e821d512be903b38479a4
+SIZE (elk-chemistry/elk-8.6.7.tgz) = 3764657
diff --git a/science/elk/files/make.inc.in b/science/elk/files/make.inc.in
index 7cc517f7179a..d5b45646acce 100644
--- a/science/elk/files/make.inc.in
+++ b/science/elk/files/make.inc.in
@@ -1,16 +1,125 @@
 
 MAKE = %%GMAKE%%
-F90 = %%FC%%
-F90_OPTS = -O3 -ffast-math -funroll-loops %%OPENMP_FLAGS%% %%FCFLAGS%%
-F77 = %%FC%%
-F77_OPTS = -O3 -ffast-math -funroll-loops %%OPENMP_FLAGS%%
 AR = ar
-LIB_SYS = -lopenblas -lblis
-LIB_LPK = lapack.a blas.a
-LIB_FFT = fftlib.a
-LIB_W90 = -lwannier
-SRC_OMP = 
+
+
+# Elk requires BLAS/LAPACK and fast Fourier transform (FFT) libraries.
+
+# We recommend using optimised, mutithreaded BLAS/LAPACK libaries such as those
+# provided by the Intel Math Kernel Library (MKL), OpenBLAS or BLIS.
+
+# Elk can use either the Fastest Fourier Transform in the West (FFTW) or the
+# MKL FFT. Both single and double precision versions of the FFT are needed.
+
+
+
+#------------------------------------------------------------------------------#
+#                                  Libraries                                   #
+#------------------------------------------------------------------------------#
+
+#-------------------------------------------------------------------------------
 SRC_MKL = mkl_stub.f90
-SRC_MPI = mpi_stub.f90
-SRC_libxc = libxcifc_stub.f90
-SRC_FFT = zfftifc.f90
+# To enable MKL multithreaded parallelism, uncomment the following line and link
+# with the MKL library.
+#SRC_MKL =
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+SRC_OBLAS = oblas_stub.f90
+# To enable OpenBLAS multithreaded parallelism, uncomment the following line and
+# link with the OpenBLAS library.
+#SRC_OBLAS =
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+SRC_BLIS = blis_stub.f90
+# To enable BLIS multithreaded parallelism, uncomment the following line and
+# link with the BLIS library.
+#SRC_BLIS =
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# If your compiler does *not* support the Message Passing Interface (MPI) then
+# uncomment the line below.
+#SRC_MPI = mpi_stub.f90
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# Elk supports two FFT libraries:
+#   Fastest Fourier Transform in the West (FFTW)
+#   Intel Math Kernel Library (MKL) Fast Fourier Transform
+#
+# FFTW is enabled by default with:
+SRC_FFT = zfftifc_fftw.f90 cfftifc_fftw.f90
+#
+# To enable MKL FFT instead, copy mkl_dfti.f90 to the elk/src directory and
+# uncomment the line below.
+#SRC_FFT = mkl_dfti.f90 zfftifc_mkl.f90 cfftifc_mkl.f90
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+SRC_LIBXC = libxcifc_stub.f90
+# To enable Libxc first download and compile version 5.x of the library. Next
+# copy the files libxcf90.a and libxc.a to the elk/src directory and uncomment
+# the following lines.
+LIB_LIBXC = -lxcf90 -lxc
+SRC_LIBXC = libxcf90.f90 libxcifc.f90
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+SRC_W90S = w90_stub.f90
+# To enable the Wannier90 library copy libwannier.a to the elk/src directory and
+# uncomment the following lines.
+#SRC_W90S =
+#LIB_W90 = libwannier.a
+#-------------------------------------------------------------------------------
+
+
+
+#------------------------------------------------------------------------------#
+#                                  Compilers                                   #
+#------------------------------------------------------------------------------#
+
+#-------------------------------------------------------------------------------
+# Intel MPI Fortran version 18 and later.
+#F90 = %%FC%%
+#F90_OPTS = -O3 %%OPENMP_FLAGS%% %%FCFLAGS%%
+#F90_LIB = -liomp5 -lpthread -lm -ldl
+#SRC_MKL =
+#AR = xiar
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# GNU Fortran compiler with MKL.
+F90 =
+F90_OPTS = $(FFLAGS) -Ofast -fomit-frame-pointer -fopenmp -ffpe-summary=none -fallow-argument-mismatch
+F90_LIB = -llapack -lblas -lfftw3 -lfftw3f -pthread
+SRC_MKL =
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# GNU Fortran compiler with OpenBLAS, LAPACK and FFTW
+#F90 = mpif90
+#F90_OPTS = -Ofast -march=native -mtune=native -fomit-frame-pointer -fopenmp -ffpe-summary=none -fallow-argument-mismatch
+#F90_LIB = -lopenblas -llapack -lfftw3
+#SRC_OBLAS =
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# Intel Fortran debugging and profiling options.
+#F90 = mpiifort
+#F90_OPTS = -O3 -qopenmp -mkl=parallel -pg
+#F90_LIB = -liomp5 -lpthread -lm -ldl
+#SRC_MKL =
+#AR = ar
+#-------------------------------------------------------------------------------
+
+#-------------------------------------------------------------------------------
+# GNU Fortran debugging options.
+#F90 = gfortran
+#F90_OPTS = -O3 -Wunused -fopenmp
+#F90_LIB = -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lpthread
+#SRC_MKL =
+#SRC_MPI = mpi_stub.f90
+#-------------------------------------------------------------------------------
+
diff --git a/science/elk/files/patch-src_Makefile b/science/elk/files/patch-src_Makefile
new file mode 100644
index 000000000000..737384e87c1d
--- /dev/null
+++ b/science/elk/files/patch-src_Makefile
@@ -0,0 +1,11 @@
+--- src/Makefile.orig	2022-12-12 11:05:38 UTC
++++ src/Makefile
+@@ -91,7 +91,7 @@ SRC_main1 = \
+  rfcopy.f90 rhomagv.f90 eveqn.f90 genffacgp.f90 unitary.f90 zmdet.f90 \
+  rfmtftoc.f90 zminv.f90 symrf.f90 genvmat.f90 writeeval.f90 mixerifc.f90 \
+  splinew.f90 nfftifc.f90 batchdv.f90 readevalsv.f90 readoccsv.f90 z2mm.f90 \
+- z2mctm.f90 z2mmct.f90 zmctmu.f90 zmctm.f90
++ z2mctm.f90 z2mmct.f90 zmctmu.f90 zmctm.f90 mkl_stub.f90
+ 
+ SRC_main = $(SRC_main0) $(SRC_main1)
+