git: 7932b158a543 - main - databases/rocksdb: add cmake config files

Thierry Thomas <[email protected]> Sun, 02 Aug 2026 08:11:16 +0000
Newsgroups gmane.os.freebsd.devel.cvs.ports
Message-ID <6a6efba4.35e08.5329e773__34893.4096562274$1785658327$gmane$org@gitrepo.freebsd.org>
The branch main has been updated by thierry:

URL: https://cgit.FreeBSD.org/ports/commit/?id=7932b158a543476c90138973465f2040109bed1b

commit 7932b158a543476c90138973465f2040109bed1b
Author:     Thierry Thomas <[email protected]>
AuthorDate: 2026-07-12 16:02:00 +0000
Commit:     Thierry Thomas <[email protected]>
CommitDate: 2026-08-02 08:11:10 +0000

    databases/rocksdb: add cmake config files
    
    Also add dependencies on googletest and onetbb: when built outside
    poudriere they are detected and compilation fails.
    
    PR:             296732
    Approved by:    maintainer’s time-out
---
 databases/rocksdb/Makefile                         |  17 +++-
 .../rocksdb/files/RocksDBTargets-release.cmake.in  |  29 ++++++
 databases/rocksdb/files/RocksDBTargets.cmake       | 113 +++++++++++++++++++++
 .../files/patch-build_tools-build_detect_platform  |  23 +++--
 .../files/patch-cmake_RocksDBConfig.cmake.in       |  85 ++++++++++++++++
 databases/rocksdb/pkg-plist                        |  13 +++
 6 files changed, 268 insertions(+), 12 deletions(-)

diff --git a/databases/rocksdb/Makefile b/databases/rocksdb/Makefile
index 65ecf0a64252..37b0cd018fba 100644
--- a/databases/rocksdb/Makefile
+++ b/databases/rocksdb/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	rocksdb
 PORTVERSION=	11.1.2
 DISTVERSIONPREFIX=	v
+PORTREVISION=	1
 CATEGORIES=	databases
 
 MAINTAINER=	[email protected]
@@ -19,6 +20,8 @@ BROKEN_armv7=	does not build: /nxb-bin/usr/bin/ld: undefined reference to symbol
 
 BUILD_DEPENDS=	bash:shells/bash
 LIB_DEPENDS=	libgflags.so:devel/gflags \
+		libtbb.so:devel/onetbb \
+		libgtest.so:devel/googletest \
 		libsnappy.so:archivers/snappy
 
 USES=		compiler:c++20-lang gmake localbase:ldflags perl5
@@ -30,7 +33,8 @@ CONFIGURE_ARGS=	make_config.mk
 CONFIGURE_ENV=	PORTABLE=0 ROCKSDB_DISABLE_PG=1 ROCKSDB_ROOT=${WRKSRC}
 CONFIGURE_SCRIPT=	build_tools/build_detect_platform
 HAS_CONFIGURE=	yes
-MAKE_ENV=	CXX=${CXX} INSTALL_PATH=${STAGEDIR}${PREFIX} USE_RTTI=1 V=1
+MAKE_ENV=	CXX=${CXX} INSTALL_PATH=${STAGEDIR}${PREFIX} USE_RTTI=1 V=1 \
+		DISABLE_WARNING_AS_ERROR=yes
 USE_CXXSTD=	c++20
 USE_LDCONFIG=	yes
 TEST_TARGET=	check
@@ -67,6 +71,17 @@ post-patch:
 	@${REINPLACE_CMD} -e 's| -march=native||' ${WRKSRC}/build_tools/build_detect_platform
 .endif
 
