diff options
author | 2023-10-24 18:55:12 +0000 | |
---|---|---|
committer | 2023-11-03 22:33:02 +0000 | |
commit | 0d53dd289e4668e827c4b5f5925c2889c3099d02 (patch) | |
tree | 9122b3ffad385b7bf880bfdf26bd0bd08343a395 /android/apex_contributions.go | |
parent | 74639be8a789d9a3e9683bc961686b5cdec261f7 (diff) |
Create an apex_contributions module type
This module type does not any build actions, but provides metadata about
the contributions of the mainline module to other mainline modules/
platform. One immediate use case for this metadata is source vs
prebuilts selection
Each mainline module can have more than 1 metadata modules. Static build
flags will be used to select the right one in trunk.bzl, next.bzl, ...
Bug: 308174923
Test: go build ./android
Change-Id: I5ead0c38fe64b78de08db1736d97a8ab7374d6d9
Diffstat (limited to 'android/apex_contributions.go')
-rw-r--r-- | android/apex_contributions.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/android/apex_contributions.go b/android/apex_contributions.go new file mode 100644 index 000000000..a28ac31bf --- /dev/null +++ b/android/apex_contributions.go @@ -0,0 +1,67 @@ +// Copyright 2023 Google Inc. 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. + +package android + +import ( + "github.com/google/blueprint/proptools" +) + +func init() { + RegisterApexContributionsBuildComponents(InitRegistrationContext) +} + +func RegisterApexContributionsBuildComponents(ctx RegistrationContext) { + ctx.RegisterModuleType("apex_contributions", apexContributionsFactory) +} + +type apexContributions struct { + ModuleBase + properties contributionProps +} + +type contributionProps struct { + // Name of the mainline module + Api_domain *string + // A list of module names that should be used when this contribution + // is selected via product_config + // The name should be explicit (foo or prebuilt_foo) + Contents []string +} + +func (m *apexContributions) ApiDomain() string { + return proptools.String(m.properties.Api_domain) +} + +func (m *apexContributions) Contents() []string { + return m.properties.Contents +} + +// apex_contributions contains a list of module names (source or +// prebuilt) belonging to the mainline module +// An apex can have multiple apex_contributions modules +// with different combinations of source or prebuilts, but only one can be +// selected via product_config. +func apexContributionsFactory() Module { + module := &apexContributions{} + module.AddProperties(&module.properties) + InitAndroidModule(module) + return module +} + +// This module type does not have any build actions. +// It provides metadata that is used in post-deps mutator phase for source vs +// prebuilts selection. +func (m *apexContributions) GenerateAndroidBuildActions(ctx ModuleContext) { +} |