1*7594170eSAndroid Build Coastguard Worker# Copyright (C) 2022 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("//build/bazel/rules/cc:cc_aidl_code_gen.bzl", "cc_aidl_code_gen") 16*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/cc:cc_library_static.bzl", "cc_library_static") 17*7594170eSAndroid Build Coastguard Workerload("//build/bazel/rules/cc:cc_library_shared.bzl", "cc_library_shared") 18*7594170eSAndroid Build Coastguard Worker 19*7594170eSAndroid Build Coastguard Workerdef cc_aidl_library( 20*7594170eSAndroid Build Coastguard Worker name, 21*7594170eSAndroid Build Coastguard Worker deps = [], 22*7594170eSAndroid Build Coastguard Worker lang = "cpp", 23*7594170eSAndroid Build Coastguard Worker make_shared = False, 24*7594170eSAndroid Build Coastguard Worker **kwargs): 25*7594170eSAndroid Build Coastguard Worker """ 26*7594170eSAndroid Build Coastguard Worker Generate AIDL stub code for C++ and wrap it in a cc_library_static target 27*7594170eSAndroid Build Coastguard Worker 28*7594170eSAndroid Build Coastguard Worker Args: 29*7594170eSAndroid Build Coastguard Worker name (str): name of the cc_library_static target 30*7594170eSAndroid Build Coastguard Worker deps (list[AidlGenInfo]): list of all aidl_libraries that this cc_aidl_library depends on 31*7594170eSAndroid Build Coastguard Worker make_shared (bool): if true, `name` will refer to a cc_library_shared, 32*7594170eSAndroid Build Coastguard Worker and an additional cc_library_static will be created 33*7594170eSAndroid Build Coastguard Worker if false, `name` will refer to a cc_library_static 34*7594170eSAndroid Build Coastguard Worker **kwargs: extra arguments that will be passesd to cc_library_{static,shared}. 35*7594170eSAndroid Build Coastguard Worker """ 36*7594170eSAndroid Build Coastguard Worker 37*7594170eSAndroid Build Coastguard Worker if lang not in ["cpp", "ndk"]: 38*7594170eSAndroid Build Coastguard Worker fail("lang {} is unsupported. Allowed lang: ndk, cpp.".format(lang)) 39*7594170eSAndroid Build Coastguard Worker 40*7594170eSAndroid Build Coastguard Worker aidl_code_gen = name + "_aidl_code_gen" 41*7594170eSAndroid Build Coastguard Worker cc_aidl_code_gen( 42*7594170eSAndroid Build Coastguard Worker name = aidl_code_gen, 43*7594170eSAndroid Build Coastguard Worker deps = deps, 44*7594170eSAndroid Build Coastguard Worker lang = lang, 45*7594170eSAndroid Build Coastguard Worker min_sdk_version = kwargs.get("min_sdk_version", None), 46*7594170eSAndroid Build Coastguard Worker tags = kwargs.get("tags", []) + ["manual"], 47*7594170eSAndroid Build Coastguard Worker ) 48*7594170eSAndroid Build Coastguard Worker 49*7594170eSAndroid Build Coastguard Worker arguments_with_kwargs = dict( 50*7594170eSAndroid Build Coastguard Worker kwargs, 51*7594170eSAndroid Build Coastguard Worker srcs = [":" + aidl_code_gen], 52*7594170eSAndroid Build Coastguard Worker deps = [aidl_code_gen], 53*7594170eSAndroid Build Coastguard Worker ) 54*7594170eSAndroid Build Coastguard Worker 55*7594170eSAndroid Build Coastguard Worker static_name = name 56*7594170eSAndroid Build Coastguard Worker if make_shared: 57*7594170eSAndroid Build Coastguard Worker cc_library_shared( 58*7594170eSAndroid Build Coastguard Worker name = name, 59*7594170eSAndroid Build Coastguard Worker **arguments_with_kwargs 60*7594170eSAndroid Build Coastguard Worker ) 61*7594170eSAndroid Build Coastguard Worker static_name = name + "_bp2build_cc_library_static" 62*7594170eSAndroid Build Coastguard Worker 63*7594170eSAndroid Build Coastguard Worker cc_library_static( 64*7594170eSAndroid Build Coastguard Worker name = static_name, 65*7594170eSAndroid Build Coastguard Worker **arguments_with_kwargs 66*7594170eSAndroid Build Coastguard Worker ) 67