| # 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. | |
| """A collection of compilation information gathered for a particular rule. | |
| This is used to generate the compilation command line and to the supply information that goes | |
| into the compilation info provider. | |
| """ | |
| def _objc_compilation_context_info_init( | |
| defines = [], | |
| public_hdrs = [], | |
| public_textual_hdrs = [], | |
| private_hdrs = [], | |
| includes = [], | |
| system_includes = [], | |
| quote_includes = [], | |
| direct_cc_compilation_contexts = [], | |
| cc_compilation_contexts = [], | |
| implementation_cc_compilation_contexts = [], | |
| providers = []): | |
| strict_dependency_includes = [ | |
| path | |
| for objc_provider in providers | |
| for path in objc_provider.strict_include.to_list() | |
| ] | |
| # buildifier: disable=unsorted-dict-items | |
| return { | |
| "defines": defines, | |
| "public_hdrs": public_hdrs, | |
| "public_textual_hdrs": public_textual_hdrs, | |
| "private_hdrs": private_hdrs, | |
| "includes": includes, | |
| "system_includes": system_includes, | |
| "quote_includes": quote_includes, | |
| "strict_dependency_includes": strict_dependency_includes, | |
| "direct_cc_compilation_contexts": direct_cc_compilation_contexts, | |
| "cc_compilation_contexts": cc_compilation_contexts, | |
| "implementation_cc_compilation_contexts": implementation_cc_compilation_contexts, | |
| } | |
| ObjcCompilationContextInfo, _new_objccompilationcontextinfo = provider( | |
| "Provider about ObjC compilation information gathered for a particular rule.", | |
| # buildifier: disable=unsorted-dict-items | |
| fields = { | |
| "defines": "", | |
| "public_hdrs": """The list of public headers. We expect this to contain both the headers | |
| from the src attribute, as well as any "additional" headers required for compilation.""", | |
| "public_textual_hdrs": "", | |
| "private_hdrs": "", | |
| "includes": "", | |
| "system_includes": "", | |
| "quote_includes": "", | |
| "strict_dependency_includes": "", | |
| "direct_cc_compilation_contexts": "", | |
| "cc_compilation_contexts": "", | |
| "implementation_cc_compilation_contexts": "", | |
| }, | |
| init = _objc_compilation_context_info_init, | |
| ) |