xref: /aosp_15_r20/prebuilts/build-tools/prebuilt_tool.bzl (revision cda5da8d549138a6648c5ee6d7a49cf8f4a657be)
1*cda5da8dSAndroid Build Coastguard Worker# Copyright (C) 2024 The Android Open Source Project
2*cda5da8dSAndroid Build Coastguard Worker#
3*cda5da8dSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
4*cda5da8dSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
5*cda5da8dSAndroid Build Coastguard Worker# You may obtain a copy of the License at
6*cda5da8dSAndroid Build Coastguard Worker#
7*cda5da8dSAndroid Build Coastguard Worker#       http://www.apache.org/licenses/LICENSE-2.0
8*cda5da8dSAndroid Build Coastguard Worker#
9*cda5da8dSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*cda5da8dSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
11*cda5da8dSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cda5da8dSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
13*cda5da8dSAndroid Build Coastguard Worker# limitations under the License.
14*cda5da8dSAndroid Build Coastguard Worker
15*cda5da8dSAndroid Build Coastguard Worker"""Declares a tool that fits multiple platforms/config settings."""
16*cda5da8dSAndroid Build Coastguard Worker
17*cda5da8dSAndroid Build Coastguard Workerload("@bazel_skylib//rules:native_binary.bzl", "native_binary")
18*cda5da8dSAndroid Build Coastguard Worker
19*cda5da8dSAndroid Build Coastguard Workervisibility("private")
20*cda5da8dSAndroid Build Coastguard Worker
21*cda5da8dSAndroid Build Coastguard Workerdef prebuilt_tool(
22*cda5da8dSAndroid Build Coastguard Worker        name,
23*cda5da8dSAndroid Build Coastguard Worker        actual = None,
24*cda5da8dSAndroid Build Coastguard Worker        **kwargs):
25*cda5da8dSAndroid Build Coastguard Worker    """Declares a tool that fits multiple platforms/config settings.
26*cda5da8dSAndroid Build Coastguard Worker
27*cda5da8dSAndroid Build Coastguard Worker    Args:
28*cda5da8dSAndroid Build Coastguard Worker        name: name of the target
29*cda5da8dSAndroid Build Coastguard Worker        actual: Non-configurable. Name of the binary below `<platform>/bin`. Defaults to name.
30*cda5da8dSAndroid Build Coastguard Worker        **kwargs: additional arguments to the internal target.
31*cda5da8dSAndroid Build Coastguard Worker    """
32*cda5da8dSAndroid Build Coastguard Worker
33*cda5da8dSAndroid Build Coastguard Worker    if actual == None:
34*cda5da8dSAndroid Build Coastguard Worker        actual = name
35*cda5da8dSAndroid Build Coastguard Worker
36*cda5da8dSAndroid Build Coastguard Worker    native_binary(
37*cda5da8dSAndroid Build Coastguard Worker        name = name,
38*cda5da8dSAndroid Build Coastguard Worker        src = select({
39*cda5da8dSAndroid Build Coastguard Worker            Label("//build/kernel/kleaf/platforms/libc:glibc"): "linux-x86/bin/" + actual,
40*cda5da8dSAndroid Build Coastguard Worker            Label("//build/kernel/kleaf/platforms/libc:musl"): "linux_musl-x86/bin/" + actual,
41*cda5da8dSAndroid Build Coastguard Worker        }),
42*cda5da8dSAndroid Build Coastguard Worker        out = name,
43*cda5da8dSAndroid Build Coastguard Worker        data = [Label(":libs")],
44*cda5da8dSAndroid Build Coastguard Worker        target_compatible_with = select({
45*cda5da8dSAndroid Build Coastguard Worker            Label("//build/kernel/kleaf/platforms/libc:glibc"): [],
46*cda5da8dSAndroid Build Coastguard Worker            Label("//build/kernel/kleaf/platforms/libc:musl"): [],
47*cda5da8dSAndroid Build Coastguard Worker            "//conditions:default": ["@platforms//:incompatible"],
48*cda5da8dSAndroid Build Coastguard Worker        }),
49*cda5da8dSAndroid Build Coastguard Worker        **kwargs
50*cda5da8dSAndroid Build Coastguard Worker    )
51