1// 2// Copyright (C) 2017 The Android Open Source Project 3// 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 = [ 18 "cmd/Compile.cpp", 19 "cmd/Diff.cpp", 20 "cmd/Dump.cpp", 21 "cmd/Link.cpp", 22 "cmd/Optimize.cpp", 23 "cmd/Util.cpp", 24] 25 26cc_defaults { 27 name: "aapt_defaults", 28 cflags: [ 29 "-Wall", 30 "-Werror", 31 "-Wno-unused-parameter", 32 ], 33 cppflags: [ 34 "-Wno-missing-field-initializers", 35 "-fno-exceptions", 36 "-fno-rtti", 37 ], 38 target: { 39 windows: { 40 enabled: true, 41 cflags: ["-Wno-maybe-uninitialized"], 42 static_libs: ["libz"], 43 }, 44 darwin: { 45 cflags: ["-D_DARWIN_UNLIMITED_STREAMS"], 46 host_ldlibs: ["-lz"], 47 }, 48 linux: { 49 host_ldlibs: ["-lz"], 50 }, 51 }, 52 static_libs: [ 53 "libandroidfw", 54 "libutils", 55 "liblog", 56 "libcutils", 57 "libexpat", 58 "libziparchive", 59 "libpng", 60 "libbase", 61 "libprotobuf-cpp-lite", 62 ], 63 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", 87 "filter/ConfigFilter.cpp", 88 "flatten/Archive.cpp", 89 "flatten/TableFlattener.cpp", 90 "flatten/XmlFlattener.cpp", 91 "io/BigBufferStreams.cpp", 92 "io/File.cpp", 93 "io/FileSystem.cpp", 94 "io/Util.cpp", 95 "io/ZipArchive.cpp", 96 "link/AutoVersioner.cpp", 97 "link/ManifestFixer.cpp", 98 "link/ProductFilter.cpp", 99 "link/PrivateAttributeMover.cpp", 100 "link/ReferenceLinker.cpp", 101 "link/TableMerger.cpp", 102 "link/XmlCompatVersioner.cpp", 103 "link/XmlNamespaceRemover.cpp", 104 "link/XmlReferenceLinker.cpp", 105 "optimize/ResourceDeduper.cpp", 106 "optimize/VersionCollapser.cpp", 107 "process/SymbolTable.cpp", 108 "proto/ProtoHelpers.cpp", 109 "proto/TableProtoDeserializer.cpp", 110 "proto/TableProtoSerializer.cpp", 111 "split/TableSplitter.cpp", 112 "unflatten/BinaryResourceParser.cpp", 113 "unflatten/ResChunkPullParser.cpp", 114 "util/BigBuffer.cpp", 115 "util/Files.cpp", 116 "util/Util.cpp", 117 "ConfigDescription.cpp", 118 "Debug.cpp", 119 "DominatorTree.cpp", 120 "Flags.cpp", 121 "java/AnnotationProcessor.cpp", 122 "java/ClassDefinition.cpp", 123 "java/JavaClassGenerator.cpp", 124 "java/ManifestClassGenerator.cpp", 125 "java/ProguardRules.cpp", 126 "LoadedApk.cpp", 127 "Locale.cpp", 128 "Resource.cpp", 129 "ResourceParser.cpp", 130 "ResourceTable.cpp", 131 "ResourceUtils.cpp", 132 "ResourceValues.cpp", 133 "SdkConstants.cpp", 134 "StringPool.cpp", 135 "xml/XmlActionExecutor.cpp", 136 "xml/XmlDom.cpp", 137 "xml/XmlPullParser.cpp", 138 "xml/XmlUtil.cpp", 139 "Format.proto", 140 ], 141 proto: { 142 export_proto_headers: true, 143 }, 144 defaults: ["aapt_defaults"], 145} 146 147// ========================================================== 148// Build the host shared library: aapt2_jni 149// ========================================================== 150cc_library_host_shared { 151 name: "libaapt2_jni", 152 srcs: toolSources + ["jni/aapt2_jni.cpp"], 153 static_libs: ["libaapt2"], 154 defaults: ["aapt_defaults"], 155} 156 157// ========================================================== 158// Build the host tests: aapt2_tests 159// ========================================================== 160cc_test_host { 161 name: "aapt2_tests", 162 srcs: ["test/Common.cpp", "**/*_test.cpp"], 163 static_libs: ["libaapt2", "libgmock"], 164 defaults: ["aapt_defaults"], 165} 166 167// ========================================================== 168// Build the host executable: aapt2 169// ========================================================== 170cc_binary_host { 171 name: "aapt2", 172 srcs: ["Main.cpp"] + toolSources, 173 static_libs: ["libaapt2"], 174 defaults: ["aapt_defaults"], 175} 176