aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-05-13 21:07:44 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2021-05-13 21:07:44 +0000
commit0b72bb1f6f21d9462e043e2cc28739c2e4bdffdf (patch)
treeece95204c9b80e30cc733ade8ac22381441285d1
parent47dee43c21a0eed869499fbfc94c097a4f9e482a (diff)
parent62a445b00d0fadd082b62a4dc3f8c7df47251a7b (diff)
downloadbazel-android12L-d2-s1-release.tar.gz
Change-Id: I36d721bbd3456967d3611f1dc008f99bc5f24088
-rw-r--r--bazel.WORKSPACE10
-rwxr-xr-xci/bp2build.sh1
-rw-r--r--common.bazelrc5
-rw-r--r--rules/full_cc_library.bzl7
-rw-r--r--rules/soong_injection.bzl10
-rw-r--r--rules_cc/examples/experimental_cc_shared_library.bzl16
-rwxr-xr-xtests/bionic/verify_bionic_outputs.sh1
7 files changed, 33 insertions, 17 deletions
diff --git a/bazel.WORKSPACE b/bazel.WORKSPACE
index 5f86be1d..55f72624 100644
--- a/bazel.WORKSPACE
+++ b/bazel.WORKSPACE
@@ -1,6 +1,7 @@
toplevel_output_directories(paths = ["out"])
load("//build/bazel/rules:lunch.bzl", "lunch")
+load("//build/bazel/rules:soong_injection.bzl", "soong_injection_repository")
lunch()
@@ -8,14 +9,7 @@ register_toolchains(
"//prebuilts/clang/host/linux-x86:all"
)
-# This references $OUTDIR/soong/soong_injection.
-# It works because the synthetic Bazel workspace (where this file is evaluated)
-# lives under $OUTDIR/soong/workspace. This way, this file is not a function of
-# $OUTDIR and thus doesn't need to be generated.
-local_repository(
- name = "soong_injection",
- path = "../soong_injection",
-)
+soong_injection_repository(name="soong_injection")
local_repository(
name = "rules_cc",
diff --git a/ci/bp2build.sh b/ci/bp2build.sh
index ebb6cea5..474ec0bf 100755
--- a/ci/bp2build.sh
+++ b/ci/bp2build.sh
@@ -38,6 +38,7 @@ BUILD_TARGETS_LIST=(
//bionic/...
//system/...
//external/arm-optimized-routines/...
+ //external/scudo/...
)
BUILD_TARGETS="${BUILD_TARGETS_LIST[@]}"
tools/bazel --max_idle_secs=5 build ${BUILD_FLAGS} --platforms //build/bazel/platforms:android_x86 -k ${BUILD_TARGETS}
diff --git a/common.bazelrc b/common.bazelrc
index 07e30538..2ed069c3 100644
--- a/common.bazelrc
+++ b/common.bazelrc
@@ -18,6 +18,11 @@ build --experimental_allow_unresolved_symlinks
# Enable usage of cc_shared_library build APIs
build --experimental_cc_shared_library
+# Do not tokenize copts, other than strings that consist of a single Make
+# variable. This prevents the need to double-escape characters like backslashes
+# and quotes in copts.
+build --features no_copts_tokenization
+
# Disable middleman actions
build --noexperimental_enable_aggregating_middleman
diff --git a/rules/full_cc_library.bzl b/rules/full_cc_library.bzl
index 6e5d000c..4a8e7b03 100644
--- a/rules/full_cc_library.bzl
+++ b/rules/full_cc_library.bzl
@@ -62,11 +62,6 @@ def cc_library(
deps = deps + static_deps_for_shared + whole_archive_deps + whole_archive_deps_for_shared,
)
- additional_linker_inputs = []
- if version_script != None:
- user_link_flags = user_link_flags + ["-Wl,--version-script,$(location " + version_script + ")"]
- additional_linker_inputs += [version_script]
-
cc_shared_library(
name = shared_name,
user_link_flags = user_link_flags,
@@ -76,7 +71,7 @@ def cc_library(
# instead of needing to declare each target transitively.
static_deps = ["//:__subpackages__"] + [shared_root_name],
dynamic_deps = dynamic_deps + dynamic_deps_for_shared,
- additional_linker_inputs = additional_linker_inputs,
+ version_script = version_script,
roots = [shared_root_name] + whole_archive_deps + whole_archive_deps_for_shared,
)
diff --git a/rules/soong_injection.bzl b/rules/soong_injection.bzl
new file mode 100644
index 00000000..527ce52c
--- /dev/null
+++ b/rules/soong_injection.bzl
@@ -0,0 +1,10 @@
+def _impl(rctx):
+ rctx.file("WORKSPACE", "")
+ build_dir = str(rctx.path(Label("//:BUILD")).dirname.dirname)
+ soong_injection_dir = build_dir + "/soong_injection"
+ rctx.symlink(soong_injection_dir + "/mixed_builds", "mixed_builds")
+ rctx.symlink(soong_injection_dir + "/cc_toolchain", "cc_toolchain")
+
+soong_injection_repository = repository_rule(
+ implementation = _impl,
+)
diff --git a/rules_cc/examples/experimental_cc_shared_library.bzl b/rules_cc/examples/experimental_cc_shared_library.bzl
index 905bd270..355ed0ec 100644
--- a/rules_cc/examples/experimental_cc_shared_library.bzl
+++ b/rules_cc/examples/experimental_cc_shared_library.bzl
@@ -309,6 +309,14 @@ def _get_permissions(ctx):
return ctx.attr.permissions
return None
+def _process_version_script(ctx):
+ if ctx.attr.version_script == None:
+ return ([], [])
+
+ version_script = ctx.files.version_script[0]
+ version_script_arg = "-Wl,--version-script," + version_script.path
+ return ([version_script], [version_script_arg])
+
def _cc_shared_library_impl(ctx):
cc_common.check_experimental_cc_shared_library()
cc_toolchain = find_cc_toolchain(ctx)
@@ -351,7 +359,10 @@ def _cc_shared_library_impl(ctx):
linking_context = _create_linker_context(ctx, linker_inputs)
- user_link_flags = []
+ # Divergence from rules_cc: that version does not support version scripts
+ version_script, version_script_arg = _process_version_script(ctx)
+
+ user_link_flags = version_script_arg[:]
for user_link_flag in ctx.attr.user_link_flags:
user_link_flags.append(ctx.expand_location(user_link_flag, targets = ctx.attr.additional_linker_inputs))
@@ -361,7 +372,7 @@ def _cc_shared_library_impl(ctx):
cc_toolchain = cc_toolchain,
linking_contexts = [linking_context],
user_link_flags = user_link_flags,
- additional_inputs = ctx.files.additional_linker_inputs,
+ additional_inputs = ctx.files.additional_linker_inputs + version_script,
name = ctx.label.name,
output_type = "dynamic_library",
)
@@ -463,6 +474,7 @@ cc_shared_library = rule(
"preloaded_deps": attr.label_list(providers = [CcInfo]),
"roots": attr.label_list(providers = [CcInfo], aspects = [graph_structure_aspect]),
"static_deps": attr.string_list(),
+ "version_script": attr.label(allow_single_file = True),
"user_link_flags": attr.string_list(),
"_cc_toolchain": attr.label(default = "@bazel_tools//tools/cpp:current_cc_toolchain"),
"_enable_permissions_check": attr.label(default = "//examples:enable_permissions_check"),
diff --git a/tests/bionic/verify_bionic_outputs.sh b/tests/bionic/verify_bionic_outputs.sh
index d3cf47da..cc743039 100755
--- a/tests/bionic/verify_bionic_outputs.sh
+++ b/tests/bionic/verify_bionic_outputs.sh
@@ -57,7 +57,6 @@ function test_ld-android() {
test_filetype "${static_library}" "current ar archive"
symbols=(
- __internal_linker_error
__loader_add_thread_local_dtor
__loader_android_create_namespace
__loader_android_dlopen_ext