git: 8063b9baa59d - main - devel/chai: New port: Copy-hiding array abstraction for data migration

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Thu, 30 Oct 2025 22:51:20 UTC
The branch main has been updated by yuri:

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

commit 8063b9baa59da69ca788b82d40488ea769cf3b08
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2025-10-30 17:33:25 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2025-10-30 22:51:18 +0000

    devel/chai: New port: Copy-hiding array abstraction for data migration
---
 devel/Makefile                                     |  1 +
 devel/chai/Makefile                                | 37 ++++++++++++++++++++++
 devel/chai/distinfo                                |  5 +++
 ...atch-cmake_thirdparty_SetupChaiThirdparty.cmake | 20 ++++++++++++
 devel/chai/pkg-descr                               |  3 ++
 devel/chai/pkg-plist                               | 23 ++++++++++++++
 6 files changed, 89 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 8c47e2774240..1e79cdf8083a 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -408,6 +408,7 @@
     SUBDIR += cgdb
     SUBDIR += cgit
     SUBDIR += cgprof
+    SUBDIR += chai
     SUBDIR += charva
     SUBDIR += check
     SUBDIR += checkbashisms
diff --git a/devel/chai/Makefile b/devel/chai/Makefile
new file mode 100644
index 000000000000..ac9dcbe9a6ac
--- /dev/null
+++ b/devel/chai/Makefile
@@ -0,0 +1,37 @@
+PORTNAME=	chai
+DISTVERSIONPREFIX=	v
+DISTVERSION=	2025.09.1
+CATEGORIES=	devel
+PKGNAMESUFFIX=	-library
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Copy-hiding array abstraction for data migration
+WWW=		https://github.com/LLNL/CHAI
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS=	libcamp.so:devel/camp \
+		libRAJA.so:misc/raja \
+		libumpire.so:devel/umpire \
+		libfmt.so:devel/libfmt
+TEST_DEPENDS=	googletest>0:devel/googletest
+
+USES=		cmake:testing compiler:c++17-lang localbase:ldflags pkgconfig
+USE_LDCONFIG=	yes
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	LLNL
+GH_PROJECT=	${PORTNAME:tu}
+GH_TUPLE=	LLNL:blt:e783e30:blt/blt
+
+CMAKE_ON=	BUILD_SHARED_LIBS
+CMAKE_OFF=	UMPIRE_ENABLE_EXAMPLES \
+		ENABLE_TESTS
+CMAKE_TESTING_ON=	ENABLE_TESTS
+
+LDFLAGS+=	-lexecinfo
+
+# tests as of 2025.09.1: 100% tests passed, 0 tests failed out of 10
+
+.include <bsd.port.mk>
diff --git a/devel/chai/distinfo b/devel/chai/distinfo
new file mode 100644
index 000000000000..0111ddffa61b
--- /dev/null
+++ b/devel/chai/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1761844777
+SHA256 (LLNL-CHAI-v2025.09.1_GH0.tar.gz) = 8d5ff6363e37f0fb5b4606b2165a881a76f2b4f384813afe871052ccd2bb40de
+SIZE (LLNL-CHAI-v2025.09.1_GH0.tar.gz) = 113209
+SHA256 (LLNL-blt-e783e30_GH0.tar.gz) = 4c8efec699708da3b552e533b80dd4ce3bf81da825840b3c18b9b56690898644
+SIZE (LLNL-blt-e783e30_GH0.tar.gz) = 1342801
diff --git a/devel/chai/files/patch-cmake_thirdparty_SetupChaiThirdparty.cmake b/devel/chai/files/patch-cmake_thirdparty_SetupChaiThirdparty.cmake
new file mode 100644
index 000000000000..f3ed050eafcd
--- /dev/null
+++ b/devel/chai/files/patch-cmake_thirdparty_SetupChaiThirdparty.cmake
@@ -0,0 +1,20 @@
+--- cmake/thirdparty/SetupChaiThirdparty.cmake.orig	2025-10-30 17:20:50 UTC
++++ cmake/thirdparty/SetupChaiThirdparty.cmake
+@@ -5,6 +5,8 @@
+ # SPDX-License-Identifier: BSD-3-Clause
+ ##############################################################################
+ 
++find_package(umpire REQUIRED)
++
+ if (NOT TARGET umpire)
+   if (DEFINED umpire_DIR OR DEFINED UMPIRE_DIR)
+     message(STATUS "[CHAI] Using external Umpire")
+@@ -27,6 +29,8 @@ endif ()
+     endif ()
+   endif ()
+ endif ()
++
++find_package(raja REQUIRED)
+ 
+ if (CHAI_ENABLE_RAJA_PLUGIN)
+   if (NOT TARGET RAJA)
diff --git a/devel/chai/pkg-descr b/devel/chai/pkg-descr
new file mode 100644
index 000000000000..3e464a1134d4
--- /dev/null
+++ b/devel/chai/pkg-descr
@@ -0,0 +1,3 @@
+CHAI is a C++ library that provides a copy-hiding array abstraction
+to automatically migrate data between different memory spaces, such as
+between CPU and GPU memory.
diff --git a/devel/chai/pkg-plist b/devel/chai/pkg-plist
new file mode 100644
index 000000000000..3c78f46351ce
--- /dev/null
+++ b/devel/chai/pkg-plist
@@ -0,0 +1,23 @@
+include/chai/ArrayManager.hpp
+include/chai/ArrayManager.inl
+include/chai/ChaiMacros.hpp
+include/chai/DeviceHelpers.hpp
+include/chai/ExecutionSpaces.hpp
+include/chai/ManagedArray.hpp
+include/chai/ManagedArray.inl
+include/chai/ManagedArrayView.hpp
+include/chai/PointerRecord.hpp
+include/chai/RajaExecutionSpacePlugin.hpp
+include/chai/Types.hpp
+include/chai/config.hpp
+include/chai/managed_ptr.hpp
+include/chai/pluginLinker.hpp
+include/chai/util/forall.hpp
+lib/cmake/chai/BLTInstallableMacros.cmake
+lib/cmake/chai/BLTSetupTargets.cmake
+lib/cmake/chai/BLTThirdPartyConfigFlags.cmake
+lib/cmake/chai/chai-config-version.cmake
+lib/cmake/chai/chai-config.cmake
+lib/cmake/chai/chai-targets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/chai/chai-targets.cmake
+lib/libchai.so