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