1*7594170eSAndroid Build Coastguard Worker# Copyright (C) 2021 The Android Open Source Project 2*7594170eSAndroid Build Coastguard Worker# 3*7594170eSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*7594170eSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*7594170eSAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*7594170eSAndroid Build Coastguard Worker# 7*7594170eSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*7594170eSAndroid Build Coastguard Worker# 9*7594170eSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*7594170eSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*7594170eSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*7594170eSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*7594170eSAndroid Build Coastguard Worker# limitations under the License. 14*7594170eSAndroid Build Coastguard Worker 15*7594170eSAndroid Build Coastguard Workerload("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo") 16*7594170eSAndroid Build Coastguard Workerload(":cc_constants.bzl", "constants") 17*7594170eSAndroid Build Coastguard Workerload( 18*7594170eSAndroid Build Coastguard Worker ":cc_library_common.bzl", 19*7594170eSAndroid Build Coastguard Worker "get_includes_paths", 20*7594170eSAndroid Build Coastguard Worker "is_external_directory", 21*7594170eSAndroid Build Coastguard Worker "parse_sdk_version", 22*7594170eSAndroid Build Coastguard Worker "system_dynamic_deps_defaults", 23*7594170eSAndroid Build Coastguard Worker) 24*7594170eSAndroid Build Coastguard Workerload(":composed_transitions.bzl", "drop_sanitizer_transition") 25*7594170eSAndroid Build Coastguard Workerload(":stl.bzl", "stl_info_from_attr") 26*7594170eSAndroid Build Coastguard Worker 27*7594170eSAndroid Build Coastguard Worker# "cc_object" module copts, taken from build/soong/cc/object.go 28*7594170eSAndroid Build Coastguard Worker_CC_OBJECT_COPTS = ["-fno-addrsig"] 29*7594170eSAndroid Build Coastguard Worker 30*7594170eSAndroid Build Coastguard Worker# partialLd module link opts, taken from build/soong/cc/builder.go 31*7594170eSAndroid Build Coastguard Worker# https://cs.android.com/android/platform/superproject/+/master:build/soong/cc/builder.go;l=87;drc=f2be52c4dcc2e3d743318e106633e61de0ad2afd 32*7594170eSAndroid Build Coastguard Worker_CC_OBJECT_LINKOPTS = [ 33*7594170eSAndroid Build Coastguard Worker "-fuse-ld=lld", 34*7594170eSAndroid Build Coastguard Worker "-nostdlib", 35*7594170eSAndroid Build Coastguard Worker "-no-pie", 36*7594170eSAndroid Build Coastguard Worker "-Wl,-r", 37*7594170eSAndroid Build Coastguard Worker] 38*7594170eSAndroid Build Coastguard Worker 39*7594170eSAndroid Build Coastguard WorkerCcObjectInfo = provider(fields = [ 40*7594170eSAndroid Build Coastguard Worker # The merged compilation outputs for this cc_object and its transitive 41*7594170eSAndroid Build Coastguard Worker # dependencies. 42*7594170eSAndroid Build Coastguard Worker "objects", 43*7594170eSAndroid Build Coastguard Worker]) 44*7594170eSAndroid Build Coastguard Worker 45*7594170eSAndroid Build Coastguard Workerdef split_srcs_hdrs(files): 46*7594170eSAndroid Build Coastguard Worker headers = [] 47*7594170eSAndroid Build Coastguard Worker non_headers_as = [] 48*7594170eSAndroid Build Coastguard Worker non_headers_c = [] 49*7594170eSAndroid Build Coastguard Worker for f in files: 50*7594170eSAndroid Build Coastguard Worker if f.extension in constants.hdr_exts: 51*7594170eSAndroid Build Coastguard Worker headers.append(f) 52*7594170eSAndroid Build Coastguard Worker elif f.extension in constants.as_src_exts: 53*7594170eSAndroid Build Coastguard Worker non_headers_as.append(f) 54*7594170eSAndroid Build Coastguard Worker else: 55*7594170eSAndroid Build Coastguard Worker non_headers_c.append(f) 56*7594170eSAndroid Build Coastguard Worker return non_headers_c, non_headers_as, headers 57*7594170eSAndroid Build Coastguard Worker 58*7594170eSAndroid Build Coastguard Workerdef _objcopy_noaddrsig(ctx, noaddrsig_output, linking_output, cc_toolchain): 59*7594170eSAndroid Build Coastguard Worker output_file = ctx.actions.declare_file(noaddrsig_output) 60*7594170eSAndroid Build Coastguard Worker 61*7594170eSAndroid Build Coastguard Worker feature_configuration = cc_common.configure_features( 62*7594170eSAndroid Build Coastguard Worker ctx = ctx, 63*7594170eSAndroid Build Coastguard Worker cc_toolchain = cc_toolchain, 64*7594170eSAndroid Build Coastguard Worker requested_features = ctx.features, 65*7594170eSAndroid Build Coastguard Worker unsupported_features = ctx.disabled_features, 66*7594170eSAndroid Build Coastguard Worker ) 67*7594170eSAndroid Build Coastguard Worker 68*7594170eSAndroid Build Coastguard Worker objcopy_path = cc_common.get_tool_for_action( 69*7594170eSAndroid Build Coastguard Worker feature_configuration = feature_configuration, 70*7594170eSAndroid Build Coastguard Worker action_name = "objcopy", 71*7594170eSAndroid Build Coastguard Worker ) 72*7594170eSAndroid Build Coastguard Worker command_line = cc_common.get_memory_inefficient_command_line( 73*7594170eSAndroid Build Coastguard Worker feature_configuration = feature_configuration, 74*7594170eSAndroid Build Coastguard Worker action_name = "objcopy", 75*7594170eSAndroid Build Coastguard Worker variables = cc_common.empty_variables(), 76*7594170eSAndroid Build Coastguard Worker ) 77*7594170eSAndroid Build Coastguard Worker 78*7594170eSAndroid Build Coastguard Worker args = ctx.actions.args() 79*7594170eSAndroid Build Coastguard Worker args.add_all(command_line) 80*7594170eSAndroid Build Coastguard Worker args.add("--remove-section=.llvm_addrsig") 81*7594170eSAndroid Build Coastguard Worker args.add(linking_output.executable) 82*7594170eSAndroid Build Coastguard Worker args.add(output_file) 83*7594170eSAndroid Build Coastguard Worker 84*7594170eSAndroid Build Coastguard Worker ctx.actions.run( 85*7594170eSAndroid Build Coastguard Worker executable = objcopy_path, 86*7594170eSAndroid Build Coastguard Worker arguments = [args], 87*7594170eSAndroid Build Coastguard Worker inputs = depset( 88*7594170eSAndroid Build Coastguard Worker direct = [linking_output.executable], 89*7594170eSAndroid Build Coastguard Worker transitive = [ 90*7594170eSAndroid Build Coastguard Worker cc_toolchain.all_files, 91*7594170eSAndroid Build Coastguard Worker ], 92*7594170eSAndroid Build Coastguard Worker ), 93*7594170eSAndroid Build Coastguard Worker outputs = [output_file], 94*7594170eSAndroid Build Coastguard Worker mnemonic = "CppObjcopyNoAddrsig", 95*7594170eSAndroid Build Coastguard Worker ) 96*7594170eSAndroid Build Coastguard Worker 97*7594170eSAndroid Build Coastguard Worker return output_file 98*7594170eSAndroid Build Coastguard Worker 99*7594170eSAndroid Build Coastguard Workerdef _cc_object_impl(ctx): 100*7594170eSAndroid Build Coastguard Worker cc_toolchain = ctx.toolchains["//prebuilts/clang/host/linux-x86:nocrt_toolchain"].cc 101*7594170eSAndroid Build Coastguard Worker 102*7594170eSAndroid Build Coastguard Worker extra_features = [] 103*7594170eSAndroid Build Coastguard Worker 104*7594170eSAndroid Build Coastguard Worker extra_disabled_features = [ 105*7594170eSAndroid Build Coastguard Worker "disable_pack_relocations", 106*7594170eSAndroid Build Coastguard Worker "dynamic_executable", 107*7594170eSAndroid Build Coastguard Worker "dynamic_linker", 108*7594170eSAndroid Build Coastguard Worker "linker_flags", 109*7594170eSAndroid Build Coastguard Worker "no_undefined_symbols", 110*7594170eSAndroid Build Coastguard Worker "pack_dynamic_relocations", 111*7594170eSAndroid Build Coastguard Worker "strip_debug_symbols", 112*7594170eSAndroid Build Coastguard Worker # TODO(cparsons): Look into disabling this feature for nocrt toolchain? 113*7594170eSAndroid Build Coastguard Worker "use_libcrt", 114*7594170eSAndroid Build Coastguard Worker ] 115*7594170eSAndroid Build Coastguard Worker if is_external_directory(ctx.label.package): 116*7594170eSAndroid Build Coastguard Worker extra_disabled_features.append("non_external_compiler_flags") 117*7594170eSAndroid Build Coastguard Worker extra_features.append("external_compiler_flags") 118*7594170eSAndroid Build Coastguard Worker else: 119*7594170eSAndroid Build Coastguard Worker extra_features.append("non_external_compiler_flags") 120*7594170eSAndroid Build Coastguard Worker extra_disabled_features.append("external_compiler_flags") 121*7594170eSAndroid Build Coastguard Worker 122*7594170eSAndroid Build Coastguard Worker apex_min_sdk_version = ctx.attr._apex_min_sdk_version[BuildSettingInfo].value 123*7594170eSAndroid Build Coastguard Worker if ctx.attr.crt and apex_min_sdk_version: 124*7594170eSAndroid Build Coastguard Worker extra_disabled_features.append("sdk_version_default") 125*7594170eSAndroid Build Coastguard Worker extra_features += parse_sdk_version(apex_min_sdk_version) 126*7594170eSAndroid Build Coastguard Worker elif ctx.attr.min_sdk_version: 127*7594170eSAndroid Build Coastguard Worker extra_disabled_features.append("sdk_version_default") 128*7594170eSAndroid Build Coastguard Worker extra_features += parse_sdk_version(ctx.attr.min_sdk_version) 129*7594170eSAndroid Build Coastguard Worker 130*7594170eSAndroid Build Coastguard Worker # Disable coverage for cc object because we link cc objects below and 131*7594170eSAndroid Build Coastguard Worker # clang will link extra lib behind the scene to support profiling if coverage 132*7594170eSAndroid Build Coastguard Worker # is enabled, so the symbols of the extra lib will be loaded into the generated 133*7594170eSAndroid Build Coastguard Worker # object file. When later we link a shared library that depends on more than 134*7594170eSAndroid Build Coastguard Worker # one such cc objects it will fail due to the duplicated symbols problem. 135*7594170eSAndroid Build Coastguard Worker extra_disabled_features.append("coverage") 136*7594170eSAndroid Build Coastguard Worker 137*7594170eSAndroid Build Coastguard Worker feature_configuration = cc_common.configure_features( 138*7594170eSAndroid Build Coastguard Worker ctx = ctx, 139*7594170eSAndroid Build Coastguard Worker cc_toolchain = cc_toolchain, 140*7594170eSAndroid Build Coastguard Worker requested_features = ctx.features + extra_features, 141*7594170eSAndroid Build Coastguard Worker unsupported_features = ctx.disabled_features + extra_disabled_features, 142*7594170eSAndroid Build Coastguard Worker ) 143*7594170eSAndroid Build Coastguard Worker 144*7594170eSAndroid Build Coastguard Worker compilation_contexts = [] 145*7594170eSAndroid Build Coastguard Worker deps_objects = [] 146*7594170eSAndroid Build Coastguard Worker for obj in ctx.attr.objs: 147*7594170eSAndroid Build Coastguard Worker compilation_contexts.append(obj[CcInfo].compilation_context) 148*7594170eSAndroid Build Coastguard Worker deps_objects.append(obj[CcObjectInfo].objects) 149*7594170eSAndroid Build Coastguard Worker for includes_dep in ctx.attr.includes_deps: 150*7594170eSAndroid Build Coastguard Worker compilation_contexts.append(includes_dep[CcInfo].compilation_context) 151*7594170eSAndroid Build Coastguard Worker 152*7594170eSAndroid Build Coastguard Worker product_variables = ctx.attr._android_product_variables[platform_common.TemplateVariableInfo] 153*7594170eSAndroid Build Coastguard Worker asflags = [ctx.expand_make_variables("asflags", flag, product_variables.variables) for flag in ctx.attr.asflags] 154*7594170eSAndroid Build Coastguard Worker 155*7594170eSAndroid Build Coastguard Worker srcs_c, srcs_as, private_hdrs = split_srcs_hdrs(ctx.files.srcs + ctx.files.srcs_as) 156*7594170eSAndroid Build Coastguard Worker 157*7594170eSAndroid Build Coastguard Worker (compilation_context, compilation_outputs_c) = cc_common.compile( 158*7594170eSAndroid Build Coastguard Worker name = ctx.label.name, 159*7594170eSAndroid Build Coastguard Worker actions = ctx.actions, 160*7594170eSAndroid Build Coastguard Worker feature_configuration = feature_configuration, 161*7594170eSAndroid Build Coastguard Worker cc_toolchain = cc_toolchain, 162*7594170eSAndroid Build Coastguard Worker srcs = srcs_c, 163*7594170eSAndroid Build Coastguard Worker includes = get_includes_paths(ctx, ctx.attr.local_includes) + get_includes_paths(ctx, ctx.attr.absolute_includes, package_relative = False), 164*7594170eSAndroid Build Coastguard Worker public_hdrs = ctx.files.hdrs, 165*7594170eSAndroid Build Coastguard Worker private_hdrs = private_hdrs, 166*7594170eSAndroid Build Coastguard Worker user_compile_flags = ctx.attr.copts, 167*7594170eSAndroid Build Coastguard Worker compilation_contexts = compilation_contexts, 168*7594170eSAndroid Build Coastguard Worker ) 169*7594170eSAndroid Build Coastguard Worker 170*7594170eSAndroid Build Coastguard Worker (compilation_context, compilation_outputs_as) = cc_common.compile( 171*7594170eSAndroid Build Coastguard Worker name = ctx.label.name, 172*7594170eSAndroid Build Coastguard Worker actions = ctx.actions, 173*7594170eSAndroid Build Coastguard Worker feature_configuration = feature_configuration, 174*7594170eSAndroid Build Coastguard Worker cc_toolchain = cc_toolchain, 175*7594170eSAndroid Build Coastguard Worker srcs = srcs_as, 176*7594170eSAndroid Build Coastguard Worker includes = get_includes_paths(ctx, ctx.attr.local_includes) + get_includes_paths(ctx, ctx.attr.absolute_includes, package_relative = False), 177*7594170eSAndroid Build Coastguard Worker public_hdrs = ctx.files.hdrs, 178*7594170eSAndroid Build Coastguard Worker private_hdrs = private_hdrs, 179*7594170eSAndroid Build Coastguard Worker user_compile_flags = ctx.attr.copts + asflags, 180*7594170eSAndroid Build Coastguard Worker compilation_contexts = compilation_contexts, 181*7594170eSAndroid Build Coastguard Worker ) 182*7594170eSAndroid Build Coastguard Worker 183*7594170eSAndroid Build Coastguard Worker # do not propagate includes 184*7594170eSAndroid Build Coastguard Worker compilation_context = cc_common.create_compilation_context( 185*7594170eSAndroid Build Coastguard Worker headers = compilation_context.headers, 186*7594170eSAndroid Build Coastguard Worker defines = compilation_context.defines, 187*7594170eSAndroid Build Coastguard Worker local_defines = compilation_context.local_defines, 188*7594170eSAndroid Build Coastguard Worker ) 189*7594170eSAndroid Build Coastguard Worker 190*7594170eSAndroid Build Coastguard Worker objects_to_link = cc_common.merge_compilation_outputs(compilation_outputs = deps_objects + [compilation_outputs_c, compilation_outputs_as]) 191*7594170eSAndroid Build Coastguard Worker 192*7594170eSAndroid Build Coastguard Worker user_link_flags = [] + ctx.attr.linkopts 193*7594170eSAndroid Build Coastguard Worker user_link_flags.extend(_CC_OBJECT_LINKOPTS) 194*7594170eSAndroid Build Coastguard Worker additional_inputs = [] 195*7594170eSAndroid Build Coastguard Worker 196*7594170eSAndroid Build Coastguard Worker if ctx.attr.linker_script != None: 197*7594170eSAndroid Build Coastguard Worker linker_script = ctx.files.linker_script[0] 198*7594170eSAndroid Build Coastguard Worker user_link_flags.append("-Wl,-T," + linker_script.path) 199*7594170eSAndroid Build Coastguard Worker additional_inputs.append(linker_script) 200*7594170eSAndroid Build Coastguard Worker 201*7594170eSAndroid Build Coastguard Worker # partially link if there are multiple object files 202*7594170eSAndroid Build Coastguard Worker if len(objects_to_link.objects) + len(objects_to_link.pic_objects) > 1: 203*7594170eSAndroid Build Coastguard Worker linking_output = cc_common.link( 204*7594170eSAndroid Build Coastguard Worker name = ctx.label.name + ".addrsig.o", 205*7594170eSAndroid Build Coastguard Worker actions = ctx.actions, 206*7594170eSAndroid Build Coastguard Worker feature_configuration = feature_configuration, 207*7594170eSAndroid Build Coastguard Worker cc_toolchain = cc_toolchain, 208*7594170eSAndroid Build Coastguard Worker user_link_flags = user_link_flags, 209*7594170eSAndroid Build Coastguard Worker compilation_outputs = objects_to_link, 210*7594170eSAndroid Build Coastguard Worker additional_inputs = additional_inputs, 211*7594170eSAndroid Build Coastguard Worker ) 212*7594170eSAndroid Build Coastguard Worker 213*7594170eSAndroid Build Coastguard Worker noaddrsig_output = _objcopy_noaddrsig(ctx, ctx.label.name + ".o", linking_output, cc_toolchain) 214*7594170eSAndroid Build Coastguard Worker 215*7594170eSAndroid Build Coastguard Worker files = depset([noaddrsig_output]) 216*7594170eSAndroid Build Coastguard Worker else: 217*7594170eSAndroid Build Coastguard Worker files = depset(objects_to_link.objects + objects_to_link.pic_objects) 218*7594170eSAndroid Build Coastguard Worker 219*7594170eSAndroid Build Coastguard Worker return [ 220*7594170eSAndroid Build Coastguard Worker DefaultInfo(files = files), 221*7594170eSAndroid Build Coastguard Worker CcInfo(compilation_context = compilation_context), 222*7594170eSAndroid Build Coastguard Worker CcObjectInfo(objects = objects_to_link), 223*7594170eSAndroid Build Coastguard Worker ] 224*7594170eSAndroid Build Coastguard Worker 225*7594170eSAndroid Build Coastguard Worker_cc_object = rule( 226*7594170eSAndroid Build Coastguard Worker implementation = _cc_object_impl, 227*7594170eSAndroid Build Coastguard Worker cfg = drop_sanitizer_transition, 228*7594170eSAndroid Build Coastguard Worker attrs = { 229*7594170eSAndroid Build Coastguard Worker "srcs": attr.label_list(allow_files = constants.all_dot_exts), 230*7594170eSAndroid Build Coastguard Worker "srcs_as": attr.label_list(allow_files = constants.all_dot_exts), 231*7594170eSAndroid Build Coastguard Worker "hdrs": attr.label_list(allow_files = constants.hdr_dot_exts), 232*7594170eSAndroid Build Coastguard Worker "absolute_includes": attr.string_list(), 233*7594170eSAndroid Build Coastguard Worker "local_includes": attr.string_list(), 234*7594170eSAndroid Build Coastguard Worker "copts": attr.string_list(), 235*7594170eSAndroid Build Coastguard Worker "asflags": attr.string_list(), 236*7594170eSAndroid Build Coastguard Worker "linkopts": attr.string_list(), 237*7594170eSAndroid Build Coastguard Worker "objs": attr.label_list( 238*7594170eSAndroid Build Coastguard Worker providers = [CcInfo, CcObjectInfo], 239*7594170eSAndroid Build Coastguard Worker ), 240*7594170eSAndroid Build Coastguard Worker "includes_deps": attr.label_list(providers = [CcInfo]), 241*7594170eSAndroid Build Coastguard Worker "linker_script": attr.label(allow_single_file = True), 242*7594170eSAndroid Build Coastguard Worker "sdk_version": attr.string(), 243*7594170eSAndroid Build Coastguard Worker "min_sdk_version": attr.string(), 244*7594170eSAndroid Build Coastguard Worker "crt": attr.bool(default = False), 245*7594170eSAndroid Build Coastguard Worker "package_name": attr.string( 246*7594170eSAndroid Build Coastguard Worker mandatory = True, 247*7594170eSAndroid Build Coastguard Worker doc = "Just the path to the target package. Used by transitions.", 248*7594170eSAndroid Build Coastguard Worker ), 249*7594170eSAndroid Build Coastguard Worker "_android_product_variables": attr.label( 250*7594170eSAndroid Build Coastguard Worker default = Label("//build/bazel/product_config:product_variables_for_attributes"), 251*7594170eSAndroid Build Coastguard Worker providers = [platform_common.TemplateVariableInfo], 252*7594170eSAndroid Build Coastguard Worker ), 253*7594170eSAndroid Build Coastguard Worker "_apex_min_sdk_version": attr.label( 254*7594170eSAndroid Build Coastguard Worker default = "//build/bazel/rules/apex:min_sdk_version", 255*7594170eSAndroid Build Coastguard Worker ), 256*7594170eSAndroid Build Coastguard Worker "_allowlist_function_transition": attr.label( 257*7594170eSAndroid Build Coastguard Worker default = "@bazel_tools//tools/allowlists/function_transition_allowlist", 258*7594170eSAndroid Build Coastguard Worker ), 259*7594170eSAndroid Build Coastguard Worker }, 260*7594170eSAndroid Build Coastguard Worker toolchains = ["//prebuilts/clang/host/linux-x86:nocrt_toolchain"], 261*7594170eSAndroid Build Coastguard Worker fragments = ["cpp"], 262*7594170eSAndroid Build Coastguard Worker) 263*7594170eSAndroid Build Coastguard Worker 264*7594170eSAndroid Build Coastguard Workerdef cc_object( 265*7594170eSAndroid Build Coastguard Worker name, 266*7594170eSAndroid Build Coastguard Worker copts = [], 267*7594170eSAndroid Build Coastguard Worker hdrs = [], 268*7594170eSAndroid Build Coastguard Worker asflags = [], 269*7594170eSAndroid Build Coastguard Worker linkopts = [], 270*7594170eSAndroid Build Coastguard Worker srcs = [], 271*7594170eSAndroid Build Coastguard Worker srcs_as = [], 272*7594170eSAndroid Build Coastguard Worker objs = [], 273*7594170eSAndroid Build Coastguard Worker deps = [], 274*7594170eSAndroid Build Coastguard Worker native_bridge_supported = False, # TODO: not supported yet. @unused 275*7594170eSAndroid Build Coastguard Worker stl = "", 276*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = None, 277*7594170eSAndroid Build Coastguard Worker sdk_version = "", 278*7594170eSAndroid Build Coastguard Worker min_sdk_version = "", 279*7594170eSAndroid Build Coastguard Worker **kwargs): 280*7594170eSAndroid Build Coastguard Worker "Build macro to correspond with the cc_object Soong module." 281*7594170eSAndroid Build Coastguard Worker 282*7594170eSAndroid Build Coastguard Worker if system_dynamic_deps == None: 283*7594170eSAndroid Build Coastguard Worker system_dynamic_deps = system_dynamic_deps_defaults 284*7594170eSAndroid Build Coastguard Worker 285*7594170eSAndroid Build Coastguard Worker stl_info = stl_info_from_attr(stl, False) 286*7594170eSAndroid Build Coastguard Worker linkopts = linkopts + stl_info.linkopts 287*7594170eSAndroid Build Coastguard Worker copts = copts + stl_info.cppflags 288*7594170eSAndroid Build Coastguard Worker 289*7594170eSAndroid Build Coastguard Worker _cc_object( 290*7594170eSAndroid Build Coastguard Worker name = name, 291*7594170eSAndroid Build Coastguard Worker hdrs = hdrs, 292*7594170eSAndroid Build Coastguard Worker asflags = asflags, 293*7594170eSAndroid Build Coastguard Worker copts = _CC_OBJECT_COPTS + copts, 294*7594170eSAndroid Build Coastguard Worker linkopts = linkopts, 295*7594170eSAndroid Build Coastguard Worker # TODO(b/261996812): we shouldn't need to have both srcs and srcs_as as inputs here 296*7594170eSAndroid Build Coastguard Worker srcs = srcs, 297*7594170eSAndroid Build Coastguard Worker srcs_as = srcs_as, 298*7594170eSAndroid Build Coastguard Worker objs = objs, 299*7594170eSAndroid Build Coastguard Worker includes_deps = stl_info.static_deps + stl_info.shared_deps + system_dynamic_deps + deps, 300*7594170eSAndroid Build Coastguard Worker sdk_version = sdk_version, 301*7594170eSAndroid Build Coastguard Worker min_sdk_version = min_sdk_version, 302*7594170eSAndroid Build Coastguard Worker package_name = native.package_name(), 303*7594170eSAndroid Build Coastguard Worker **kwargs 304*7594170eSAndroid Build Coastguard Worker ) 305