You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.8 KiB
78 lines
2.8 KiB
# Copyright 2021 The Pigweed Authors
|
|
#
|
|
# 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
|
|
#
|
|
# https://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.
|
|
|
|
def _toolchain_upstream_repository_impl(rctx):
|
|
"""Creates a remote repository with a set of toolchain components.
|
|
|
|
The bazel embedded toolchain expects two targets injected_headers
|
|
and polyfill. This is rule generates these targets so that
|
|
bazel-embedded can depend on them and so that the targets can depend
|
|
on pigweeds implementation of polyfill. This rule is only ever
|
|
intended to be instantiated with the name
|
|
"bazel_embedded_upstream_toolchain", and should only be used from
|
|
the "toolchain_upstream_deps" macro.
|
|
|
|
The bazel-embedded package expects to be able to access these
|
|
targets as @bazel_embedded_upstream_toolchain//:polyfill and
|
|
@bazel_embedded_upstream_toolchain//:injected_headers.
|
|
|
|
Args:
|
|
rctx: Repository context.
|
|
"""
|
|
rctx.file("BUILD", """
|
|
package(default_visibility = ["//visibility:public"])
|
|
load(
|
|
"@bazel_embedded//toolchains/tools/include_tools:defs.bzl",
|
|
"cc_injected_toolchain_header_library",
|
|
"cc_polyfill_toolchain_library",
|
|
)
|
|
|
|
cc_polyfill_toolchain_library(
|
|
name = "polyfill",
|
|
deps = ["@pigweed//pw_polyfill:toolchain_polyfill_overrides"],
|
|
)
|
|
|
|
cc_injected_toolchain_header_library(
|
|
name = "injected_headers",
|
|
deps = ["@pigweed//pw_polyfill:toolchain_injected_headers"],
|
|
)
|
|
""")
|
|
|
|
_toolchain_upstream_repository = repository_rule(
|
|
_toolchain_upstream_repository_impl,
|
|
doc = """
|
|
toolchain_upstream_repository creates a remote repository that can be
|
|
accessed by a toolchain repository to configure system includes.
|
|
|
|
It's recommended to use this rule through the 'toolchain_upstream_deps'
|
|
macro rather than using this rule directly.
|
|
""",
|
|
)
|
|
|
|
def toolchain_upstream_deps():
|
|
"""Implements the set of dependencies that bazel-embedded requires.
|
|
|
|
These targets are used to override the default toolchain
|
|
requirements in the remote bazel-embedded toolchain. The remote
|
|
toolchain expects to find two targets;
|
|
- "@bazel_embedded_upstream_toolchain//:polyfill" -> Additional
|
|
system headers for the toolchain
|
|
- "@bazel_embedded_upstream_toolchain//:injected_headers" ->
|
|
Headers that are injected into the toolchain via the -include
|
|
command line argument
|
|
"""
|
|
_toolchain_upstream_repository(
|
|
name = "bazel_embedded_upstream_toolchain",
|
|
)
|