blob: bf6043a5442a2892e47381bb2ab4c4e37cb072c6 [file] [log] [blame]
atrostdb25ac02019-08-05 12:26:07 +01001// 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
15package java
16
17import (
18 "android/soong/android"
19)
20
21func init() {
22 android.RegisterModuleType("platform_compat_config", platformCompatConfigFactory)
23}
24
25type platformCompatConfigProperties struct {
atrost87901b02019-08-29 12:48:43 +010026 Src *string `android:"path"`
atrostdb25ac02019-08-05 12:26:07 +010027}
28
29type platformCompatConfig struct {
30 android.ModuleBase
31
32 properties platformCompatConfigProperties
Colin Cross70dda7e2019-10-01 22:05:35 -070033 installDirPath android.InstallPath
atrostdb25ac02019-08-05 12:26:07 +010034 configFile android.OutputPath
35}
36
37func (p *platformCompatConfig) GenerateAndroidBuildActions(ctx android.ModuleContext) {
38 rule := android.NewRuleBuilder()
39
atrost87901b02019-08-29 12:48:43 +010040 configFileName := p.Name() + ".xml"
atrostdb25ac02019-08-05 12:26:07 +010041 p.configFile = android.PathForModuleOut(ctx, configFileName).OutputPath
42 path := android.PathForModuleSrc(ctx, String(p.properties.Src))
43
atrostdb25ac02019-08-05 12:26:07 +010044 rule.Command().
Mathew Inwood2471c082019-12-16 12:55:26 +000045 BuiltTool(ctx, "process-compat-config").
atrostdb25ac02019-08-05 12:26:07 +010046 Input(path).
atrostdb25ac02019-08-05 12:26:07 +010047 Text(`>`).
Mathew Inwood2471c082019-12-16 12:55:26 +000048 Output(p.configFile)
atrostdb25ac02019-08-05 12:26:07 +010049
atrost87901b02019-08-29 12:48:43 +010050 p.installDirPath = android.PathForModuleInstall(ctx, "etc", "compatconfig")
atrostdb25ac02019-08-05 12:26:07 +010051 rule.Build(pctx, ctx, configFileName, "Extract compat/compat_config.xml and install it")
52
53}
54
Jiyong Park0b0e1b92019-12-03 13:24:29 +090055func (p *platformCompatConfig) AndroidMkEntries() []android.AndroidMkEntries {
56 return []android.AndroidMkEntries{android.AndroidMkEntries{
atrostdb25ac02019-08-05 12:26:07 +010057 Class: "ETC",
58 OutputFile: android.OptionalPathForPath(p.configFile),
59 Include: "$(BUILD_PREBUILT)",
Jaewoong Junge0dc8df2019-08-27 17:33:16 -070060 ExtraEntries: []android.AndroidMkExtraEntriesFunc{
61 func(entries *android.AndroidMkEntries) {
Colin Crossff6c33d2019-10-02 16:01:35 -070062 entries.SetString("LOCAL_MODULE_PATH", p.installDirPath.ToMakePath().String())
Jaewoong Junge0dc8df2019-08-27 17:33:16 -070063 entries.SetString("LOCAL_INSTALLED_MODULE_STEM", p.configFile.Base())
64 },
atrostdb25ac02019-08-05 12:26:07 +010065 },
Jiyong Park0b0e1b92019-12-03 13:24:29 +090066 }}
atrostdb25ac02019-08-05 12:26:07 +010067}
68
69func platformCompatConfigFactory() android.Module {
70 module := &platformCompatConfig{}
71 module.AddProperties(&module.properties)
72 android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibFirst)
73 return module
74}