blob: 326c88d470645d1eecec00d1476f1747d478b47f [file] [log] [blame]
Fabien Sanglard19160202017-01-12 14:24:31 -05001//
Adam Lesinskid48944a2017-02-21 14:22:30 -08002// Copyright (C) 2017 The Android Open Source Project
Fabien Sanglard19160202017-01-12 14:24:31 -05003//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17toolSources = [
Ryan Mitchell833a1a62018-07-10 13:51:36 -070018 "cmd/Command.cpp",
Adam Lesinskid0f492d2017-04-03 18:12:45 -070019 "cmd/Compile.cpp",
Adam Lesinski8780eb62017-10-31 17:44:39 -070020 "cmd/Convert.cpp",
Adam Lesinskid0f492d2017-04-03 18:12:45 -070021 "cmd/Diff.cpp",
22 "cmd/Dump.cpp",
23 "cmd/Link.cpp",
24 "cmd/Optimize.cpp",
25 "cmd/Util.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -050026]
27
28cc_defaults {
Dan Willemsen7544b9c2017-09-08 22:44:51 -070029 name: "aapt2_defaults",
Fabien Sanglard19160202017-01-12 14:24:31 -050030 cflags: [
31 "-Wall",
32 "-Werror",
33 "-Wno-unused-parameter",
34 ],
35 cppflags: [
36 "-Wno-missing-field-initializers",
37 "-fno-exceptions",
38 "-fno-rtti",
39 ],
40 target: {
41 windows: {
42 enabled: true,
43 cflags: ["-Wno-maybe-uninitialized"],
Fabien Sanglard19160202017-01-12 14:24:31 -050044 },
45 darwin: {
46 cflags: ["-D_DARWIN_UNLIMITED_STREAMS"],
Fabien Sanglard19160202017-01-12 14:24:31 -050047 },
48 },
49 static_libs: [
50 "libandroidfw",
51 "libutils",
52 "liblog",
53 "libcutils",
54 "libexpat",
55 "libziparchive",
56 "libpng",
57 "libbase",
58 "libprotobuf-cpp-lite",
Dan Willemsen85aee732017-09-08 21:26:31 -070059 "libz",
Ryan Mitchell34039b22019-03-18 08:57:47 -070060 "libbuildversion",
Fabien Sanglard19160202017-01-12 14:24:31 -050061 ],
Ryan Mitchell81bae2d2019-01-04 13:48:04 -080062 stl: "libc++_static",
Fabien Sanglard19160202017-01-12 14:24:31 -050063 group_static_libs: true,
64}
65
66// ==========================================================
67// NOTE: Do not add any shared libraries.
68// AAPT2 is built to run on many environments
69// that may not have the required dependencies.
70// ==========================================================
71
72// ==========================================================
73// Build the host static library: aapt2
74// ==========================================================
75cc_library_host_static {
76 name: "libaapt2",
77 srcs: [
78 "compile/IdAssigner.cpp",
79 "compile/InlineXmlFormatParser.cpp",
80 "compile/NinePatch.cpp",
81 "compile/Png.cpp",
82 "compile/PngChunkFilter.cpp",
83 "compile/PngCrunch.cpp",
84 "compile/PseudolocaleGenerator.cpp",
85 "compile/Pseudolocalizer.cpp",
86 "compile/XmlIdCollector.cpp",
Shane Farmer74cdea32017-05-12 16:22:36 -070087 "configuration/ConfigurationParser.cpp",
Ryan Mitchellfc225b22018-08-21 14:52:51 -070088 "dump/DumpManifest.cpp",
Shane Farmer57669432017-06-19 12:52:04 -070089 "filter/AbiFilter.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -050090 "filter/ConfigFilter.cpp",
Adam Lesinski46708052017-09-29 14:49:15 -070091 "format/Archive.cpp",
Adam Lesinski00451162017-10-03 07:44:08 -070092 "format/Container.cpp",
Adam Lesinski46708052017-09-29 14:49:15 -070093 "format/binary/BinaryResourceParser.cpp",
94 "format/binary/ResChunkPullParser.cpp",
95 "format/binary/TableFlattener.cpp",
96 "format/binary/XmlFlattener.cpp",
97 "format/proto/ProtoDeserialize.cpp",
98 "format/proto/ProtoSerialize.cpp",
Adam Lesinski00451162017-10-03 07:44:08 -070099 "io/BigBufferStream.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500100 "io/File.cpp",
Adam Lesinski00451162017-10-03 07:44:08 -0700101 "io/FileStream.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500102 "io/FileSystem.cpp",
Adam Lesinski00451162017-10-03 07:44:08 -0700103 "io/StringStream.cpp",
Adam Lesinskid0f492d2017-04-03 18:12:45 -0700104 "io/Util.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500105 "io/ZipArchive.cpp",
106 "link/AutoVersioner.cpp",
107 "link/ManifestFixer.cpp",
Adam Lesinski34a16872018-02-23 16:18:10 -0800108 "link/NoDefaultResourceRemover.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500109 "link/ProductFilter.cpp",
110 "link/PrivateAttributeMover.cpp",
111 "link/ReferenceLinker.cpp",
Winson3c918b82019-01-25 14:25:37 -0800112 "link/ResourceExcluder.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500113 "link/TableMerger.cpp",
Adam Lesinskic744ae82017-05-17 19:28:38 -0700114 "link/XmlCompatVersioner.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500115 "link/XmlNamespaceRemover.cpp",
116 "link/XmlReferenceLinker.cpp",
Shane Farmer0a5b2012017-06-22 12:24:12 -0700117 "optimize/MultiApkGenerator.cpp",
Adam Lesinskid48944a2017-02-21 14:22:30 -0800118 "optimize/ResourceDeduper.cpp",
Mohamed Heikald3c5fb62018-01-12 11:37:26 -0500119 "optimize/ResourceFilter.cpp",
Mohamed Heikalc7694032018-11-07 16:49:02 -0500120 "optimize/ResourcePathShortener.cpp",
Adam Lesinskid48944a2017-02-21 14:22:30 -0800121 "optimize/VersionCollapser.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500122 "process/SymbolTable.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500123 "split/TableSplitter.cpp",
Adam Lesinski93190b72017-11-03 15:20:17 -0700124 "text/Printer.cpp",
Adam Lesinski66ea8402017-06-28 11:44:11 -0700125 "text/Unicode.cpp",
126 "text/Utf8Iterator.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500127 "util/BigBuffer.cpp",
128 "util/Files.cpp",
129 "util/Util.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500130 "Debug.cpp",
131 "DominatorTree.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500132 "java/AnnotationProcessor.cpp",
133 "java/ClassDefinition.cpp",
134 "java/JavaClassGenerator.cpp",
135 "java/ManifestClassGenerator.cpp",
136 "java/ProguardRules.cpp",
Pierre Lecesneff759e62017-02-01 00:29:25 +0000137 "LoadedApk.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500138 "Resource.cpp",
139 "ResourceParser.cpp",
140 "ResourceTable.cpp",
141 "ResourceUtils.cpp",
142 "ResourceValues.cpp",
143 "SdkConstants.cpp",
144 "StringPool.cpp",
Fabien Sanglard2d34e762019-02-21 15:13:29 -0800145 "trace/TraceBuffer.cpp",
Fabien Sanglard19160202017-01-12 14:24:31 -0500146 "xml/XmlActionExecutor.cpp",
147 "xml/XmlDom.cpp",
148 "xml/XmlPullParser.cpp",
149 "xml/XmlUtil.cpp",
Adam Lesinskib58c3ef2017-09-12 17:39:52 -0700150 "Configuration.proto",
Adam Lesinski4ffea042017-08-10 15:37:28 -0700151 "Resources.proto",
152 "ResourcesInternal.proto",
Fabien Sanglard19160202017-01-12 14:24:31 -0500153 ],
154 proto: {
155 export_proto_headers: true,
156 },
Dan Willemsen7544b9c2017-09-08 22:44:51 -0700157 defaults: ["aapt2_defaults"],
Fabien Sanglard19160202017-01-12 14:24:31 -0500158}
159
160// ==========================================================
161// Build the host shared library: aapt2_jni
162// ==========================================================
163cc_library_host_shared {
164 name: "libaapt2_jni",
165 srcs: toolSources + ["jni/aapt2_jni.cpp"],
166 static_libs: ["libaapt2"],
Dan Willemsen7544b9c2017-09-08 22:44:51 -0700167 defaults: ["aapt2_defaults"],
Fabien Sanglard19160202017-01-12 14:24:31 -0500168}
169
170// ==========================================================
171// Build the host tests: aapt2_tests
172// ==========================================================
173cc_test_host {
174 name: "aapt2_tests",
Adam Lesinskibab4ef52017-06-01 15:22:57 -0700175 srcs: [
Adam Lesinskiefeb7af2017-08-02 14:57:43 -0700176 "test/Builders.cpp",
Adam Lesinskibab4ef52017-06-01 15:22:57 -0700177 "test/Common.cpp",
Ryan Mitchell479fa392019-01-02 17:15:39 -0800178 "test/Fixture.cpp",
Adam Lesinskibab4ef52017-06-01 15:22:57 -0700179 "**/*_test.cpp",
Donald Chaib8f078c2017-10-18 23:51:18 -0700180 ] + toolSources,
Shane Farmer74cdea32017-05-12 16:22:36 -0700181 static_libs: [
182 "libaapt2",
183 "libgmock",
184 ],
Dan Willemsen7544b9c2017-09-08 22:44:51 -0700185 defaults: ["aapt2_defaults"],
Ryan Mitchell479fa392019-01-02 17:15:39 -0800186 data: [
187 "integration-tests/CompileTest/**/*",
Winsonf54c9a12019-01-23 12:39:40 -0800188 "integration-tests/CommandTests/**/*",
189 "integration-tests/ConvertTest/**/*"
Ryan Mitchell479fa392019-01-02 17:15:39 -0800190 ],
Fabien Sanglard19160202017-01-12 14:24:31 -0500191}
192
193// ==========================================================
194// Build the host executable: aapt2
195// ==========================================================
196cc_binary_host {
197 name: "aapt2",
198 srcs: ["Main.cpp"] + toolSources,
199 static_libs: ["libaapt2"],
Dan Willemsen7544b9c2017-09-08 22:44:51 -0700200 defaults: ["aapt2_defaults"],
Fabien Sanglard19160202017-01-12 14:24:31 -0500201}
Colin Cross0b28a922019-03-18 22:18:27 -0700202
203// ==========================================================
204// Dist the protos
205// ==========================================================
206genrule {
207 name: "aapt2-protos",
208 tools: [":soong_zip"],
209 srcs: [
210 "Configuration.proto",
211 "Resources.proto",
212 ],
213 out: ["aapt2-protos.zip"],
214 cmd: "mkdir $(genDir)/protos && " +
215 "cp $(in) $(genDir)/protos && " +
216 "$(location :soong_zip) -o $(out) -C $(genDir)/protos -D $(genDir)/protos",
217 dist: {
218 targets: ["sdk_repo"],
219 },
220}