git: ac7e0fd8fa86 - main - science/elk: Update 8.5.10 -> 8.6.7
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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)
+