git: 8e8f88d141e6 - main - devel/croaring: Roaring bitmaps in C (and C++), with SIMD

From: Robert Clausecker <fuz_at_FreeBSD.org>
Date: Fri, 11 Sep 2026 13:00:32 UTC
The branch main has been updated by fuz:

URL: https://cgit.FreeBSD.org/ports/commit/?id=8e8f88d141e680524942dacf35362211c74126f1

commit 8e8f88d141e680524942dacf35362211c74126f1
Author:     László Károlyi <laszlo@karolyi.hu>
AuthorDate: 2026-01-11 14:28:19 +0000
Commit:     Robert Clausecker <fuz@FreeBSD.org>
CommitDate: 2026-09-11 12:58:47 +0000

    devel/croaring: Roaring bitmaps in C (and C++), with SIMD
    
    Roaring bitmaps in C (and C++), with SIMD (AVX2, AVX-512 and NEON)
    optimizations: used by Apache Doris, ClickHouse, Alibaba Tair, Redpanda, YDB
    and StarRocks.
    
    WWW: http://roaringbitmap.org/
    
     - update port to 5.2.0 prior to landing
     - grab maintainership over submitter as I have a good relationship
       to upstream
     - lightly touch up
    
    PR:             292270
    Event:          EuroBSDcon Devsummit 2026
    See also:       https://github.com/RoaringBitmap/CRoaring/pull/879
---
 devel/Makefile                                     |  1 +
 devel/croaring/Makefile                            | 29 ++++++++++++++++
 devel/croaring/distinfo                            |  3 ++
 devel/croaring/files/patch-CMakeLists.txt          | 11 ++++++
 .../files/patch-include_roaring_portability.h      | 10 ++++++
 .../files/patch-tools_cmake_FindCTargets.cmake     | 38 ++++++++++++++++++++
 devel/croaring/pkg-descr                           |  3 ++
 devel/croaring/pkg-plist                           | 40 ++++++++++++++++++++++
 8 files changed, 135 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index 7d4333952d25..63824d409b38 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -534,6 +534,7 @@
     SUBDIR += creduce
     SUBDIR += critcl
     SUBDIR += criterion
+    SUBDIR += croaring
     SUBDIR += cscope
     SUBDIR += cscout
     SUBDIR += csfml
