| # 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. |
| """Configure Pigweed's backend implementations.""" |
| |
| def _pigweed_config_impl(repository_ctx): |
| if repository_ctx.attr.build_file_content and \ |
| repository_ctx.attr.build_file: |
| fail("Attributes 'build_file_content' and 'build_file' cannot both be \ |
| defined at the same time.") |
| if not repository_ctx.attr.build_file_content and \ |
| not repository_ctx.attr.build_file: |
| fail("Either 'build_file_content' or 'build_file' must be defined.") |
| |
| if repository_ctx.name != "pigweed_config": |
| fail("This repository should be name 'pigweed_config'") |
| |
| if repository_ctx.attr.build_file_content: |
| repository_ctx.file("BUILD", repository_ctx.attr.build_file_content) |
| |
| if repository_ctx.attr.build_file: |
| repository_ctx.template("BUILD", repository_ctx.attr.build_file, {}) |
| |
| pigweed_config = repository_rule( |
| _pigweed_config_impl, |
| attrs = { |
| "build_file_content": attr.string( |
| doc = "The build file content to configure Pigweed.", |
| mandatory = False, |
| default = "", |
| ), |
| "build_file": attr.label( |
| doc = "The label for the Pigweed config build file to use.", |
| mandatory = False, |
| default = "@pigweed//targets/host:host_config.BUILD", |
| ), |
| }, |
| doc = """ |
| Configure Pigweeds backend implementations. |
| |
| Example: |
| # WORKSPACE |
| pigweed_config( |
| # This must use the exact name specified here otherwise this |
| # remote repository will not function as expected. |
| name = "pigweed_config", |
| build_file = "//path/to/config.BUILD", |
| ) |
| """, |
| ) |