| Paul Duffin | e2453c7 | 2019-05-31 14:00:04 +0100 | [diff] [blame] | 1 | // Copyright 2019 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 android | 
|  | 16 |  | 
|  | 17 | import ( | 
| Paul Duffin | e2453c7 | 2019-05-31 14:00:04 +0100 | [diff] [blame] | 18 | "github.com/google/blueprint" | 
| Paul Duffin | cdfcec9 | 2020-05-01 11:57:12 +0100 | [diff] [blame] | 19 | "github.com/google/blueprint/proptools" | 
| Paul Duffin | e2453c7 | 2019-05-31 14:00:04 +0100 | [diff] [blame] | 20 | ) | 
|  | 21 |  | 
|  | 22 | func init() { | 
| Paul Duffin | c132742 | 2020-01-14 12:15:29 +0000 | [diff] [blame] | 23 | RegisterPackageBuildComponents(InitRegistrationContext) | 
|  | 24 | } | 
|  | 25 |  | 
| Paul Duffin | cfd3374 | 2021-02-27 11:59:02 +0000 | [diff] [blame] | 26 | var PrepareForTestWithPackageModule = FixtureRegisterWithContext(RegisterPackageBuildComponents) | 
|  | 27 |  | 
| Paul Duffin | cdfcec9 | 2020-05-01 11:57:12 +0100 | [diff] [blame] | 28 | // Register the package module type. | 
| Paul Duffin | c132742 | 2020-01-14 12:15:29 +0000 | [diff] [blame] | 29 | func RegisterPackageBuildComponents(ctx RegistrationContext) { | 
|  | 30 | ctx.RegisterModuleType("package", PackageFactory) | 
| Paul Duffin | e2453c7 | 2019-05-31 14:00:04 +0100 | [diff] [blame] | 31 | } | 
|  | 32 |  | 
|  | 33 | type packageProperties struct { | 
| Paul Duffin | e2453c7 | 2019-05-31 14:00:04 +0100 | [diff] [blame] | 34 | // Specifies the default visibility for all modules defined in this package. | 
|  | 35 | Default_visibility []string | 
| Bob Badour | 37af046 | 2021-01-07 03:34:31 +0000 | [diff] [blame] | 36 | // Specifies the default license terms for all modules defined in this package. | 
|  | 37 | Default_applicable_licenses []string | 
| Paul Duffin | e2453c7 | 2019-05-31 14:00:04 +0100 | [diff] [blame] | 38 | } | 
|  | 39 |  | 
|  | 40 | type packageModule struct { | 
|  | 41 | ModuleBase | 
|  | 42 |  | 
| Paul Duffin | cdfcec9 | 2020-05-01 11:57:12 +0100 | [diff] [blame] | 43 | properties packageProperties | 
| Paul Duffin | e2453c7 | 2019-05-31 14:00:04 +0100 | [diff] [blame] | 44 | } | 
|  | 45 |  | 
|  | 46 | func (p *packageModule) GenerateAndroidBuildActions(ModuleContext) { | 
|  | 47 | // Nothing to do. | 
|  | 48 | } | 
|  | 49 |  | 
|  | 50 | func (p *packageModule) GenerateBuildActions(ctx blueprint.ModuleContext) { | 
|  | 51 | // Nothing to do. | 
|  | 52 | } | 
|  | 53 |  | 
|  | 54 | func (p *packageModule) qualifiedModuleId(ctx BaseModuleContext) qualifiedModuleName { | 
|  | 55 | // Override to create a package id. | 
|  | 56 | return newPackageId(ctx.ModuleDir()) | 
|  | 57 | } | 
|  | 58 |  | 
| Paul Duffin | e2453c7 | 2019-05-31 14:00:04 +0100 | [diff] [blame] | 59 | func PackageFactory() Module { | 
|  | 60 | module := &packageModule{} | 
|  | 61 |  | 
| Colin Cross | 8ff1058 | 2023-12-07 13:10:56 -0800 | [diff] [blame] | 62 | module.AddProperties(&module.properties) | 
| Paul Duffin | 63c6e18 | 2019-07-24 14:24:38 +0100 | [diff] [blame] | 63 |  | 
| Paul Duffin | cdfcec9 | 2020-05-01 11:57:12 +0100 | [diff] [blame] | 64 | // The name is the relative path from build root to the directory containing this | 
|  | 65 | // module. Set that name at the earliest possible moment that information is available | 
|  | 66 | // which is in a LoadHook. | 
|  | 67 | AddLoadHook(module, func(ctx LoadHookContext) { | 
|  | 68 | module.nameProperties.Name = proptools.StringPtr("//" + ctx.ModuleDir()) | 
|  | 69 | }) | 
|  | 70 |  | 
| Paul Duffin | 63c6e18 | 2019-07-24 14:24:38 +0100 | [diff] [blame] | 71 | // The default_visibility property needs to be checked and parsed by the visibility module during | 
| Paul Duffin | 5ec73ec | 2020-05-01 17:52:01 +0100 | [diff] [blame] | 72 | // its checking and parsing phases so make it the primary visibility property. | 
|  | 73 | setPrimaryVisibilityProperty(module, "default_visibility", &module.properties.Default_visibility) | 
| Paul Duffin | 63c6e18 | 2019-07-24 14:24:38 +0100 | [diff] [blame] | 74 |  | 
| Bob Badour | 37af046 | 2021-01-07 03:34:31 +0000 | [diff] [blame] | 75 | // The default_applicable_licenses property needs to be checked and parsed by the licenses module during | 
|  | 76 | // its checking and parsing phases so make it the primary licenses property. | 
|  | 77 | setPrimaryLicensesProperty(module, "default_applicable_licenses", &module.properties.Default_applicable_licenses) | 
|  | 78 |  | 
| Paul Duffin | e2453c7 | 2019-05-31 14:00:04 +0100 | [diff] [blame] | 79 | return module | 
|  | 80 | } |