Static link rocksdb with Nimbus. (#2084)
* 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.
This commit is contained in:
parent
058f412bbc
commit
0c0141817c
10
Makefile
10
Makefile
|
@ -115,6 +115,7 @@ VERIF_PROXY_OUT_PATH ?= build/libverifproxy/
|
||||||
libnimbus.so \
|
libnimbus.so \
|
||||||
libnimbus.a \
|
libnimbus.a \
|
||||||
libbacktrace \
|
libbacktrace \
|
||||||
|
rocksdb \
|
||||||
dist-amd64 \
|
dist-amd64 \
|
||||||
dist-arm64 \
|
dist-arm64 \
|
||||||
dist-arm \
|
dist-arm \
|
||||||
|
@ -225,6 +226,11 @@ nimbus: | build deps
|
||||||
echo -e $(BUILD_MSG) "build/$@" && \
|
echo -e $(BUILD_MSG) "build/$@" && \
|
||||||
$(ENV_SCRIPT) nim c $(NIM_PARAMS) -d:chronicles_log_level=TRACE -o:build/$@ "nimbus/$@.nim"
|
$(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
|
# symlink
|
||||||
nimbus.nims:
|
nimbus.nims:
|
||||||
ln -s nimbus.nimble $@
|
ln -s nimbus.nimble $@
|
||||||
|
@ -233,6 +239,10 @@ nimbus.nims:
|
||||||
libbacktrace:
|
libbacktrace:
|
||||||
+ $(MAKE) -C vendor/nim-libbacktrace --no-print-directory BUILD_CXX_LIB=0
|
+ $(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
|
# builds and runs the nimbus test suite
|
||||||
test: | build deps
|
test: | build deps
|
||||||
$(ENV_SCRIPT) nim test_rocksdb $(NIM_PARAMS) nimbus.nims
|
$(ENV_SCRIPT) nim test_rocksdb $(NIM_PARAMS) nimbus.nims
|
||||||
|
|
18
config.nims
18
config.nims
|
@ -159,3 +159,21 @@ if defined(windows) and defined(i386):
|
||||||
# nim-kzg shipping their own blst, nimbus-eth1 too.
|
# nim-kzg shipping their own blst, nimbus-eth1 too.
|
||||||
# disable nim-kzg's blst
|
# disable nim-kzg's blst
|
||||||
switch("define", "kzgExternalBlst")
|
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")
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit fc2ba4a836b6b47ae1b17d1c45801c7e06585e19
|
Subproject commit 90027f187515d760ae4119032ecdcc82368827a5
|
Loading…
Reference in New Issue