git: 40154a4aa70b - main - science/gromacs: Multiple improvements

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Thu, 20 Jul 2023 17:32:44 UTC
The branch main has been updated by yuri:

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

commit 40154a4aa70b0ba230acf68513d4904ef51df7cd
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2023-07-18 14:21:39 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2023-07-20 17:32:41 +0000

    science/gromacs: Multiple improvements
    
    * remove dependency on xorg: last xorg utility was retired some time ago
    * add HWLOC option and pass cmake argument: hwloc2 is only used when
      this argument is supplied
    * refactor OPENCL option: add OPENCL_NONE, OPENCL_ICD, OPENCL_SYCL options
    * refactor SIMD option: use the AUTO value when set
    * correct OPENMP option
---
 science/gromacs/Makefile  | 44 +++++++++++++++++++++++++++++---------------
 science/gromacs/pkg-plist | 26 ++++++++++++++++----------
 2 files changed, 45 insertions(+), 25 deletions(-)

diff --git a/science/gromacs/Makefile b/science/gromacs/Makefile
index ce462cf73082..f8fe592c6709 100644
--- a/science/gromacs/Makefile
+++ b/science/gromacs/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	gromacs
 DISTVERSION=	2023.2
+PORTREVISION=	1
 CATEGORIES=	science
 MASTER_SITES=	ftp://ftp.gromacs.org/pub/gromacs/
 DISTFILES=	${DISTNAME}${EXTRACT_SUFX} # only for googletest
@@ -14,9 +15,8 @@ LICENSE_FILE=	${WRKSRC}/COPYING
 BROKEN_i386=	undefined reference to `__atomic_load' and `__atomic_compare_exchange' #`
 
 BUILD_DEPENDS=	boost-libs>=1.44:devel/boost-libs
-LIB_DEPENDS=	libhwloc.so:devel/hwloc2
 
-USES=		cmake compiler:c++17-lang gnome perl5 pkgconfig python:build shebangfix xorg
+USES=		cmake compiler:c++17-lang gnome perl5 pkgconfig python:build shebangfix
 USE_GNOME=	libxml2
 USE_LDCONFIG=	yes
 
@@ -28,14 +28,16 @@ bash_CMD=	${SH}
 
 CMAKE_OFF=	GMX_USE_RDTSCP \
 		USE_PYTHON_SCRIPTS
-CMAKE_ARGS=	-DPython3_EXECUTABLE=${PYTHON_CMD}
+CMAKE_ARGS=	-DPython_EXECUTABLE=${PYTHON_CMD} \
+		-DPython3_EXECUTABLE=${PYTHON_CMD}
 
 TEST_TARGET=	check
 
-OPTIONS_DEFINE=		ATLAS FLOAT LEGACY OPENCL OPENMP SIMD X11
-OPTIONS_SINGLE=		MP
+OPTIONS_DEFINE=		ATLAS FLOAT HWLOC LEGACY OPENMP SIMD
+OPTIONS_SINGLE=		MP OPENCL
 OPTIONS_SINGLE_MP=	NOMP MPICH OPENMPI THREAD_MPI
-OPTIONS_DEFAULT=	LEGACY OPENMP THREAD_MPI X11 # FLOAT should not be a default because science/votca needs double precision. This is likely the same for many other uses.
+OPTIONS_SINGLE_OPENCL=	OPENCL_NONE OPENCL_ICD OPENCL_SYCL
+OPTIONS_DEFAULT=	HWLOC LEGACY OPENCL_NONE OPENMP THREAD_MPI # FLOAT should not be a default because science/votca needs double precision. This is likely the same for many other uses.
 OPTIONS_SUB=		yes
 
 ATLAS_DESC=		Use ATLAS for BLAS and LAPACK
@@ -55,21 +57,33 @@ FLOAT_CMAKE_OFF=	-DGMX_DOUBLE:BOOL=ON
 FLOAT_PLIST_SUB=	SUFFIX_D=""
 FLOAT_PLIST_SUB_OFF=	SUFFIX_D="_d"
 
+HWLOC_DESC=		Build with HWLOC2, portable hardware locality package
+HWLOC_CMAKE_BOOL=	GMX_HWLOC
+HWLOC_LIB_DEPENDS=	libhwloc.so:devel/hwloc2
+
 LEGACY_DESC=		Install legacy API # expected by science/votca
 LEGACY_CMAKE_BOOL=	GMX_INSTALL_LEGACY_API
 
-OPENCL_CMAKE_BOOL=	GMX_USE_OPENCL
-OPENCL_CMAKE_ON=	-DGMX_GPU:STRING=OpenCL # one of: OFF, CUDA, OpenCL, SYCL
-OPENCL_CMAKE_OFF=	-DGMX_GPU:STRING=OFF
-OPENCL_LIB_DEPENDS=	libOpenCL.so:devel/ocl-icd
+OPENCL_NONE_DESC=	No OpenCL
+OPENCL_NONE_CMAKE_ON=	-DGMX_GPU:STRING=OFF # one of: OFF, CUDA, OpenCL, SYCL
 
