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
68 lines
2.1 KiB
Go
68 lines
2.1 KiB
Go
// 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) {
|
|
}
|