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