diff --git a/devel/croaring/Makefile b/devel/croaring/Makefile
new file mode 100644
index 000000000000..4bd17e33662b
--- /dev/null
+++ b/devel/croaring/Makefile
@@ -0,0 +1,29 @@
+PORTNAME=	CRoaring
+DISTVERSIONPREFIX=	v
+DISTVERSION=	5.2.0
+CATEGORIES=	devel
+
+MAINTAINER=	fuz@FreeBSD.org
+COMMENT=	Roaring bitmaps in C (and C++), with SIMD
+WWW=		http://roaringbitmap.org/ \
+		https://github.com/RoaringBitmap/CRoaring
+
+LICENSE=	APACHE20
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${LOCALBASE}/include/cmocka.h:sysutils/cmocka
+
+USES=		pkgconfig cmake:testing
+USE_GITHUB=	yes
+GH_ACCOUNT=	RoaringBitmap
+
+USE_LDCONFIG=	yes
+
+CMAKE_OFF=	ROARING_USE_CPM ${CMAKE_OFF_${ARCH}}
+CMAKE_ON=	BUILD_SHARED_LIBS
+CMAKE_ARGS_armv7=	-DROARING_DISABLE_NEON:BOOL=TRUE
+CMAKE_ARGS+=	${CMAKE_ARGS_${ARCH}}
+
+PLIST_SUB=	DISTVERSION=${DISTVERSION}
+
+.include <bsd.port.mk>
diff --git a/devel/croaring/distinfo b/devel/croaring/distinfo
new file mode 100644
index 000000000000..9c6d9b9e7286
--- /dev/null
+++ b/devel/croaring/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1789043774
+SHA256 (RoaringBitmap-CRoaring-v5.2.0_GH0.tar.gz) = 5f6ce15f23cb70fca04839d186a15ceb540e31d650496e0a2c8284a882465b13
+SIZE (RoaringBitmap-CRoaring-v5.2.0_GH0.tar.gz) = 100817734
diff --git a/devel/croaring/files/patch-CMakeLists.txt b/devel/croaring/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..7bc080d0b665
--- /dev/null
+++ b/devel/croaring/files/patch-CMakeLists.txt
@@ -0,0 +1,11 @@
+--- CMakeLists.txt.orig	2026-09-08 23:18:25 UTC
++++ CMakeLists.txt
+@@ -73,7 +73,7 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/roaring.pc
+ 
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/roaring.pc.in"
+                "${CMAKE_CURRENT_BINARY_DIR}/roaring.pc" @ONLY)
+-install(FILES "${CMAKE_CURRENT_BINARY_DIR}/roaring.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/roaring.pc" DESTINATION libdata/pkgconfig)
+ 
+ ## C header files get installed to /usr/local/include/roaring typically
+ 
diff --git a/devel/croaring/files/patch-include_roaring_portability.h b/devel/croaring/files/patch-include_roaring_portability.h
new file mode 100644
index 000000000000..7144b768d306
--- /dev/null
+++ b/devel/croaring/files/patch-include_roaring_portability.h
@@ -0,0 +1,10 @@
+--- include/roaring/portability.h.orig	2026-09-08 23:18:25 UTC
++++ include/roaring/portability.h
+@@ -456,6 +456,7 @@ static inline int roaring_hamming(uint64_t x) {
+ #if defined(__linux__)
+ #define croaring_htobe64(x) bswap_64(x)
+ #elif defined(__FreeBSD__)
++#include <sys/endian.h>
+ #define croaring_htobe64(x) bswap64(x)
+ #else
+ #warning "Unknown platform, report as an error"
diff --git a/devel/croaring/files/patch-tools_cmake_FindCTargets.cmake b/devel/croaring/files/patch-tools_cmake_FindCTargets.cmake
new file mode 100644
index 000000000000..3a46f83e0afc
--- /dev/null
+++ b/devel/croaring/files/patch-tools_cmake_FindCTargets.cmake
@@ -0,0 +1,38 @@
+--- tools/cmake/FindCTargets.cmake.orig	2026-09-08 23:18:25 UTC
++++ tools/cmake/FindCTargets.cmake
+@@ -1,4 +1,7 @@ include(${PROJECT_SOURCE_DIR}/tools/cmake/Import.cmake
+ include(${PROJECT_SOURCE_DIR}/tools/cmake/Import.cmake)
++
++find_package(PkgConfig REQUIRED)
++
+ set(BUILD_STATIC_LIB ON)
+ if (ENABLE_ROARING_TESTS AND NOT EMSCRIPTEN)
+   if(ROARING_USE_CPM)
+@@ -9,7 +12,7 @@ if (ENABLE_ROARING_TESTS AND NOT EMSCRIPTEN)
+       OPTIONS "UNIT_TESTING ON"
+     )
+   else()
+-    find_package(cmocka 2.0.0 REQUIRED)
++    pkg_check_modules(CMOCKA REQUIRED IMPORTED_TARGET cmocka)
+   endif()
+ endif()
+ 
+@@ -23,7 +26,7 @@ function(add_c_test TEST_NAME)
+   if(ROARING_USE_CPM)
+     target_link_libraries(${TEST_NAME} roaring cmocka-static)
+   else()
+-    target_link_libraries(${TEST_NAME} roaring cmocka)
++    target_link_libraries(${TEST_NAME} roaring PkgConfig::CMOCKA)
+   endif()
+ 
+   add_test(${TEST_NAME} ${TEST_NAME})
+@@ -45,7 +48,8 @@ if (CMAKE_VERSION VERSION_GREATER 2.8.10)
+       target_link_libraries(${TEST_NAME} roaring cmocka-static)
+       target_include_directories(${TEST_NAME} PRIVATE "${CMAKE_BINARY_DIR}/_deps/cmocka-src/include")
+     else()
+-      target_link_libraries(${TEST_NAME} roaring cmocka)
++      target_include_directories(${TEST_NAME} PRIVATE "${CMOCKA_INCLUDEDIR}")
++      target_link_libraries(${TEST_NAME} roaring PkgConfig::CMOCKA)
+     endif()
+ 
+     add_test(${TEST_NAME} ${TEST_NAME})
diff --git a/devel/croaring/pkg-descr b/devel/croaring/pkg-descr
new file mode 100644
index 000000000000..fb1dd55cb699
--- /dev/null
+++ b/devel/croaring/pkg-descr
@@ -0,0 +1,3 @@
+Roaring bitmaps in C (and C++), with SIMD (AVX2, AVX-512 and NEON)
+optimizations: used by Apache Doris, ClickHouse, Alibaba Tair, Redpanda, YDB
+and StarRocks
diff --git a/devel/croaring/pkg-plist b/devel/croaring/pkg-plist
new file mode 100644
index 000000000000..69ba05cdc05d
--- /dev/null
+++ b/devel/croaring/pkg-plist
@@ -0,0 +1,40 @@
+libdata/pkgconfig/roaring.pc
+include/roaring/roaring64.hh
+include/roaring/roaring64map.hh
+include/roaring/roaring.hh
+include/roaring/art/art.h
+include/roaring/bitset/bitset.h
+include/roaring/roaring.h
+include/roaring/portability.h
+include/roaring/roaring_array.h
+include/roaring/memory.h
+include/roaring/roaring_types.h
+include/roaring/misc/configreport.h
+include/roaring/roaring_version.h
+include/roaring/portability.h.orig
+include/roaring/containers/run.h
+include/roaring/containers/mixed_andnot.h
+include/roaring/containers/mixed_xor.h
+include/roaring/containers/mixed_union.h
+include/roaring/containers/mixed_subset.h
+include/roaring/containers/mixed_intersection.h
+include/roaring/containers/bitset.h
+include/roaring/containers/array.h
+include/roaring/containers/mixed_equal.h
+include/roaring/containers/container_defs.h
+include/roaring/containers/mixed_negation.h
+include/roaring/containers/convert.h
+include/roaring/containers/containers.h
+include/roaring/containers/perfparameters.h
+include/roaring/roaring64.h
+include/roaring/bitset_util.h
+include/roaring/isadetection.h
+include/roaring/array_util.h
+include/roaring/utilasm.h
+lib/libroaring.so.%%DISTVERSION%%
+lib/libroaring.so.28
+lib/libroaring.so
+lib/cmake/roaring/roaring-config-version.cmake
+lib/cmake/roaring/roaring-config.cmake
+lib/cmake/roaring/roaring-targets.cmake
+lib/cmake/roaring/roaring-targets-release.cmake