diff --git a/CMakeLists.txt b/CMakeLists.txt index 79d48de3..dd48d67d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -148,6 +148,7 @@ endif() -DPROJECT_ENABLE_LIBSODIUM=${PROJECT_ENABLE_LIBSODIUM} -DPROJECT_ENABLE_OPENSSL=${PROJECT_ENABLE_OPENSSL} -DPROJECT_ENABLE_PUGIXML=${PROJECT_ENABLE_PUGIXML} + -DPROJECT_ENABLE_ROCKSDB=${PROJECT_ENABLE_ROCKSDB} -DPROJECT_ENABLE_SPDLOG=${PROJECT_ENABLE_SPDLOG} -DPROJECT_ENABLE_SQLITE=${PROJECT_ENABLE_SQLITE} -DPROJECT_ENABLE_STDUUID=${PROJECT_ENABLE_STDUUID} diff --git a/cmake/hashes.cmake b/cmake/hashes.cmake index 8100b938..20b2e9f5 100644 --- a/cmake/hashes.cmake +++ b/cmake/hashes.cmake @@ -13,6 +13,7 @@ set(MINGW_HASH 3f66bce069ee8bed7439a1a13da7cb91a5e67ea6170f21317ac7f5794625ee10) set(OPENSSL_HASH e15dda82fe2fe8139dc2ac21a36d4ca01d5313c75f99f46c4e8a27709b7294bf) set(PKG_CONFIG_HASH 6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591) set(PUGIXML_HASH 2f10e276870c64b1db6809050a75e11a897a8d7456c4be5c6b2e35a11168a015) +set(ROCKSDB_HASH 9b810c81731835fda0d4bbdb51d3199d901fa4395733ab63752d297da84c5a47) set(SPDLOG_HASH 9962648c9b4f1a7bbc76fd8d9172555bad1871fdb14ff4f842ef87949682caa5) set(SQLITE_HASH 77823cb110929c2bcb0f5d48e4833b5c59a8a6e40cdea3936b99e199dbbe5784) set(STDUUID_HASH b1176597e789531c38481acbbed2a6894ad419aab0979c10410d59eb0ebf40d3) diff --git a/cmake/libraries.cmake b/cmake/libraries.cmake index 97ab4ad5..5f955464 100644 --- a/cmake/libraries.cmake +++ b/cmake/libraries.cmake @@ -17,6 +17,7 @@ include(cmake/libraries/fuse.cmake) include(cmake/libraries/json.cmake) include(cmake/libraries/libsodium.cmake) include(cmake/libraries/pugixml.cmake) +include(cmake/libraries/rocksdb.cmake) include(cmake/libraries/spdlog.cmake) include(cmake/libraries/sqlite.cmake) include(cmake/libraries/stduuid.cmake) diff --git a/cmake/libraries/rocksdb.cmake b/cmake/libraries/rocksdb.cmake new file mode 100644 index 00000000..e3f5b5e4 --- /dev/null +++ b/cmake/libraries/rocksdb.cmake @@ -0,0 +1,36 @@ +if(PROJECT_ENABLE_ROCKSDB) + if(PROJECT_BUILD) + add_definitions(-DPROJECT_ENABLE_ROCKSDB) + + find_library(ROCKSDB_LIBRARY NAMES librocksdb.a REQUIRED) + + link_libraries(${ROCKSDB_LIBRARY}) + elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32) + ExternalProject_Add(rocksdb_project + PREFIX external + URL ${PROJECT_3RD_PARTY_DIR}/rocksdb-${ROCKSDB_VERSION}.tar.gz + URL_HASH SHA256=${ROCKSDB_HASH} + LIST_SEPARATOR | + CMAKE_ARGS ${PROJECT_EXTERNAL_CMAKE_FLAGS} + -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} + -DBUILD_STATIC_LIBS=ON + -DFAIL_ON_WARNINGS=OFF + -DPORTABLE=1 + -DROCKSDB_BUILD_SHARED=${PROJECT_BUILD_SHARED_LIBS} + -DROCKSDB_INSTALL_ON_WINDOWS=ON + -DWITH_BENCHMARK=OFF + -DWITH_BENCHMARK_TOOLS=OFF + -DWITH_CORE_TOOLS=OFF + -DWITH_EXAMPLES=OFF + -DWITH_GFLAGS=OFF + -DWITH_IOSTATS_CONTEXT=OFF + -DWITH_PERF_CONTEXT=OFF + -DWITH_TESTS=OFF + -DWITH_TOOLS=OFF + -DWITH_TRACE_TOOLS=OFF + -DWITH_ZLIB=ON + ) + + list(APPEND PROJECT_DEPENDENCIES rocksdb_project) + endif() +endif() diff --git a/cmake/options.cmake b/cmake/options.cmake index 5432b5a2..bb0900fc 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -6,6 +6,7 @@ option(PROJECT_ENABLE_JSON "Enable JSON for Modern C++ library" ON) option(PROJECT_ENABLE_LIBSODIUM "Enable libsodium library" ON) option(PROJECT_ENABLE_OPENSSL "Enable OpenSSL library" ON) option(PROJECT_ENABLE_PUGIXML "Enable PugiXML library" ON) +option(PROJECT_ENABLE_ROCKSDB "Enable RocksDB library" ON) option(PROJECT_ENABLE_SPDLOG "Enable spdlog library" ON) option(PROJECT_ENABLE_SQLITE "Enable SQLite" ON) option(PROJECT_ENABLE_STDUUID "Enable stduuid library" ON) diff --git a/cmake/versions.cmake b/cmake/versions.cmake index c104c1de..f34a45e8 100644 --- a/cmake/versions.cmake +++ b/cmake/versions.cmake @@ -1,15 +1,15 @@ set(BINUTILS_VERSION 2.41) -set(BOOST2_MAJOR_VERSION 1) -set(BOOST2_MINOR_VERSION 76) -set(BOOST2_PATCH_VERSION 0) set(BOOST_MAJOR_VERSION 1) set(BOOST_MINOR_VERSION 86) set(BOOST_PATCH_VERSION 0) +set(BOOST2_MAJOR_VERSION 1) +set(BOOST2_MINOR_VERSION 76) +set(BOOST2_PATCH_VERSION 0) set(CPP_HTTPLIB_VERSION 0.18.1) -set(CURL2_VERSION 8_11_0) set(CURL_VERSION 8.11.0) -set(EXPAT2_VERSION 2_6_4) +set(CURL2_VERSION 8_11_0) set(EXPAT_VERSION 2.6.4) +set(EXPAT2_VERSION 2_6_4) set(GCC_VERSION 14.2.0) set(GTEST_VERSION 1.15.2) set(ICU_VERSION 75-1) @@ -20,8 +20,9 @@ set(MINGW_VERSION 11.0.1) set(OPENSSL_VERSION 3.4.0) set(PKG_CONFIG_VERSION 0.29.2) set(PUGIXML_VERSION 1.14) +set(ROCKSDB_VERSION 9.7.4) set(SPDLOG_VERSION 1.15.0) -set(SQLITE2_VERSION 3.46.1) set(SQLITE_VERSION 3460100) +set(SQLITE2_VERSION 3.46.1) set(STDUUID_VERSION 1.2.3) set(ZLIB_VERSION 1.3.1) diff --git a/config.sh b/config.sh index eadc79f5..00ce1e7f 100755 --- a/config.sh +++ b/config.sh @@ -30,6 +30,7 @@ PROJECT_ENABLE_JSON=ON PROJECT_ENABLE_LIBSODIUM=ON PROJECT_ENABLE_OPENSSL=ON PROJECT_ENABLE_PUGIXML=ON +PROJECT_ENABLE_ROCKSDB=ON PROJECT_ENABLE_SPDLOG=ON PROJECT_ENABLE_SQLITE=ON PROJECT_ENABLE_STDUUID=ON diff --git a/scripts/options.sh b/scripts/options.sh index 6a24e91b..db9326de 100755 --- a/scripts/options.sh +++ b/scripts/options.sh @@ -9,6 +9,7 @@ PROJECT_LIBRARIES=( LIBSODIUM OPENSSL PUGIXML + ROCKSDB SPDLOG SQLITE STDUUID @@ -25,6 +26,7 @@ PROJECT_CLEANUP[LIBBITCOIN_SYSTEM_ON]="3rd_party/boost_${PROJECT_VERSIONS[BOOST_ PROJECT_CLEANUP[LIBSODIUM]="3rd_party/libsodium-*:3rd_party/libsodium*" PROJECT_CLEANUP[OPENSSL]="3rd_party/openssl-*" PROJECT_CLEANUP[PUGIXML]="3rd_party/pugixml-*" +PROJECT_CLEANUP[ROCKSDB]="3rd_party/rocksdb-*" PROJECT_CLEANUP[SPDLOG]="3rd_party/spdlog-*" PROJECT_CLEANUP[SQLITE]="3rd_party/sqlite*" PROJECT_CLEANUP[STDUUID]="3rd_party/stduuid-*" diff --git a/scripts/versions.sh b/scripts/versions.sh index 556fb18c..546481fc 100755 --- a/scripts/versions.sh +++ b/scripts/versions.sh @@ -23,6 +23,7 @@ PROJECT_VERSIONS[MINGW]="11.0.1" PROJECT_VERSIONS[OPENSSL]="3.4.0" PROJECT_VERSIONS[PKG_CONFIG]="0.29.2" PROJECT_VERSIONS[PUGIXML]="1.14" +PROJECT_VERSIONS[ROCKSDB]="9.7.4" PROJECT_VERSIONS[SPDLOG]="1.15.0" PROJECT_VERSIONS[SQLITE]="3460100" PROJECT_VERSIONS[SQLITE2]="3.46.1" @@ -46,6 +47,7 @@ PROJECT_DOWNLOADS[MINGW]="https://phoenixnap.dl.sourceforge.net/project/mingw-w6 PROJECT_DOWNLOADS[OPENSSL]="https://github.com/openssl/openssl/releases/download/openssl-${PROJECT_VERSIONS[OPENSSL]}/openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;openssl-${PROJECT_VERSIONS[OPENSSL]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[PKG_CONFIG]="https://pkgconfig.freedesktop.org/releases/pkg-config-${PROJECT_VERSIONS[PKG_CONFIG]}.tar.gz;pkg-config-${PROJECT_VERSIONS[PKG_CONFIG]}.tar.gz;3rd_party/mingw64" PROJECT_DOWNLOADS[PUGIXML]="https://github.com/zeux/pugixml/releases/download/v${PROJECT_VERSIONS[PUGIXML]}/pugixml-${PROJECT_VERSIONS[PUGIXML]}.tar.gz;pugixml-${PROJECT_VERSIONS[PUGIXML]}.tar.gz;3rd_party" +PROJECT_DOWNLOADS[ROCKSDB]="https://github.com/facebook/rocksdb/archive/refs/tags/v${PROJECT_VERSIONS[ROCKSDB]}.tar.gz;rocksdb-${PROJECT_VERSIONS[ROCKSDB]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[SPDLOG]="https://github.com/gabime/spdlog/archive/refs/tags/v${PROJECT_VERSIONS[SPDLOG]}.tar.gz;spdlog-${PROJECT_VERSIONS[SPDLOG]}.tar.gz;3rd_party" PROJECT_DOWNLOADS[SQLITE]="https://www.sqlite.org/2024/sqlite-amalgamation-${PROJECT_VERSIONS[SQLITE]}.zip;sqlite-amalgamation-${PROJECT_VERSIONS[SQLITE]}.zip;3rd_party" PROJECT_DOWNLOADS[STDUUID]="https://github.com/mariusbancila/stduuid/archive/refs/tags/v${PROJECT_VERSIONS[STDUUID]}.tar.gz;stduuid-${PROJECT_VERSIONS[STDUUID]}.tar.gz;3rd_party" diff --git a/support/3rd_party/rocksdb-9.7.4.tar.gz b/support/3rd_party/rocksdb-9.7.4.tar.gz new file mode 100644 index 00000000..d74b8098 Binary files /dev/null and b/support/3rd_party/rocksdb-9.7.4.tar.gz differ diff --git a/support/3rd_party/rocksdb-9.7.4.tar.gz.sha256 b/support/3rd_party/rocksdb-9.7.4.tar.gz.sha256 new file mode 100644 index 00000000..6b280b85 --- /dev/null +++ b/support/3rd_party/rocksdb-9.7.4.tar.gz.sha256 @@ -0,0 +1 @@ +9b810c81731835fda0d4bbdb51d3199d901fa4395733ab63752d297da84c5a47 *rocksdb-9.7.4.tar.gz