PORTNAME=	spheral
DISTVERSIONPREFIX=	v
DISTVERSION=	2025.12.0
CATEGORIES=	science # physics

MAINTAINER=	yuri@FreeBSD.org
COMMENT=	Environment for hydrodynamical & gravitational numerical simulations
WWW=		https://github.com/LLNL/spheral

LICENSE=	BSD3CLAUSE
LICENSE_FILE=	${WRKSRC}/LICENSE

BUILD_DEPENDS=	${LOCALBASE}/include/polyclipper2d.hh:math/polyclipper
LIB_DEPENDS=	libadiak.so:misc/adiak \
		libaxom_core.so:science/axom \
		libboost_filesystem.so:devel/boost-libs \
		libcamp.so:devel/camp \
		libchai.so:devel/chai \
		libconduit.so:science/conduit \
		libfmt.so:devel/libfmt \
		libhdf5.so:science/hdf5 \
		libHYPRE.so:science/hypre \
		libmfem.so:math/mfem \
		libmetis.so:math/metis \
		libopenblas.so:math/openblas \
		libosdCPU.so:graphics/opensubdiv \
		libpolytope.so:science/polytope \
		libqhull_r.so:math/qhull \
		libRAJA.so:misc/raja \
		libsiloh5.so:science/silo \
		libsz.so:science/libaec \
		libsundials_core.so:math/sundials \
		libumpire.so:devel/umpire

USES=		cmake:testing compiler:c++14-lang eigen:3 fortran localbase:ldflags lua mpi:mpich python
USE_LDCONFIG=	yes

USE_GITHUB=	yes
GH_ACCOUNT=	LLNL
GH_TUPLE=	LLNL:PolyClipper:e1fe47c:PolyClipper/extern/PolyClipper \
		LLNL:PYB11Generator:7160812:PYB11Generator/extern/PYB11Generator \
		llnl:blt:29eecef:blt/cmake/blt \
		llnl:uberenv:126f8de:uberenv/scripts/devtools/uberenv

CMAKE_ARGS=	-Daneos_DIR=${LOCALBASE} \
		-Daxom_DIR=${LOCALBASE} \
		-Dboost_DIR=${LOCALBASE} \
		-Dconduit_DIR=${LOCALBASE} \
		-Deigen_DIR=${LOCALBASE} \
		-Dhdf5_DIR=${LOCALBASE} \
		-Dopensubdiv_DIR=${LOCALBASE} \
		-Dpython_DIR=${LOCALBASE} \
		-Dpolyclipper_DIR=${LOCALBASE} \
		-Dpolytope_DIR=${LOCALBASE} \
		-Dpybind11_DIR=${LOCALBASE} \
		-Dqhull_DIR=${LOCALBASE} \
		-Dsilo_DIR=${LOCALBASE} \
		-Dzlib_DIR=/usr
CMAKE_ARGS+=	-DPYTHON_EXECUTABLE=${PYTHON_CMD} \
		-DPython_EXECUTABLE=${PYTHON_CMD} \
		-DPython3_EXECUTABLE=${PYTHON_CMD}
CMAKE_OFF=	SPHERAL_ENABLE_TESTS SPHERAL_ENABLE_DOCS \
		SPHERAL_ENABLE_ANEOS \
		SPHERAL_ENABLE_PYTHON \
		SPHERAL_ENABLE_STATIC \
		ENABLE_CUDA
CMAKE_ON=	SPHERAL_ENABLE_SHARED \
		ENABLE_OPENMP \
		USE_EXTERNAL_CHAI
CMAKE_TESTING_ON=	SPHERAL_ENABLE_TESTS # tests fail to build, see https://github.com/LLNL/spheral/issues/230

CXXFLAGS+=	-I${LOCALBASE}/include/eigen3

BINARY_ALIAS=	git=false python=${PYTHON_CMD} python3=${PYTHON_CMD}

post-patch:
	@${REINPLACE_CMD} -e 's|\.a|.so|; s|qhullstatic|qhull_r|; s|python2\.7|python${PYTHON_VER}|g' ${WRKSRC}/cmake/tpl/*.cmake
	@${CHMOD} +x ${WRKSRC}/src/helpers/InstantiationGenerator.py

post-install:
	# remove the stray file Spheral/mpi.py
	@${RM} -r ${STAGEDIR}${PREFIX}/Spheral

.include <bsd.port.mk>
