12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // Copyright 2022 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 multitree
- import (
- "android/soong/android"
- "github.com/google/blueprint/proptools"
- )
- type moduleExportProperty struct {
- // True if the module is exported to the other components in a multi-tree.
- // Any components in the multi-tree can import this module to use.
- Export *bool
- }
- type ExportableModuleBase struct {
- properties moduleExportProperty
- }
- type Exportable interface {
- // Properties for the exporable module.
- exportableModuleProps() *moduleExportProperty
- // Check if this module can be exported.
- // If this returns false, the module will not be exported regardless of the 'export' value.
- Exportable() bool
- // Returns 'true' if this module has 'export: true'
- // This module will not be exported if it returns 'false' to 'Exportable()' interface even if
- // it has 'export: true'.
- IsExported() bool
- // Map from tags to outputs.
- // Each module can tag their outputs for convenience.
- TaggedOutputs() map[string]android.Paths
- }
- type ExportableModule interface {
- android.Module
- android.OutputFileProducer
- Exportable
- }
- func InitExportableModule(module ExportableModule) {
- module.AddProperties(module.exportableModuleProps())
- }
- func (m *ExportableModuleBase) exportableModuleProps() *moduleExportProperty {
- return &m.properties
- }
- func (m *ExportableModuleBase) IsExported() bool {
- return proptools.Bool(m.properties.Export)
- }
|