diff options
Diffstat (limited to 'python/private/current_py_cc_headers.bzl')
-rw-r--r-- | python/private/current_py_cc_headers.bzl | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/python/private/current_py_cc_headers.bzl b/python/private/current_py_cc_headers.bzl new file mode 100644 index 0000000..be7f8f8 --- /dev/null +++ b/python/private/current_py_cc_headers.bzl @@ -0,0 +1,41 @@ +# Copyright 2023 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. + +"""Implementation of current_py_cc_headers rule.""" + +def _current_py_cc_headers_impl(ctx): + py_cc_toolchain = ctx.toolchains["//python/cc:toolchain_type"].py_cc_toolchain + return py_cc_toolchain.headers.providers_map.values() + +current_py_cc_headers = rule( + implementation = _current_py_cc_headers_impl, + toolchains = ["//python/cc:toolchain_type"], + provides = [CcInfo], + doc = """\ +Provides the currently active Python toolchain's C headers. + +This is a wrapper around the underlying `cc_library()` for the +C headers for the consuming target's currently active Python toolchain. + +To use, simply depend on this target where you would have wanted the +toolchain's underlying `:python_headers` target: + +```starlark +cc_library( + name = "foo", + deps = ["@rules_python//python/cc:current_py_cc_headers"] +) +``` +""", +) |