Jingwen Chen | 30f5aaa | 2020-11-19 05:38:02 -0500 | [diff] [blame] | 1 | // Copyright 2020 Google Inc. All rights reserved. |
| 2 | // |
| 3 | // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | // you may not use this file except in compliance with the License. |
| 5 | // You may obtain a copy of the License at |
| 6 | // |
| 7 | // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | // |
| 9 | // Unless required by applicable law or agreed to in writing, software |
| 10 | // distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | // See the License for the specific language governing permissions and |
| 13 | // limitations under the License. |
| 14 | |
| 15 | package bazel |
| 16 | |
| 17 | type bazelModuleProperties struct { |
| 18 | // The label of the Bazel target replacing this Soong module. |
| 19 | Label string |
Jingwen Chen | 77e8b7b | 2021-02-05 03:03:24 -0500 | [diff] [blame] | 20 | |
| 21 | // If true, bp2build will generate the converted Bazel target for this module. |
| 22 | Bp2build_available bool |
Jingwen Chen | 30f5aaa | 2020-11-19 05:38:02 -0500 | [diff] [blame] | 23 | } |
| 24 | |
Jingwen Chen | 7385067 | 2020-12-14 08:25:34 -0500 | [diff] [blame] | 25 | // Properties contains common module properties for Bazel migration purposes. |
Jingwen Chen | 30f5aaa | 2020-11-19 05:38:02 -0500 | [diff] [blame] | 26 | type Properties struct { |
| 27 | // In USE_BAZEL_ANALYSIS=1 mode, this represents the Bazel target replacing |
| 28 | // this Soong module. |
| 29 | Bazel_module bazelModuleProperties |
| 30 | } |
Jingwen Chen | 7385067 | 2020-12-14 08:25:34 -0500 | [diff] [blame] | 31 | |
| 32 | // BazelTargetModuleProperties contain properties and metadata used for |
| 33 | // Blueprint to BUILD file conversion. |
| 34 | type BazelTargetModuleProperties struct { |
| 35 | // The Bazel rule class for this target. |
Liz Kammer | fc46bc1 | 2021-02-19 11:06:17 -0500 | [diff] [blame^] | 36 | Rule_class string `blueprint:"mutated"` |
Jingwen Chen | 40067de | 2021-01-26 21:58:43 -0500 | [diff] [blame] | 37 | |
| 38 | // The target label for the bzl file containing the definition of the rule class. |
Liz Kammer | fc46bc1 | 2021-02-19 11:06:17 -0500 | [diff] [blame^] | 39 | Bzl_load_location string `blueprint:"mutated"` |
Jingwen Chen | 7385067 | 2020-12-14 08:25:34 -0500 | [diff] [blame] | 40 | } |
Liz Kammer | 356f7d4 | 2021-01-26 09:18:53 -0500 | [diff] [blame] | 41 | |
Jingwen Chen | fb4692a | 2021-02-07 10:05:16 -0500 | [diff] [blame] | 42 | const BazelTargetModuleNamePrefix = "__bp2build__" |
| 43 | |
Liz Kammer | 356f7d4 | 2021-01-26 09:18:53 -0500 | [diff] [blame] | 44 | // Label is used to represent a Bazel compatible Label. Also stores the original bp text to support |
| 45 | // string replacement. |
| 46 | type Label struct { |
| 47 | Bp_text string |
| 48 | Label string |
| 49 | } |
| 50 | |
| 51 | // LabelList is used to represent a list of Bazel labels. |
| 52 | type LabelList struct { |
| 53 | Includes []Label |
| 54 | Excludes []Label |
| 55 | } |
| 56 | |
| 57 | // Append appends the fields of other labelList to the corresponding fields of ll. |
| 58 | func (ll *LabelList) Append(other LabelList) { |
| 59 | if len(ll.Includes) > 0 || len(other.Includes) > 0 { |
| 60 | ll.Includes = append(ll.Includes, other.Includes...) |
| 61 | } |
| 62 | if len(ll.Excludes) > 0 || len(other.Excludes) > 0 { |
| 63 | ll.Excludes = append(other.Excludes, other.Excludes...) |
| 64 | } |
| 65 | } |