summaryrefslogtreecommitdiff
path: root/buckifier
diff options
context:
space:
mode:
authorYanqin Jin <yanqin@fb.com>2020-09-30 22:49:20 -0700
committerFacebook GitHub Bot <facebook-github-bot@users.noreply.github.com>2020-09-30 22:50:32 -0700
commit2f2e6e1e2c695bf8fac53b3bd162626de71df5b4 (patch)
tree6e8fa6b4834ded27b359260a8bd7a07c6dbf7781 /buckifier
parent2af46f10112f91298a66d513269705fe609a2461 (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.py9
-rw-r--r--buckifier/targets_builder.py5
-rw-r--r--buckifier/targets_cfg.py1
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},
)
"""