diff options
author | Vinh Tran <vinhdaitran@google.com> | 2023-07-21 19:38:23 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-07-21 19:38:23 +0000 |
commit | f0df148dbeb9b9ed3816aad328ebe7c65efaaa24 (patch) | |
tree | c75dabb560288e11786211bdc61ba40dde4b8674 /examples/my_c_compile/my_c_compile.bzl | |
parent | 3544b5a539d9e51161befd2ac3fdc04525bced91 (diff) | |
parent | 9a4853f0327e0266818c8d6b4967e2e8f36b1a88 (diff) | |
download | bazelbuild-rules_cc-f0df148dbeb9b9ed3816aad328ebe7c65efaaa24.tar.gz |
Merge remote-tracking branch 'aosp/upstream-main' into main am: 755aefef35 am: d7bf0d569f am: 59148a708a am: 13ca54997b am: 9a4853f032android-14.0.0_r51android-14.0.0_r50android-14.0.0_r37android-14.0.0_r36android-14.0.0_r35android-14.0.0_r34android-14.0.0_r33android-14.0.0_r32android-14.0.0_r31android-14.0.0_r30android-14.0.0_r29android-14.0.0_r28android14-qpr3-releaseandroid14-qpr2-s5-releaseandroid14-qpr2-s4-releaseandroid14-qpr2-s3-releaseandroid14-qpr2-s2-releaseandroid14-qpr2-s1-releaseandroid14-qpr2-release
Original change: https://android-review.googlesource.com/c/platform/external/bazelbuild-rules_cc/+/2663436
Change-Id: I450b9f32024fa1b0844cc21a825c26589feb3977
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'examples/my_c_compile/my_c_compile.bzl')
-rw-r--r-- | examples/my_c_compile/my_c_compile.bzl | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/examples/my_c_compile/my_c_compile.bzl b/examples/my_c_compile/my_c_compile.bzl new file mode 100644 index 0000000..d232f91 --- /dev/null +++ b/examples/my_c_compile/my_c_compile.bzl @@ -0,0 +1,81 @@ +# Copyright 2019 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Example showing how to create a rule that just compiles C sources.""" + +load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain", "use_cpp_toolchain") +load("@rules_cc//cc:action_names.bzl", "C_COMPILE_ACTION_NAME") + +MyCCompileInfo = provider(doc = "", fields = ["object"]) + +DISABLED_FEATURES = [ + "module_maps", # # copybara-comment-this-out-please +] + +def _my_c_compile_impl(ctx): + cc_toolchain = find_cpp_toolchain(ctx) + source_file = ctx.file.src + output_file = ctx.actions.declare_file(ctx.label.name + ".o") + feature_configuration = cc_common.configure_features( + ctx = ctx, + cc_toolchain = cc_toolchain, + requested_features = ctx.features, + unsupported_features = DISABLED_FEATURES + ctx.disabled_features, + ) + c_compiler_path = cc_common.get_tool_for_action( + feature_configuration = feature_configuration, + action_name = C_COMPILE_ACTION_NAME, + ) + c_compile_variables = cc_common.create_compile_variables( + feature_configuration = feature_configuration, + cc_toolchain = cc_toolchain, + user_compile_flags = ctx.fragments.cpp.copts + ctx.fragments.cpp.conlyopts, + source_file = source_file.path, + output_file = output_file.path, + ) + command_line = cc_common.get_memory_inefficient_command_line( + feature_configuration = feature_configuration, + action_name = C_COMPILE_ACTION_NAME, + variables = c_compile_variables, + ) + env = cc_common.get_environment_variables( + feature_configuration = feature_configuration, + action_name = C_COMPILE_ACTION_NAME, + variables = c_compile_variables, + ) + + ctx.actions.run( + executable = c_compiler_path, + arguments = command_line, + env = env, + inputs = depset( + [source_file], + transitive = [cc_toolchain.all_files], + ), + outputs = [output_file], + ) + return [ + DefaultInfo(files = depset([output_file])), + MyCCompileInfo(object = output_file), + ] + +my_c_compile = rule( + implementation = _my_c_compile_impl, + attrs = { + "src": attr.label(mandatory = True, allow_single_file = True), + "_cc_toolchain": attr.label(default = Label("@bazel_tools//tools/cpp:current_cc_toolchain")), + }, + toolchains = use_cpp_toolchain(), + fragments = ["cpp"], +) |