git: 391e3102b557 - main - devel/immer: Add port

From: Jason E. Hale <jhale_at_FreeBSD.org>
Date: Thu, 05 Oct 2023 12:14:48 UTC
The branch main has been updated by jhale:

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

commit 391e3102b557b20212e7ae2951dd2c85c0551ad8
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2023-10-04 12:18:56 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2023-10-05 12:13:50 +0000

    devel/immer: Add port
    
    Immer is a library of persistent and immutable data structures written
    in C++. These enable whole new kinds of architectures for interactive
    and concurrent programs of striking simplicity, correctness, and
    performance.
    
    https://sinusoid.es/immer/
---
 devel/Makefile                                  |  1 +
 devel/immer/Makefile                            | 36 ++++++++++++++
 devel/immer/distinfo                            |  3 ++
 devel/immer/files/patch-cmake_FindBoehmGC.cmake | 11 +++++
 devel/immer/pkg-descr                           |  4 ++
 devel/immer/pkg-plist                           | 63 +++++++++++++++++++++++++
 6 files changed, 118 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index f85b0ed93bc6..7e0b7a55c0bf 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -1004,6 +1004,7 @@
     SUBDIR += ignition-tools
     SUBDIR += ikos
     SUBDIR += imake
+    SUBDIR += immer
     SUBDIR += imtui
     SUBDIR += inastemp
     SUBDIR += include-what-you-use
