Skip to content

Commit

Permalink
Static link rocksdb with Nimbus. (#2084)
Browse files Browse the repository at this point in the history
* Static link rocksdb into Nimbus.

* Link in additional compression libraries.

* Support static linking for MacOS.

* Add flag to support disabling rocksdb static linking.

* Static linking is disabled by default. Build nimbus with static linking using: make nimbus_rocksdb_static

* Update nim-rocksdb to latest.
  • Loading branch information
web3-developer committed Mar 28, 2024
1 parent 058f412 commit 0c01418
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 1 deletion.
10 changes: 10 additions & 0 deletions Makefile
Expand Up @@ -115,6 +115,7 @@ VERIF_PROXY_OUT_PATH ?= build/libverifproxy/
libnimbus.so \
libnimbus.a \
libbacktrace \
rocksdb \
dist-amd64 \
dist-arm64 \
dist-arm \
Expand Down Expand Up @@ -225,6 +226,11 @@ nimbus: | build deps
echo -e $(BUILD_MSG) "build/$@" && \
$(ENV_SCRIPT) nim c $(NIM_PARAMS) -d:chronicles_log_level=TRACE -o:build/$@ "nimbus/$@.nim"

nimbus_rocksdb_static: | build deps rocksdb_static_deps
echo -e $(BUILD_MSG) "build/$@" && \
$(ENV_SCRIPT) nim c $(NIM_PARAMS) -d:enable_rocksdb_static_linking -d:chronicles_log_level=TRACE \
-o:build/$@ "nimbus/nimbus.nim"

# symlink
nimbus.nims:
ln -s nimbus.nimble $@
Expand All @@ -233,6 +239,10 @@ nimbus.nims:
libbacktrace:
+ $(MAKE) -C vendor/nim-libbacktrace --no-print-directory BUILD_CXX_LIB=0

# nim-rocksdb static dependencies
rocksdb_static_deps:
+ vendor/nim-rocksdb/scripts/build_static_deps.sh

# builds and runs the nimbus test suite
test: | build deps
$(ENV_SCRIPT) nim test_rocksdb $(NIM_PARAMS) nimbus.nims
Expand Down
18 changes: 18 additions & 0 deletions config.nims
Expand Up @@ -159,3 +159,21 @@ if defined(windows) and defined(i386):
# nim-kzg shipping their own blst, nimbus-eth1 too.
# disable nim-kzg's blst
switch("define", "kzgExternalBlst")

# RocksDB static linking is disabled by default
when defined(enable_rocksdb_static_linking):

when defined(windows):
{.fatal: "RocksDB static linking is not supported on Windows".}

switch("define", "rocksdb_static_linking")

# use the C++ linker profile because it's a C++ library
when defined(macosx):
switch("clang.linkerexe", "clang++")
else:
switch("gcc.linkerexe", "g++")

switch("dynlibOverride", "rocksdb")
switch("dynlibOverride", "lz4")
switch("dynlibOverride", "zstd")

0 comments on commit 0c01418

Please sign in to comment.