aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Thomas <thierry@FreeBSD.org>2026-07-12 16:02:00 +0000
committerThierry Thomas <thierry@FreeBSD.org>2026-08-02 08:11:10 +0000
commit7932b158a543476c90138973465f2040109bed1b (patch)
tree1ecbd741d9226e69be5c61b2914b6d5c1e216c6b
parent2125268a397c4d269666acb6eea706e3cbd640e6 (diff)
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
-rw-r--r--databases/rocksdb/Makefile17
-rw-r--r--databases/rocksdb/files/RocksDBTargets-release.cmake.in29
-rw-r--r--databases/rocksdb/files/RocksDBTargets.cmake113
-rw-r--r--databases/rocksdb/files/patch-build_tools-build_detect_platform23
-rw-r--r--databases/rocksdb/files/patch-cmake_RocksDBConfig.cmake.in85
-rw-r--r--databases/rocksdb/pkg-plist13
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= sunpoet@FreeBSD.org
@@ -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