diff --git a/devel/immer/Makefile b/devel/immer/Makefile
new file mode 100644
index 000000000000..1ea1d45b4818
--- /dev/null
+++ b/devel/immer/Makefile
@@ -0,0 +1,36 @@
+PORTNAME=	immer
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.8.1
+CATEGORIES=	devel
+
+MAINTAINER=	jhale@FreeBSD.org
+COMMENT=	Postmodern immutable and persistent data structures for C++
+WWW=		https://sinusoid.es/immer/
+
+LICENSE=	BSL
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+USES=		cmake
+USE_GITHUB=	yes
+GH_ACCOUNT=	arximboldi
+
+CMAKE_ON=	DISABLE_WERROR
+CMAKE_OFF=	immer_BUILD_DOCS \
+		immer_BUILD_EXTRAS
+
+NO_ARCH=	yes
+
+OPTIONS_DEFINE=	TEST
+
+TEST_BUILD_DEPENDS=	boehm-gc>=0:devel/boehm-gc \
+			boehm-gc-threaded>=0:devel/boehm-gc-threaded \
+			boost-libs>=0:devel/boost-libs \
+			catch>=0:devel/catch
+TEST_USES=		compiler:c++14-lang pkgconfig
+TEST_CMAKE_BOOL=	immer_BUILD_EXAMPLES \
+			immer_BUILD_TESTS
+TEST_ALL_TARGET=	install examples tests
+TEST_ALL_TARGET_OFF=	install
+TEST_TEST_TARGET=	test
+
+.include <bsd.port.mk>
diff --git a/devel/immer/distinfo b/devel/immer/distinfo
new file mode 100644
index 000000000000..ca28e20f5aed
--- /dev/null
+++ b/devel/immer/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1696411685
+SHA256 (arximboldi-immer-v0.8.1_GH0.tar.gz) = de8411c84830864604bb685dc8f2e3c0dbdc40b95b2f6726092f7dcc85e75209
+SIZE (arximboldi-immer-v0.8.1_GH0.tar.gz) = 654638
diff --git a/devel/immer/files/patch-cmake_FindBoehmGC.cmake b/devel/immer/files/patch-cmake_FindBoehmGC.cmake
new file mode 100644
index 000000000000..8bc34f5c5e21
--- /dev/null
+++ b/devel/immer/files/patch-cmake_FindBoehmGC.cmake
@@ -0,0 +1,11 @@
+--- cmake/FindBoehmGC.cmake.orig	2023-10-04 09:47:41 UTC
++++ cmake/FindBoehmGC.cmake
+@@ -57,7 +57,7 @@ IF (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
+ IF (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
+   # checks if 'gc' supports 'GC_get_parallel' and if it does
+   # then use it
+-  INCLUDE(${CMAKE_ROOT}/Modules/CheckCSourceCompiles.cmake)
++  INCLUDE(${CMAKE_ROOT}/Modules/CheckCSourceRuns.cmake)
+   # not sure if this links properly...
+   FIND_LIBRARY(BOEHM_GC_LIBRARIES NAMES gc
+     HINTS ${PC_BDW_GC_LIBDIR} ${PC_BDW_GC_LIBRARY_DIRS})
diff --git a/devel/immer/pkg-descr b/devel/immer/pkg-descr
new file mode 100644
index 000000000000..ede23f920bb4
--- /dev/null
+++ b/devel/immer/pkg-descr
@@ -0,0 +1,4 @@
+Immer is a library of persistent and immutable data structures written
+in C++. These enable whole new kinds of architectures for interactive
+and concurrent programs of striking simplicity, correctness, and
+performance.
diff --git a/devel/immer/pkg-plist b/devel/immer/pkg-plist
new file mode 100644
index 000000000000..9b67648df9bd
--- /dev/null
+++ b/devel/immer/pkg-plist
@@ -0,0 +1,63 @@
+include/immer/algorithm.hpp
+include/immer/array.hpp
+include/immer/array_transient.hpp
+include/immer/atom.hpp
+include/immer/box.hpp
+include/immer/config.hpp
+include/immer/detail/arrays/no_capacity.hpp
+include/immer/detail/arrays/node.hpp
+include/immer/detail/arrays/with_capacity.hpp
+include/immer/detail/combine_standard_layout.hpp
+include/immer/detail/hamts/bits.hpp
+include/immer/detail/hamts/champ.hpp
+include/immer/detail/hamts/champ_iterator.hpp
+include/immer/detail/hamts/node.hpp
+include/immer/detail/iterator_facade.hpp
+include/immer/detail/rbts/bits.hpp
+include/immer/detail/rbts/node.hpp
+include/immer/detail/rbts/operations.hpp
+include/immer/detail/rbts/position.hpp
+include/immer/detail/rbts/rbtree.hpp
+include/immer/detail/rbts/rbtree_iterator.hpp
+include/immer/detail/rbts/rrbtree.hpp
+include/immer/detail/rbts/rrbtree_iterator.hpp
+include/immer/detail/rbts/visitor.hpp
+include/immer/detail/ref_count_base.hpp
+include/immer/detail/type_traits.hpp
+include/immer/detail/util.hpp
+include/immer/experimental/detail/dvektor_impl.hpp
+include/immer/experimental/dvektor.hpp
+include/immer/flex_vector.hpp
+include/immer/flex_vector_transient.hpp
+include/immer/heap/cpp_heap.hpp
+include/immer/heap/debug_size_heap.hpp
+include/immer/heap/free_list_heap.hpp
+include/immer/heap/free_list_node.hpp
+include/immer/heap/gc_heap.hpp
+include/immer/heap/heap_policy.hpp
+include/immer/heap/identity_heap.hpp
+include/immer/heap/malloc_heap.hpp
+include/immer/heap/split_heap.hpp
+include/immer/heap/tags.hpp
+include/immer/heap/thread_local_free_list_heap.hpp
+include/immer/heap/unsafe_free_list_heap.hpp
+include/immer/heap/with_data.hpp
+include/immer/lock/no_lock_policy.hpp
+include/immer/lock/spinlock_policy.hpp
+include/immer/map.hpp
+include/immer/map_transient.hpp
+include/immer/memory_policy.hpp
+include/immer/refcount/enable_intrusive_ptr.hpp
+include/immer/refcount/no_refcount_policy.hpp
+include/immer/refcount/refcount_policy.hpp
+include/immer/refcount/unsafe_refcount_policy.hpp
+include/immer/set.hpp
+include/immer/set_transient.hpp
+include/immer/table.hpp
+include/immer/table_transient.hpp
+include/immer/transience/gc_transience_policy.hpp
+include/immer/transience/no_transience_policy.hpp
+include/immer/vector.hpp
+include/immer/vector_transient.hpp
+lib/cmake/Immer/ImmerConfig.cmake
+lib/cmake/Immer/ImmerConfigVersion.cmake