blob: ed0b3ed7fb47da59185342c5c88e54b25dcb60fc [file] [log] [blame]
Yu Liueae7b362023-11-16 17:05:47 -08001// Copyright 2023 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 codegen
16
17import (
18 "android/soong/android"
19
20 "github.com/google/blueprint"
21)
22
23var (
24 pctx = android.NewPackageContext("android/soong/aconfig/codegen")
25
26 // For java_aconfig_library: Generate java library
27 javaRule = pctx.AndroidStaticRule("java_aconfig_library",
28 blueprint.RuleParams{
29 Command: `rm -rf ${out}.tmp` +
30 ` && mkdir -p ${out}.tmp` +
31 ` && ${aconfig} create-java-lib` +
32 ` --mode ${mode}` +
33 ` --cache ${in}` +
34 ` --out ${out}.tmp` +
Zhi Doub94c7792024-09-25 21:21:15 +000035 ` --allow-instrumentation ${debug}` +
Yu Liueae7b362023-11-16 17:05:47 -080036 ` && $soong_zip -write_if_changed -jar -o ${out} -C ${out}.tmp -D ${out}.tmp` +
37 ` && rm -rf ${out}.tmp`,
38 CommandDeps: []string{
39 "$aconfig",
40 "$soong_zip",
41 },
42 Restat: true,
Zhi Doub94c7792024-09-25 21:21:15 +000043 }, "mode", "debug")
Yu Liueae7b362023-11-16 17:05:47 -080044
45 // For cc_aconfig_library: Generate C++ library
46 cppRule = pctx.AndroidStaticRule("cc_aconfig_library",
47 blueprint.RuleParams{
48 Command: `rm -rf ${gendir}` +
49 ` && mkdir -p ${gendir}` +
50 ` && ${aconfig} create-cpp-lib` +
51 ` --mode ${mode}` +
52 ` --cache ${in}` +
Ted Bauer10fff942024-04-29 19:30:23 +000053 ` --out ${gendir}` +
54 ` --allow-instrumentation ${debug}`,
Yu Liueae7b362023-11-16 17:05:47 -080055 CommandDeps: []string{
56 "$aconfig",
57 },
Ted Bauer10fff942024-04-29 19:30:23 +000058 }, "gendir", "mode", "debug")
Yu Liueae7b362023-11-16 17:05:47 -080059
60 // For rust_aconfig_library: Generate Rust library
61 rustRule = pctx.AndroidStaticRule("rust_aconfig_library",
62 blueprint.RuleParams{
63 Command: `rm -rf ${gendir}` +
64 ` && mkdir -p ${gendir}` +
65 ` && ${aconfig} create-rust-lib` +
66 ` --mode ${mode}` +
67 ` --cache ${in}` +
Dennis Shen58378c92024-04-03 19:26:36 +000068 ` --allow-instrumentation ${debug}` +
Yu Liueae7b362023-11-16 17:05:47 -080069 ` --out ${gendir}`,
70 CommandDeps: []string{
71 "$aconfig",
72 },
Dennis Shen58378c92024-04-03 19:26:36 +000073 }, "gendir", "mode", "debug")
Yu Liueae7b362023-11-16 17:05:47 -080074)
75
76func init() {
77 RegisterBuildComponents(android.InitRegistrationContext)
78 pctx.HostBinToolVariable("aconfig", "aconfig")
79 pctx.HostBinToolVariable("soong_zip", "soong_zip")
80}
81
82func RegisterBuildComponents(ctx android.RegistrationContext) {
Jihoon Kang2a43e562024-02-12 19:05:12 +000083 ctx.RegisterModuleType("aconfig_declarations_group", AconfigDeclarationsGroupFactory)
Yu Liueae7b362023-11-16 17:05:47 -080084 ctx.RegisterModuleType("cc_aconfig_library", CcAconfigLibraryFactory)
85 ctx.RegisterModuleType("java_aconfig_library", JavaDeclarationsLibraryFactory)
86 ctx.RegisterModuleType("rust_aconfig_library", RustAconfigLibraryFactory)
87}