# Copyright 2024 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. """Macro to extract tools from a directory.""" load("@bazel_skylib//rules/directory:glob.bzl", "directory_glob") load(":tool.bzl", "cc_tool") def cc_directory_tool(name, directory, executable, data = [], exclude = [], allow_empty = False, **kwargs): """A tool extracted from a directory. Args: name: (str) The name of the generated target directory: (Label) The directory to extract from executable: (str) The relative path from the directory to the executable. data: (List[str]) A list of globs to runfiles for the executable, relative to the directory. exclude: (List[str]) A list of globs to exclude from data. allow_empty: (bool) If false, any glob that fails to match anything will result in a failure. **kwargs: Kwargs to be passed through to cc_tool. """ files_name = "_%s_files" % name directory_glob( name = files_name, directory = directory, srcs = [executable], data = data, exclude = exclude, allow_empty = allow_empty, visibility = ["//visibility:private"], ) cc_tool( name = name, src = files_name, **kwargs )