diff options
author | Yanqin Jin <yanqin@fb.com> | 2020-09-30 22:49:20 -0700 |
---|---|---|
committer | Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> | 2020-09-30 22:50:32 -0700 |
commit | 2f2e6e1e2c695bf8fac53b3bd162626de71df5b4 (patch) | |
tree | 6e8fa6b4834ded27b359260a8bd7a07c6dbf7781 /buckifier | |
parent | 2af46f10112f91298a66d513269705fe609a2461 (diff) |
Add a rocksdb lib target with link_whole=True (#7466)
Summary:
We would like to build a shared library with all fbcode dependencies statically linked within.
This resulting .so should not drop any symbols definitions in the building process.
To ensure that, we use `link_whole=True` according to
https://buck.build/rule/cxx_library.html#link_whole.
Since `link_whole` is `False` by default, adding a `link_whole=False` to existing libraries won't
change any behavior.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/7466
Test Plan: build a .so and test internally.
Reviewed By: pdillinger
Differential Revision: D24009780
Pulled By: riversand963
fbshipit-source-id: d18804d495da7195ed72a2040e1a5de4fd336519
Diffstat (limited to 'buckifier')
-rw-r--r-- | buckifier/buckify_rocksdb.py | 9 | ||||
-rw-r--r-- | buckifier/targets_builder.py | 5 | ||||
-rw-r--r-- | buckifier/targets_cfg.py | 1 |
3 files changed, 13 insertions, 2 deletions
diff --git a/buckifier/buckify_rocksdb.py b/buckifier/buckify_rocksdb.py index e9704f069..f0909bc61 100644 --- a/buckifier/buckify_rocksdb.py +++ b/buckifier/buckify_rocksdb.py @@ -136,6 +136,15 @@ def generate_targets(repo_path, deps_map): "rocksdb_lib", src_mk["LIB_SOURCES"] + src_mk["TOOL_LIB_SOURCES"]) + # rocksdb_whole_archive_lib + TARGETS.add_library( + "rocksdb_whole_archive_lib", + src_mk["LIB_SOURCES"] + + src_mk["TOOL_LIB_SOURCES"], + deps=None, + headers=None, + extra_external_deps="", + link_whole=True) # rocksdb_test_lib TARGETS.add_library( "rocksdb_test_lib", diff --git a/buckifier/targets_builder.py b/buckifier/targets_builder.py index 0b67e0b37..e9f6f5be4 100644 --- a/buckifier/targets_builder.py +++ b/buckifier/targets_builder.py @@ -39,7 +39,7 @@ class TARGETSBuilder(object): self.targets_file.close() def add_library(self, name, srcs, deps=None, headers=None, - extra_external_deps=""): + extra_external_deps="", link_whole=False): headers_attr_prefix = "" if headers is None: headers_attr_prefix = "auto_" @@ -52,7 +52,8 @@ class TARGETSBuilder(object): headers_attr_prefix=headers_attr_prefix, headers=headers, deps=pretty_list(deps), - extra_external_deps=extra_external_deps).encode("utf-8")) + extra_external_deps=extra_external_deps, + link_whole=link_whole).encode("utf-8")) self.total_lib = self.total_lib + 1 def add_rocksdb_library(self, name, srcs, headers=None): diff --git a/buckifier/targets_cfg.py b/buckifier/targets_cfg.py index 68912d113..0c20ef095 100644 --- a/buckifier/targets_cfg.py +++ b/buckifier/targets_cfg.py @@ -146,6 +146,7 @@ cpp_library( preprocessor_flags = ROCKSDB_PREPROCESSOR_FLAGS, deps = [{deps}], external_deps = ROCKSDB_EXTERNAL_DEPS{extra_external_deps}, + link_whole = {link_whole}, ) """ |