xref: /aosp_15_r20/frameworks/base/tools/aapt2/Android.bp (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Worker//
2*d57664e9SAndroid Build Coastguard Worker// Copyright (C) 2017 The Android Open Source Project
3*d57664e9SAndroid Build Coastguard Worker//
4*d57664e9SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
5*d57664e9SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
6*d57664e9SAndroid Build Coastguard Worker// You may obtain a copy of the License at
7*d57664e9SAndroid Build Coastguard Worker//
8*d57664e9SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
9*d57664e9SAndroid Build Coastguard Worker//
10*d57664e9SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
11*d57664e9SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
12*d57664e9SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*d57664e9SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
14*d57664e9SAndroid Build Coastguard Worker// limitations under the License.
15*d57664e9SAndroid Build Coastguard Worker//
16*d57664e9SAndroid Build Coastguard Worker
17*d57664e9SAndroid Build Coastguard Workerpackage {
18*d57664e9SAndroid Build Coastguard Worker    default_applicable_licenses: ["Android-Apache-2.0"],
19*d57664e9SAndroid Build Coastguard Worker}
20*d57664e9SAndroid Build Coastguard Worker
21*d57664e9SAndroid Build Coastguard WorkertoolSources = [
22*d57664e9SAndroid Build Coastguard Worker    "cmd/ApkInfo.cpp",
23*d57664e9SAndroid Build Coastguard Worker    "cmd/Command.cpp",
24*d57664e9SAndroid Build Coastguard Worker    "cmd/Compile.cpp",
25*d57664e9SAndroid Build Coastguard Worker    "cmd/Convert.cpp",
26*d57664e9SAndroid Build Coastguard Worker    "cmd/Diff.cpp",
27*d57664e9SAndroid Build Coastguard Worker    "cmd/Dump.cpp",
28*d57664e9SAndroid Build Coastguard Worker    "cmd/Link.cpp",
29*d57664e9SAndroid Build Coastguard Worker    "cmd/Optimize.cpp",
30*d57664e9SAndroid Build Coastguard Worker    "cmd/Util.cpp",
31*d57664e9SAndroid Build Coastguard Worker]
32*d57664e9SAndroid Build Coastguard Worker
33*d57664e9SAndroid Build Coastguard Workercc_defaults {
34*d57664e9SAndroid Build Coastguard Worker    name: "aapt2_defaults",
35*d57664e9SAndroid Build Coastguard Worker    cpp_std: "gnu++2b",
36*d57664e9SAndroid Build Coastguard Worker    cflags: [
37*d57664e9SAndroid Build Coastguard Worker        "-Wall",
38*d57664e9SAndroid Build Coastguard Worker        "-Werror",
39*d57664e9SAndroid Build Coastguard Worker        "-Wno-unused-parameter",
40*d57664e9SAndroid Build Coastguard Worker    ],
41*d57664e9SAndroid Build Coastguard Worker    cppflags: [
42*d57664e9SAndroid Build Coastguard Worker        "-Wno-missing-field-initializers",
43*d57664e9SAndroid Build Coastguard Worker        "-fno-exceptions",
44*d57664e9SAndroid Build Coastguard Worker        "-fno-rtti",
45*d57664e9SAndroid Build Coastguard Worker        "-Wno-deprecated-declarations",
46*d57664e9SAndroid Build Coastguard Worker    ],
47*d57664e9SAndroid Build Coastguard Worker    target: {
48*d57664e9SAndroid Build Coastguard Worker        windows: {
49*d57664e9SAndroid Build Coastguard Worker            compile_multilib: "64",
50*d57664e9SAndroid Build Coastguard Worker            enabled: true,
51*d57664e9SAndroid Build Coastguard Worker            cflags: ["-Wno-maybe-uninitialized"],
52*d57664e9SAndroid Build Coastguard Worker            ldflags: ["-static"],
53*d57664e9SAndroid Build Coastguard Worker        },
54*d57664e9SAndroid Build Coastguard Worker        darwin: {
55*d57664e9SAndroid Build Coastguard Worker            cflags: ["-D_DARWIN_UNLIMITED_STREAMS"],
56*d57664e9SAndroid Build Coastguard Worker        },
57*d57664e9SAndroid Build Coastguard Worker    },
58*d57664e9SAndroid Build Coastguard Worker    header_libs: [
59*d57664e9SAndroid Build Coastguard Worker        "jni_headers",
60*d57664e9SAndroid Build Coastguard Worker        "native_headers",
61*d57664e9SAndroid Build Coastguard Worker    ],
62*d57664e9SAndroid Build Coastguard Worker    static_libs: [
63*d57664e9SAndroid Build Coastguard Worker        "libandroidfw",
64*d57664e9SAndroid Build Coastguard Worker        "libutils",
65*d57664e9SAndroid Build Coastguard Worker        "liblog",
66*d57664e9SAndroid Build Coastguard Worker        "libcutils",
67*d57664e9SAndroid Build Coastguard Worker        "libexpat",
68*d57664e9SAndroid Build Coastguard Worker        "libziparchive",
69*d57664e9SAndroid Build Coastguard Worker        "libpng",
70*d57664e9SAndroid Build Coastguard Worker        "libbase",
71*d57664e9SAndroid Build Coastguard Worker        "libprotobuf-cpp-full",
72*d57664e9SAndroid Build Coastguard Worker        "libz",
73*d57664e9SAndroid Build Coastguard Worker        "libbuildversion",
74*d57664e9SAndroid Build Coastguard Worker        "libidmap2_policies",
75*d57664e9SAndroid Build Coastguard Worker    ],
76*d57664e9SAndroid Build Coastguard Worker    stl: "libc++_static",
77*d57664e9SAndroid Build Coastguard Worker}
78*d57664e9SAndroid Build Coastguard Worker
79*d57664e9SAndroid Build Coastguard Worker// ==========================================================
80*d57664e9SAndroid Build Coastguard Worker// NOTE: Do not add any shared libraries.
81*d57664e9SAndroid Build Coastguard Worker// AAPT2 is built to run on many environments
82*d57664e9SAndroid Build Coastguard Worker// that may not have the required dependencies.
83*d57664e9SAndroid Build Coastguard Worker// ==========================================================
84*d57664e9SAndroid Build Coastguard Worker
85*d57664e9SAndroid Build Coastguard Worker// ==========================================================
86*d57664e9SAndroid Build Coastguard Worker// Build the host static library: aapt2
87*d57664e9SAndroid Build Coastguard Worker// ==========================================================
88*d57664e9SAndroid Build Coastguard Workercc_library_host_static {
89*d57664e9SAndroid Build Coastguard Worker    name: "libaapt2",
90*d57664e9SAndroid Build Coastguard Worker    srcs: [
91*d57664e9SAndroid Build Coastguard Worker        "compile/IdAssigner.cpp",
92*d57664e9SAndroid Build Coastguard Worker        "compile/InlineXmlFormatParser.cpp",
93*d57664e9SAndroid Build Coastguard Worker        "compile/PseudolocaleGenerator.cpp",
94*d57664e9SAndroid Build Coastguard Worker        "compile/Pseudolocalizer.cpp",
95*d57664e9SAndroid Build Coastguard Worker        "compile/XmlIdCollector.cpp",
96*d57664e9SAndroid Build Coastguard Worker        "configuration/ConfigurationParser.cpp",
97*d57664e9SAndroid Build Coastguard Worker        "dump/DumpManifest.cpp",
98*d57664e9SAndroid Build Coastguard Worker        "filter/AbiFilter.cpp",
99*d57664e9SAndroid Build Coastguard Worker        "filter/ConfigFilter.cpp",
100*d57664e9SAndroid Build Coastguard Worker        "format/Archive.cpp",
101*d57664e9SAndroid Build Coastguard Worker        "format/Container.cpp",
102*d57664e9SAndroid Build Coastguard Worker        "format/binary/BinaryResourceParser.cpp",
103*d57664e9SAndroid Build Coastguard Worker        "format/binary/ResChunkPullParser.cpp",
104*d57664e9SAndroid Build Coastguard Worker        "format/binary/ResEntryWriter.cpp",
105*d57664e9SAndroid Build Coastguard Worker        "format/binary/TableFlattener.cpp",
106*d57664e9SAndroid Build Coastguard Worker        "format/binary/XmlFlattener.cpp",
107*d57664e9SAndroid Build Coastguard Worker        "format/proto/ProtoDeserialize.cpp",
108*d57664e9SAndroid Build Coastguard Worker        "format/proto/ProtoSerialize.cpp",
109*d57664e9SAndroid Build Coastguard Worker        "io/File.cpp",
110*d57664e9SAndroid Build Coastguard Worker        "io/FileSystem.cpp",
111*d57664e9SAndroid Build Coastguard Worker        "io/StringStream.cpp",
112*d57664e9SAndroid Build Coastguard Worker        "io/Util.cpp",
113*d57664e9SAndroid Build Coastguard Worker        "io/ZipArchive.cpp",
114*d57664e9SAndroid Build Coastguard Worker        "link/AutoVersioner.cpp",
115*d57664e9SAndroid Build Coastguard Worker        "link/FeatureFlagsFilter.cpp",
116*d57664e9SAndroid Build Coastguard Worker        "link/FlagDisabledResourceRemover.cpp",
117*d57664e9SAndroid Build Coastguard Worker        "link/ManifestFixer.cpp",
118*d57664e9SAndroid Build Coastguard Worker        "link/NoDefaultResourceRemover.cpp",
119*d57664e9SAndroid Build Coastguard Worker        "link/PrivateAttributeMover.cpp",
120*d57664e9SAndroid Build Coastguard Worker        "link/ReferenceLinker.cpp",
121*d57664e9SAndroid Build Coastguard Worker        "link/ResourceExcluder.cpp",
122*d57664e9SAndroid Build Coastguard Worker        "link/TableMerger.cpp",
123*d57664e9SAndroid Build Coastguard Worker        "link/XmlCompatVersioner.cpp",
124*d57664e9SAndroid Build Coastguard Worker        "link/XmlNamespaceRemover.cpp",
125*d57664e9SAndroid Build Coastguard Worker        "link/XmlReferenceLinker.cpp",
126*d57664e9SAndroid Build Coastguard Worker        "optimize/MultiApkGenerator.cpp",
127*d57664e9SAndroid Build Coastguard Worker        "optimize/ResourceDeduper.cpp",
128*d57664e9SAndroid Build Coastguard Worker        "optimize/ResourceFilter.cpp",
129*d57664e9SAndroid Build Coastguard Worker        "optimize/Obfuscator.cpp",
130*d57664e9SAndroid Build Coastguard Worker        "optimize/VersionCollapser.cpp",
131*d57664e9SAndroid Build Coastguard Worker        "process/ProductFilter.cpp",
132*d57664e9SAndroid Build Coastguard Worker        "process/SymbolTable.cpp",
133*d57664e9SAndroid Build Coastguard Worker        "split/TableSplitter.cpp",
134*d57664e9SAndroid Build Coastguard Worker        "text/Printer.cpp",
135*d57664e9SAndroid Build Coastguard Worker        "text/Unicode.cpp",
136*d57664e9SAndroid Build Coastguard Worker        "text/Utf8Iterator.cpp",
137*d57664e9SAndroid Build Coastguard Worker        "util/Files.cpp",
138*d57664e9SAndroid Build Coastguard Worker        "util/Util.cpp",
139*d57664e9SAndroid Build Coastguard Worker        "Debug.cpp",
140*d57664e9SAndroid Build Coastguard Worker        "DominatorTree.cpp",
141*d57664e9SAndroid Build Coastguard Worker        "java/AnnotationProcessor.cpp",
142*d57664e9SAndroid Build Coastguard Worker        "java/ClassDefinition.cpp",
143*d57664e9SAndroid Build Coastguard Worker        "java/JavaClassGenerator.cpp",
144*d57664e9SAndroid Build Coastguard Worker        "java/ManifestClassGenerator.cpp",
145*d57664e9SAndroid Build Coastguard Worker        "java/ProguardRules.cpp",
146*d57664e9SAndroid Build Coastguard Worker        "LoadedApk.cpp",
147*d57664e9SAndroid Build Coastguard Worker        "Resource.cpp",
148*d57664e9SAndroid Build Coastguard Worker        "ResourceParser.cpp",
149*d57664e9SAndroid Build Coastguard Worker        "ResourceTable.cpp",
150*d57664e9SAndroid Build Coastguard Worker        "ResourceUtils.cpp",
151*d57664e9SAndroid Build Coastguard Worker        "ResourceValues.cpp",
152*d57664e9SAndroid Build Coastguard Worker        "SdkConstants.cpp",
153*d57664e9SAndroid Build Coastguard Worker        "trace/TraceBuffer.cpp",
154*d57664e9SAndroid Build Coastguard Worker        "xml/XmlActionExecutor.cpp",
155*d57664e9SAndroid Build Coastguard Worker        "xml/XmlDom.cpp",
156*d57664e9SAndroid Build Coastguard Worker        "xml/XmlPullParser.cpp",
157*d57664e9SAndroid Build Coastguard Worker        "xml/XmlUtil.cpp",
158*d57664e9SAndroid Build Coastguard Worker        "ApkInfo.proto",
159*d57664e9SAndroid Build Coastguard Worker        "Configuration.proto",
160*d57664e9SAndroid Build Coastguard Worker        "Resources.proto",
161*d57664e9SAndroid Build Coastguard Worker        "ResourceMetadata.proto",
162*d57664e9SAndroid Build Coastguard Worker        "ResourcesInternal.proto",
163*d57664e9SAndroid Build Coastguard Worker        "ValueTransformer.cpp",
164*d57664e9SAndroid Build Coastguard Worker    ],
165*d57664e9SAndroid Build Coastguard Worker    proto: {
166*d57664e9SAndroid Build Coastguard Worker        export_proto_headers: true,
167*d57664e9SAndroid Build Coastguard Worker        type: "full",
168*d57664e9SAndroid Build Coastguard Worker    },
169*d57664e9SAndroid Build Coastguard Worker    defaults: ["aapt2_defaults"],
170*d57664e9SAndroid Build Coastguard Worker}
171*d57664e9SAndroid Build Coastguard Worker
172*d57664e9SAndroid Build Coastguard Worker// ==========================================================
173*d57664e9SAndroid Build Coastguard Worker// Build the host tests: aapt2_tests
174*d57664e9SAndroid Build Coastguard Worker// ==========================================================
175*d57664e9SAndroid Build Coastguard Workercc_test_host {
176*d57664e9SAndroid Build Coastguard Worker    name: "aapt2_tests",
177*d57664e9SAndroid Build Coastguard Worker    srcs: [
178*d57664e9SAndroid Build Coastguard Worker        "test/Builders.cpp",
179*d57664e9SAndroid Build Coastguard Worker        "test/Common.cpp",
180*d57664e9SAndroid Build Coastguard Worker        "test/Fixture.cpp",
181*d57664e9SAndroid Build Coastguard Worker        "**/*_test.cpp",
182*d57664e9SAndroid Build Coastguard Worker    ] + toolSources,
183*d57664e9SAndroid Build Coastguard Worker    static_libs: [
184*d57664e9SAndroid Build Coastguard Worker        "libaapt2",
185*d57664e9SAndroid Build Coastguard Worker        "libgmock",
186*d57664e9SAndroid Build Coastguard Worker    ],
187*d57664e9SAndroid Build Coastguard Worker    defaults: ["aapt2_defaults"],
188*d57664e9SAndroid Build Coastguard Worker    data: [
189*d57664e9SAndroid Build Coastguard Worker        "integration-tests/CompileTest/**/*",
190*d57664e9SAndroid Build Coastguard Worker        "integration-tests/CommandTests/**/*",
191*d57664e9SAndroid Build Coastguard Worker        "integration-tests/ConvertTest/**/*",
192*d57664e9SAndroid Build Coastguard Worker        "integration-tests/DumpTest/**/*",
193*d57664e9SAndroid Build Coastguard Worker        ":resource-flagging-test-app-apk",
194*d57664e9SAndroid Build Coastguard Worker        ":resource-flagging-test-app-r-java",
195*d57664e9SAndroid Build Coastguard Worker    ],
196*d57664e9SAndroid Build Coastguard Worker}
197*d57664e9SAndroid Build Coastguard Worker
198*d57664e9SAndroid Build Coastguard Worker// ==========================================================
199*d57664e9SAndroid Build Coastguard Worker// Build the host executable: aapt2
200*d57664e9SAndroid Build Coastguard Worker// ==========================================================
201*d57664e9SAndroid Build Coastguard Workercc_binary_host {
202*d57664e9SAndroid Build Coastguard Worker    name: "aapt2",
203*d57664e9SAndroid Build Coastguard Worker    srcs: ["Main.cpp"] + toolSources,
204*d57664e9SAndroid Build Coastguard Worker    use_version_lib: true,
205*d57664e9SAndroid Build Coastguard Worker    static_libs: ["libaapt2"],
206*d57664e9SAndroid Build Coastguard Worker    defaults: ["aapt2_defaults"],
207*d57664e9SAndroid Build Coastguard Worker    dist: {
208*d57664e9SAndroid Build Coastguard Worker        targets: ["aapt2_artifacts"],
209*d57664e9SAndroid Build Coastguard Worker    },
210*d57664e9SAndroid Build Coastguard Worker}
211*d57664e9SAndroid Build Coastguard Worker
212*d57664e9SAndroid Build Coastguard Worker// ==========================================================
213*d57664e9SAndroid Build Coastguard Worker// Dist the protos
214*d57664e9SAndroid Build Coastguard Worker// ==========================================================
215*d57664e9SAndroid Build Coastguard Workergenrule {
216*d57664e9SAndroid Build Coastguard Worker    name: "aapt2-protos",
217*d57664e9SAndroid Build Coastguard Worker    tools: [":soong_zip"],
218*d57664e9SAndroid Build Coastguard Worker    srcs: [
219*d57664e9SAndroid Build Coastguard Worker        "ApkInfo.proto",
220*d57664e9SAndroid Build Coastguard Worker        "Configuration.proto",
221*d57664e9SAndroid Build Coastguard Worker        "ResourcesInternal.proto",
222*d57664e9SAndroid Build Coastguard Worker        "ResourceMetadata.proto",
223*d57664e9SAndroid Build Coastguard Worker        "Resources.proto",
224*d57664e9SAndroid Build Coastguard Worker    ],
225*d57664e9SAndroid Build Coastguard Worker    out: ["aapt2-protos.zip"],
226*d57664e9SAndroid Build Coastguard Worker    cmd: "mkdir $(genDir)/protos && " +
227*d57664e9SAndroid Build Coastguard Worker        "cp $(in) $(genDir)/protos && " +
228*d57664e9SAndroid Build Coastguard Worker        "$(location :soong_zip) -o $(out) -C $(genDir)/protos -D $(genDir)/protos",
229*d57664e9SAndroid Build Coastguard Worker    dist: {
230*d57664e9SAndroid Build Coastguard Worker        targets: [
231*d57664e9SAndroid Build Coastguard Worker            "sdk_repo",
232*d57664e9SAndroid Build Coastguard Worker            "aapt2_artifacts",
233*d57664e9SAndroid Build Coastguard Worker        ],
234*d57664e9SAndroid Build Coastguard Worker    },
235*d57664e9SAndroid Build Coastguard Worker}
236