+post-stage:
+	# To be removed when this ports uses cmake
+	${MKDIR} ${STAGEDIR}${PREFIX}/lib/cmake/rocksdb/modules
+	${INSTALL_DATA} ${WRKSRC}/cmake/RocksDBConfig.cmake.in	\
+		${STAGEDIR}${PREFIX}/lib/cmake/rocksdb/RocksDBConfig.cmake
+	${INSTALL_DATA} ${FILESDIR}/RocksDBTargets.cmake	\
+		${STAGEDIR}${PREFIX}/lib/cmake/rocksdb/
+	${SED} -e 's|%%VERSION%%|${PORTVERSION}|;s|%%VER%%|${PORTVERSION:R:R}|' \
+		${FILESDIR}/RocksDBTargets-release.cmake.in > ${STAGEDIR}${PREFIX}/lib/cmake/rocksdb/RocksDBTargets-release.cmake
+	${INSTALL_DATA} ${WRKSRC}/cmake/modules/* ${STAGEDIR}${PREFIX}/lib/cmake/rocksdb/modules/
+
 post-install:
 	${MKDIR} ${STAGEDIR}${DATADIR}/
 	cd ${WRKSRC}/ && ${INSTALL_PROGRAM} ${BENCHMARKS} ${TOOLS} ${STAGEDIR}${PREFIX}/bin/
diff --git a/databases/rocksdb/files/RocksDBTargets-release.cmake.in b/databases/rocksdb/files/RocksDBTargets-release.cmake.in
new file mode 100644
index 000000000000..8272426468df
--- /dev/null
+++ b/databases/rocksdb/files/RocksDBTargets-release.cmake.in
@@ -0,0 +1,29 @@
+#----------------------------------------------------------------
+# Generated CMake target import file for configuration "Release".
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Import target "RocksDB::rocksdb" for configuration "Release"
+set_property(TARGET RocksDB::rocksdb APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+set_target_properties(RocksDB::rocksdb PROPERTIES
+  IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
+  IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/librocksdb.a"
+  )
+
+list(APPEND _cmake_import_check_targets RocksDB::rocksdb )
+list(APPEND _cmake_import_check_files_for_RocksDB::rocksdb "${_IMPORT_PREFIX}/lib/librocksdb.a" )
+
+# Import target "RocksDB::rocksdb-shared" for configuration "Release"
+set_property(TARGET RocksDB::rocksdb-shared APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+set_target_properties(RocksDB::rocksdb-shared PROPERTIES
+  IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/librocksdb.so.%%VERSION%%"
+  IMPORTED_SONAME_RELEASE "librocksdb.so.%%VER%%"
+  )
+
+list(APPEND _cmake_import_check_targets RocksDB::rocksdb-shared )
+list(APPEND _cmake_import_check_files_for_RocksDB::rocksdb-shared "${_IMPORT_PREFIX}/lib/librocksdb.so.%%VERSION%%" )
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
diff --git a/databases/rocksdb/files/RocksDBTargets.cmake b/databases/rocksdb/files/RocksDBTargets.cmake
new file mode 100644
index 000000000000..c2b93bb377dc
--- /dev/null
+++ b/databases/rocksdb/files/RocksDBTargets.cmake
@@ -0,0 +1,113 @@
+# Generated by CMake
+
+if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8)
+   message(FATAL_ERROR "CMake >= 2.8.12 required")
+endif()
+if(CMAKE_VERSION VERSION_LESS "2.8.12")
+   message(FATAL_ERROR "CMake >= 2.8.12 required")
+endif()
+cmake_policy(PUSH)
+cmake_policy(VERSION 2.8.12...3.29)
+#----------------------------------------------------------------
+# Generated CMake target import file.
+#----------------------------------------------------------------
+
+# Commands may need to know the format version.
+set(CMAKE_IMPORT_FILE_VERSION 1)
+
+# Protect against multiple inclusion, which would fail when already imported targets are added once more.
+set(_cmake_targets_defined "")
+set(_cmake_targets_not_defined "")
+set(_cmake_expected_targets "")
+foreach(_cmake_expected_target IN ITEMS RocksDB::rocksdb RocksDB::rocksdb-shared)
+  list(APPEND _cmake_expected_targets "${_cmake_expected_target}")
+  if(TARGET "${_cmake_expected_target}")
+    list(APPEND _cmake_targets_defined "${_cmake_expected_target}")
+  else()
+    list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}")
+  endif()
+endforeach()
+unset(_cmake_expected_target)
+if(_cmake_targets_defined STREQUAL _cmake_expected_targets)
+  unset(_cmake_targets_defined)
+  unset(_cmake_targets_not_defined)
+  unset(_cmake_expected_targets)
+  unset(CMAKE_IMPORT_FILE_VERSION)
+  cmake_policy(POP)
+  return()
+endif()
+if(NOT _cmake_targets_defined STREQUAL "")
+  string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}")
+  string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}")
+  message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n")
+endif()
+unset(_cmake_targets_defined)
+unset(_cmake_targets_not_defined)
+unset(_cmake_expected_targets)
+
+
+# Compute the installation prefix relative to this file.
+get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
+if(_IMPORT_PREFIX STREQUAL "/")
+  set(_IMPORT_PREFIX "")
+endif()
+
+# Create imported target RocksDB::rocksdb
+add_library(RocksDB::rocksdb STATIC IMPORTED)
+
+set_target_properties(RocksDB::rocksdb PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
+)
+
+# Create imported target RocksDB::rocksdb-shared
+add_library(RocksDB::rocksdb-shared SHARED IMPORTED)
+
+set_target_properties(RocksDB::rocksdb-shared PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
+)
+
+# Load information for each installed configuration.
+file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/RocksDBTargets-*.cmake")
+foreach(_cmake_config_file IN LISTS _cmake_config_files)
+  include("${_cmake_config_file}")
+endforeach()
+unset(_cmake_config_file)
+unset(_cmake_config_files)
+
+# Cleanup temporary variables.
+set(_IMPORT_PREFIX)
+
+# Loop over all imported files and verify that they actually exist
+foreach(_cmake_target IN LISTS _cmake_import_check_targets)
+  if(CMAKE_VERSION VERSION_LESS "3.28"
+      OR NOT DEFINED _cmake_import_check_xcframework_for_${_cmake_target}
+      OR NOT IS_DIRECTORY "${_cmake_import_check_xcframework_for_${_cmake_target}}")
+    foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}")
+      if(NOT EXISTS "${_cmake_file}")
+        message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file
+   \"${_cmake_file}\"
+but this file does not exist.  Possible reasons include:
+* The file was deleted, renamed, or moved to another location.
+* An install or uninstall procedure did not complete successfully.
+* The installation package was faulty and contained
+   \"${CMAKE_CURRENT_LIST_FILE}\"
+but not all the files it references.
+")
+      endif()
+    endforeach()
+  endif()
+  unset(_cmake_file)
+  unset("_cmake_import_check_files_for_${_cmake_target}")
+endforeach()
+unset(_cmake_target)
+unset(_cmake_import_check_targets)
+
+# This file does not depend on other imported targets which have
+# been exported from the same project but in a separate export set.
+
+# Commands beyond this point should not need to know the version.
+set(CMAKE_IMPORT_FILE_VERSION)
+cmake_policy(POP)
diff --git a/databases/rocksdb/files/patch-build_tools-build_detect_platform b/databases/rocksdb/files/patch-build_tools-build_detect_platform
index cbf3251be4f3..e4cf4f7219bd 100644
--- a/databases/rocksdb/files/patch-build_tools-build_detect_platform
+++ b/databases/rocksdb/files/patch-build_tools-build_detect_platform
@@ -2,9 +2,9 @@ Remove -fno-builtin-memcmp and -ltcmalloc
 
 % sed -i .orig 's| -fno-builtin-memcmp||; s| -ltcmalloc||' build_tools/build_detect_platform
 
---- build_tools/build_detect_platform.orig	2022-02-17 23:56:08 UTC
+--- build_tools/build_detect_platform.orig	2026-06-24 23:52:00 UTC
 +++ build_tools/build_detect_platform
-@@ -145,7 +145,7 @@ PLATFORM_SHARED_VERSIONED=true
+@@ -151,7 +151,7 @@ GENERIC_PORT_FILES=`cd "$ROCKSDB_ROOT"; find port -nam
  # generic port files (working on all platform by #ifdef) go directly in /port
  GENERIC_PORT_FILES=`cd "$ROCKSDB_ROOT"; find port -name '*.cc' | tr "\n" " "`
  
@@ -13,7 +13,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc
  case "$TARGET_OS" in
      Darwin)
          PLATFORM=OS_MACOSX
-@@ -166,7 +166,7 @@ case "$TARGET_OS" in
+@@ -172,7 +172,7 @@ case "$TARGET_OS" in
          PLATFORM=OS_LINUX
          COMMON_FLAGS="$COMMON_FLAGS -DOS_LINUX"
          if [ -z "$USE_CLANG" ]; then
@@ -22,7 +22,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc
          else
              PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic"
          fi
-@@ -193,21 +193,21 @@ EOF
+@@ -181,29 +181,29 @@ case "$TARGET_OS" in
          ;;
      SunOS)
          PLATFORM=OS_SOLARIS
@@ -43,11 +43,12 @@ Remove -fno-builtin-memcmp and -ltcmalloc
          PLATFORM=OS_FREEBSD
          CXX=clang++
 -        COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_FREEBSD"
+-        PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread"
 +        COMMON_FLAGS="$COMMON_FLAGS -D_REENTRANT -DOS_FREEBSD"
-         PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread"
++        PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgtest -lpthread"
          # PORT_FILES=port/freebsd/freebsd_specific.cc
          ;;
-@@ -215,7 +215,7 @@ EOF
+     GNU/kFreeBSD)
          PLATFORM=OS_GNU_KFREEBSD
          COMMON_FLAGS="$COMMON_FLAGS -DOS_GNU_KFREEBSD"
          if [ -z "$USE_CLANG" ]; then
@@ -56,7 +57,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc
          else
              PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic"
          fi
-@@ -224,14 +224,14 @@ EOF
+@@ -212,14 +212,14 @@ case "$TARGET_OS" in
          ;;
      NetBSD)
          PLATFORM=OS_NETBSD
@@ -73,7 +74,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc
          PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -pthread"
          # PORT_FILES=port/openbsd/openbsd_specific.cc
  	FIND=gfind
-@@ -239,7 +239,7 @@ EOF
+@@ -227,7 +227,7 @@ case "$TARGET_OS" in
          ;;
      DragonFly)
          PLATFORM=OS_DRAGONFLYBSD
@@ -82,7 +83,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc
          PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread"
          # PORT_FILES=port/dragonfly/dragonfly_specific.cc
          ;;
-@@ -249,7 +249,7 @@ EOF
+@@ -237,7 +237,7 @@ case "$TARGET_OS" in
          PLATFORM_CXXFLAGS="-std=gnu++11"
          COMMON_FLAGS="$COMMON_FLAGS -DCYGWIN"
          if [ -z "$USE_CLANG" ]; then
@@ -91,7 +92,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc
          else
              PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic"
          fi
-@@ -258,7 +258,7 @@ EOF
+@@ -246,7 +246,7 @@ case "$TARGET_OS" in
          ;;
      OS_ANDROID_CROSSCOMPILE)
          PLATFORM=OS_ANDROID
@@ -100,7 +101,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc
  	PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS "  # All pthread features are in the Android C library
          # PORT_FILES=port/android/android.cc
          CROSS_COMPILE=true
-@@ -448,9 +448,9 @@ EOF
+@@ -450,9 +450,9 @@ EOF
      if ! test $JEMALLOC && ! test $ROCKSDB_DISABLE_TCMALLOC; then
          # jemalloc is not available. Let's try tcmalloc
          if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o \
diff --git a/databases/rocksdb/files/patch-cmake_RocksDBConfig.cmake.in b/databases/rocksdb/files/patch-cmake_RocksDBConfig.cmake.in
new file mode 100644
index 000000000000..5b6d9e79cc9c
--- /dev/null
+++ b/databases/rocksdb/files/patch-cmake_RocksDBConfig.cmake.in
@@ -0,0 +1,85 @@
+--- cmake/RocksDBConfig.cmake.in.orig	2026-06-24 23:52:00 UTC
++++ cmake/RocksDBConfig.cmake.in
+@@ -1,50 +1,71 @@
+-@PACKAGE_INIT@
++# Generated for FreeBSD
+ 
++get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
++
++macro(set_and_check _var _file)
++  set(${_var} "${_file}")
++  if(NOT EXISTS "${_file}")
++    message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
++  endif()
++endmacro()
++
++macro(check_required_components _NAME)
++  foreach(comp ${${_NAME}_FIND_COMPONENTS})
++    if(NOT ${_NAME}_${comp}_FOUND)
++      if(${_NAME}_FIND_REQUIRED_${comp})
++        set(${_NAME}_FOUND FALSE)
++      endif()
++    endif()
++  endforeach()
++endmacro()
++
++####################################################################################
++
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/modules")
+ 
+ include(CMakeFindDependencyMacro)
+ 
+-set(GFLAGS_USE_TARGET_NAMESPACE @GFLAGS_USE_TARGET_NAMESPACE@)
++set(GFLAGS_USE_TARGET_NAMESPACE ON)
+ 
+-if(@WITH_JEMALLOC@)
++if(OFF)
+   find_dependency(JeMalloc)
+ endif()
+ 
+-if(@WITH_GFLAGS@)
++if(OFF)
+   find_dependency(gflags CONFIG)
+   if(NOT gflags_FOUND)
+     find_dependency(gflags)
+   endif()
+ endif()
+ 
+-if(@WITH_SNAPPY@)
++if(OFF)
+   find_dependency(Snappy CONFIG)
+   if(NOT Snappy_FOUND)
+     find_dependency(Snappy)
+   endif()
+ endif()
+ 
+-if(@WITH_ZLIB@)
++if(OFF)
+   find_dependency(ZLIB)
+ endif()
+ 
+-if(@WITH_BZ2@)
++if(OFF)
+   find_dependency(BZip2)
+ endif()
+ 
+-if(@WITH_LZ4@)
++if(OFF)
+   find_dependency(lz4)
+ endif()
+ 
+-if(@WITH_ZSTD@)
++if(OFF)
+   find_dependency(zstd)
+ endif()
+ 
+-if(@WITH_NUMA@)
++if(OFF)
+   find_dependency(NUMA)
+ endif()
+ 
+-if(@WITH_TBB@)
++if(OFF)
+   find_dependency(TBB)
+ endif()
+ 
diff --git a/databases/rocksdb/pkg-plist b/databases/rocksdb/pkg-plist
index b07b138ff940..8ce0c7848efd 100644
--- a/databases/rocksdb/pkg-plist
+++ b/databases/rocksdb/pkg-plist
@@ -131,6 +131,19 @@ include/rocksdb/wide_columns.h
 include/rocksdb/write_batch.h
 include/rocksdb/write_batch_base.h
 include/rocksdb/write_buffer_manager.h
+lib/cmake/rocksdb/RocksDBConfig.cmake
+lib/cmake/rocksdb/RocksDBTargets-release.cmake
+lib/cmake/rocksdb/RocksDBTargets.cmake
+lib/cmake/rocksdb/modules/CxxFlags.cmake
+lib/cmake/rocksdb/modules/FindJeMalloc.cmake
+lib/cmake/rocksdb/modules/FindNUMA.cmake
+lib/cmake/rocksdb/modules/FindSnappy.cmake
+lib/cmake/rocksdb/modules/FindTBB.cmake
+lib/cmake/rocksdb/modules/Findgflags.cmake
+lib/cmake/rocksdb/modules/Findlz4.cmake
+lib/cmake/rocksdb/modules/Finduring.cmake
+lib/cmake/rocksdb/modules/Findzstd.cmake
+lib/cmake/rocksdb/modules/ReadVersion.cmake
 lib/librocksdb.a
 lib/librocksdb.so
 lib/librocksdb.so.11