diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-05-13 21:07:44 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-05-13 21:07:44 +0000 |
commit | 0b72bb1f6f21d9462e043e2cc28739c2e4bdffdf (patch) | |
tree | ece95204c9b80e30cc733ade8ac22381441285d1 | |
parent | 47dee43c21a0eed869499fbfc94c097a4f9e482a (diff) | |
parent | 62a445b00d0fadd082b62a4dc3f8c7df47251a7b (diff) | |
download | bazel-android12L-d2-s1-release.tar.gz |
Snap for 7358968 from 62a445b00d0fadd082b62a4dc3f8c7df47251a7b to sc-d2-releaseandroid-12.1.0_r26android-12.1.0_r25android-12.1.0_r24android-12.1.0_r23android-12.1.0_r18android-12.1.0_r17android-12.1.0_r16android-12.1.0_r15android-12.1.0_r14android-12.1.0_r13android-12.1.0_r12android12L-d2-s8-releaseandroid12L-d2-s7-releaseandroid12L-d2-s6-releaseandroid12L-d2-s5-releaseandroid12L-d2-s4-releaseandroid12L-d2-s3-releaseandroid12L-d2-s2-releaseandroid12L-d2-s1-releaseandroid12L-d2-release
Change-Id: I36d721bbd3456967d3611f1dc008f99bc5f24088
-rw-r--r-- | bazel.WORKSPACE | 10 | ||||
-rwxr-xr-x | ci/bp2build.sh | 1 | ||||
-rw-r--r-- | common.bazelrc | 5 | ||||
-rw-r--r-- | rules/full_cc_library.bzl | 7 | ||||
-rw-r--r-- | rules/soong_injection.bzl | 10 | ||||
-rw-r--r-- | rules_cc/examples/experimental_cc_shared_library.bzl | 16 | ||||
-rwxr-xr-x | tests/bionic/verify_bionic_outputs.sh | 1 |
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 |