-OPENMP_CMAKE_ON=	-DGMX_CXX11:BOOL=OFF
-OPENMP_CMAKE_OFF=	-DGMX_OPENMP:BOOL=OFF
+OPENCL_ICD_DESC=	OpenCL via Installable Client Driver
+OPENCL_ICD_CMAKE_ON=	-DGMX_GPU:STRING=OpenCL -DGMX_GPU:STRING=OpenCL
+OPENCL_ICD_LIB_DEPENDS=	libOpenCL.so:devel/ocl-icd \
+			libclFFT.so:math/clfft
+OPENCL_ICD_IMPLIES=	FLOAT
 
-SIMD_CMAKE_OFF=		-DGMX_SIMD:STRING="None"
+OPENCL_SYCL_DESC=	OpenCL via the OpenSYCL implementation of SYCL
+OPENCL_SYCL_USES=	localbase
+OPENCL_SYCL_CMAKE_ON=	-DGMX_GPU:STRING=OpenCL -DGMX_GPU:STRING=SYCL -DGMX_SYCL_HIPSYCL=ON
+OPENCL_SYCL_LIB_DEPENDS=	libhipSYCL-rt.so:lang/opensycl
+OPENCL_SYCL_IMPLIES=	FLOAT
+OPENCL_SYCL_BROKEN=	configure uses a wrong namespace to find CYCL, see https://gitlab.com/gromacs/gromacs/-/issues/4838
 
-X11_USE=		XORG=ice,sm,xext,x11
-X11_CMAKE_BOOL=		GMX_X11
+OPENMP_CMAKE_BOOL=	GMX_OPENMP
+
+SIMD_CMAKE_OFF=		-DGMX_SIMD:STRING="None"
+SIMD_CMAKE_ON=		-DGMX_SIMD:STRING="AUTO"
 
 MP_DESC=		Multiprocessing
 
diff --git a/science/gromacs/pkg-plist b/science/gromacs/pkg-plist
index 0cb8e4801e7b..131720261d2b 100644
--- a/science/gromacs/pkg-plist
+++ b/science/gromacs/pkg-plist
@@ -175,16 +175,22 @@ share/cmake/gromacs%%SUFFIX_D%%/libgromacs.cmake
 %%DATADIR%%/COPYING
 %%DATADIR%%/README.tutor
 %%DATADIR%%/README_FreeEnergyModifications.txt
-%%OPENCL%%%%DATADIR%%/opencl/nbnxn_ocl_kernel_amd.clh
-%%OPENCL%%%%DATADIR%%/opencl/nbnxn_ocl_kernel_nowarp.clh
-%%OPENCL%%%%DATADIR%%/opencl/nbnxn_ocl_kernel_nvidia.clh
-%%OPENCL%%%%DATADIR%%/opencl/nbnxn_ocl_kernel_pruneonly.clh
-%%OPENCL%%%%DATADIR%%/opencl/nbnxn_ocl_kernel_utils.clh
-%%OPENCL%%%%DATADIR%%/opencl/nbnxn_ocl_kernels.cl
-%%OPENCL%%%%DATADIR%%/opencl/nbnxn_ocl_kernels.clh
-%%OPENCL%%%%DATADIR%%/opencl/nbnxn_ocl_kernels_fastgen.clh
-%%OPENCL%%%%DATADIR%%/opencl/nbnxn_ocl_kernels_fastgen_add_twincut.clh
-%%OPENCL%%%%DATADIR%%/opencl/vectype_ops.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/ewald/pme_gather.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/ewald/pme_gpu_calculate_splines.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/ewald/pme_gpu_types.h
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/ewald/pme_program.cl
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/ewald/pme_solve.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/ewald/pme_spread.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/gpu_utils/device_utils.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/gpu_utils/vectype_ops.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/nbnxm/opencl/nbnxm_ocl_consts.h
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/nbnxm/opencl/nbnxm_ocl_kernel.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/nbnxm/opencl/nbnxm_ocl_kernel_pruneonly.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/nbnxm/opencl/nbnxm_ocl_kernel_utils.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/nbnxm/opencl/nbnxm_ocl_kernels.cl
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/nbnxm/opencl/nbnxm_ocl_kernels.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/nbnxm/opencl/nbnxm_ocl_kernels_fastgen.clh
+%%OPENCL_ICD%%%%DATADIR%%/opencl/gromacs/nbnxm/opencl/nbnxm_ocl_kernels_fastgen_add_twincut.clh
 %%LEGACY%%%%DATADIR%%/template/CMakeLists.txt
 %%LEGACY%%%%DATADIR%%/template/Makefile.pkg
 %%LEGACY%%%%DATADIR%%/template/README