diff --git a/Android.bp b/Android.bp index 90883152e5137..81d6dab8ac17f 100644 --- a/Android.bp +++ b/Android.bp @@ -14,6 +14,7 @@ subdirs = [ "libs/*", + "tools/*", "native/android", "native/graphics/jni", ] diff --git a/tools/aapt2/Android.bp b/tools/aapt2/Android.bp new file mode 100644 index 0000000000000..20439cc498e62 --- /dev/null +++ b/tools/aapt2/Android.bp @@ -0,0 +1,170 @@ +// +// Copyright (C) 2015 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +toolSources = [ + "compile/Compile.cpp", + "diff/Diff.cpp", + "dump/Dump.cpp", + "link/Link.cpp", +] + +cc_defaults { + name: "aapt_defaults", + cflags: [ + "-Wall", + "-Werror", + "-Wno-unused-parameter", + ], + cppflags: [ + "-Wno-missing-field-initializers", + "-fno-exceptions", + "-fno-rtti", + ], + target: { + windows: { + enabled: true, + cflags: ["-Wno-maybe-uninitialized"], + static_libs: ["libz"], + }, + darwin: { + cflags: ["-D_DARWIN_UNLIMITED_STREAMS"], + host_ldlibs: ["-lz"], + }, + linux: { + host_ldlibs: ["-lz"], + }, + }, + static_libs: [ + "libandroidfw", + "libutils", + "liblog", + "libcutils", + "libexpat", + "libziparchive", + "libpng", + "libbase", + "libprotobuf-cpp-lite", + ], + group_static_libs: true, +} + +// ========================================================== +// NOTE: Do not add any shared libraries. +// AAPT2 is built to run on many environments +// that may not have the required dependencies. +// ========================================================== + +// ========================================================== +// Build the host static library: aapt2 +// ========================================================== +cc_library_host_static { + name: "libaapt2", + srcs: [ + "compile/IdAssigner.cpp", + "compile/InlineXmlFormatParser.cpp", + "compile/NinePatch.cpp", + "compile/Png.cpp", + "compile/PngChunkFilter.cpp", + "compile/PngCrunch.cpp", + "compile/PseudolocaleGenerator.cpp", + "compile/Pseudolocalizer.cpp", + "compile/XmlIdCollector.cpp", + "filter/ConfigFilter.cpp", + "flatten/Archive.cpp", + "flatten/TableFlattener.cpp", + "flatten/XmlFlattener.cpp", + "io/File.cpp", + "io/FileSystem.cpp", + "io/Io.cpp", + "io/ZipArchive.cpp", + "link/AutoVersioner.cpp", + "link/ManifestFixer.cpp", + "link/ProductFilter.cpp", + "link/PrivateAttributeMover.cpp", + "link/ReferenceLinker.cpp", + "link/ResourceDeduper.cpp", + "link/TableMerger.cpp", + "link/VersionCollapser.cpp", + "link/XmlNamespaceRemover.cpp", + "link/XmlReferenceLinker.cpp", + "process/SymbolTable.cpp", + "proto/ProtoHelpers.cpp", + "proto/TableProtoDeserializer.cpp", + "proto/TableProtoSerializer.cpp", + "split/TableSplitter.cpp", + "unflatten/BinaryResourceParser.cpp", + "unflatten/ResChunkPullParser.cpp", + "util/BigBuffer.cpp", + "util/Files.cpp", + "util/Util.cpp", + "ConfigDescription.cpp", + "Debug.cpp", + "DominatorTree.cpp", + "Flags.cpp", + "java/AnnotationProcessor.cpp", + "java/ClassDefinition.cpp", + "java/JavaClassGenerator.cpp", + "java/ManifestClassGenerator.cpp", + "java/ProguardRules.cpp", + "Locale.cpp", + "Resource.cpp", + "ResourceParser.cpp", + "ResourceTable.cpp", + "ResourceUtils.cpp", + "ResourceValues.cpp", + "SdkConstants.cpp", + "StringPool.cpp", + "xml/XmlActionExecutor.cpp", + "xml/XmlDom.cpp", + "xml/XmlPullParser.cpp", + "xml/XmlUtil.cpp", + "Format.proto", + ], + proto: { + export_proto_headers: true, + }, + defaults: ["aapt_defaults"], +} + +// ========================================================== +// Build the host shared library: aapt2_jni +// ========================================================== +cc_library_host_shared { + name: "libaapt2_jni", + srcs: toolSources + ["jni/aapt2_jni.cpp"], + static_libs: ["libaapt2"], + defaults: ["aapt_defaults"], +} + +// ========================================================== +// Build the host tests: aapt2_tests +// ========================================================== +cc_test_host { + name: "aapt2_tests", + srcs: ["**/*_test.cpp"], + static_libs: ["libaapt2"], + defaults: ["aapt_defaults"], +} + +// ========================================================== +// Build the host executable: aapt2 +// ========================================================== +cc_binary_host { + name: "aapt2", + srcs: ["Main.cpp"] + toolSources, + static_libs: ["libaapt2"], + defaults: ["aapt_defaults"], +} diff --git a/tools/aapt2/Android.mk b/tools/aapt2/Android.mk deleted file mode 100644 index 1efd2ed6446cb..0000000000000 --- a/tools/aapt2/Android.mk +++ /dev/null @@ -1,253 +0,0 @@ -# -# Copyright (C) 2015 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -LOCAL_PATH:= $(call my-dir) - -# ========================================================== -# Setup some common variables for the different build -# targets here. -# ========================================================== - -main := Main.cpp -sources := \ - compile/IdAssigner.cpp \ - compile/InlineXmlFormatParser.cpp \ - compile/NinePatch.cpp \ - compile/Png.cpp \ - compile/PngChunkFilter.cpp \ - compile/PngCrunch.cpp \ - compile/PseudolocaleGenerator.cpp \ - compile/Pseudolocalizer.cpp \ - compile/XmlIdCollector.cpp \ - filter/ConfigFilter.cpp \ - flatten/Archive.cpp \ - flatten/TableFlattener.cpp \ - flatten/XmlFlattener.cpp \ - io/File.cpp \ - io/FileSystem.cpp \ - io/Io.cpp \ - io/ZipArchive.cpp \ - link/AutoVersioner.cpp \ - link/ManifestFixer.cpp \ - link/ProductFilter.cpp \ - link/PrivateAttributeMover.cpp \ - link/ReferenceLinker.cpp \ - link/ResourceDeduper.cpp \ - link/TableMerger.cpp \ - link/VersionCollapser.cpp \ - link/XmlNamespaceRemover.cpp \ - link/XmlReferenceLinker.cpp \ - process/SymbolTable.cpp \ - proto/ProtoHelpers.cpp \ - proto/TableProtoDeserializer.cpp \ - proto/TableProtoSerializer.cpp \ - split/TableSplitter.cpp \ - unflatten/BinaryResourceParser.cpp \ - unflatten/ResChunkPullParser.cpp \ - util/BigBuffer.cpp \ - util/Files.cpp \ - util/Util.cpp \ - ConfigDescription.cpp \ - Debug.cpp \ - DominatorTree.cpp \ - Flags.cpp \ - java/AnnotationProcessor.cpp \ - java/ClassDefinition.cpp \ - java/JavaClassGenerator.cpp \ - java/ManifestClassGenerator.cpp \ - java/ProguardRules.cpp \ - Locale.cpp \ - Resource.cpp \ - ResourceParser.cpp \ - ResourceTable.cpp \ - ResourceUtils.cpp \ - ResourceValues.cpp \ - SdkConstants.cpp \ - StringPool.cpp \ - xml/XmlActionExecutor.cpp \ - xml/XmlDom.cpp \ - xml/XmlPullParser.cpp \ - xml/XmlUtil.cpp - -sources += Format.proto - -sourcesJni := jni/aapt2_jni.cpp - -testSources := \ - compile/IdAssigner_test.cpp \ - compile/InlineXmlFormatParser_test.cpp \ - compile/NinePatch_test.cpp \ - compile/PseudolocaleGenerator_test.cpp \ - compile/Pseudolocalizer_test.cpp \ - compile/XmlIdCollector_test.cpp \ - filter/ConfigFilter_test.cpp \ - flatten/TableFlattener_test.cpp \ - flatten/XmlFlattener_test.cpp \ - link/AutoVersioner_test.cpp \ - link/ManifestFixer_test.cpp \ - link/PrivateAttributeMover_test.cpp \ - link/ProductFilter_test.cpp \ - link/ReferenceLinker_test.cpp \ - link/ResourceDeduper_test.cpp \ - link/TableMerger_test.cpp \ - link/VersionCollapser_test.cpp \ - link/XmlNamespaceRemover_test.cpp \ - link/XmlReferenceLinker_test.cpp \ - process/SymbolTable_test.cpp \ - proto/TableProtoSerializer_test.cpp \ - split/TableSplitter_test.cpp \ - util/BigBuffer_test.cpp \ - util/Files_test.cpp \ - util/Maybe_test.cpp \ - util/StringPiece_test.cpp \ - util/Util_test.cpp \ - ConfigDescription_test.cpp \ - DominatorTree_test.cpp \ - java/AnnotationProcessor_test.cpp \ - java/JavaClassGenerator_test.cpp \ - java/ManifestClassGenerator_test.cpp \ - Locale_test.cpp \ - NameMangler_test.cpp \ - Resource_test.cpp \ - ResourceParser_test.cpp \ - ResourceTable_test.cpp \ - ResourceUtils_test.cpp \ - SdkConstants_test.cpp \ - StringPool_test.cpp \ - ValueVisitor_test.cpp \ - xml/XmlActionExecutor_test.cpp \ - xml/XmlDom_test.cpp \ - xml/XmlPullParser_test.cpp \ - xml/XmlUtil_test.cpp - -toolSources := \ - compile/Compile.cpp \ - diff/Diff.cpp \ - dump/Dump.cpp \ - link/Link.cpp - -hostLdLibs := - -hostStaticLibs := \ - libandroidfw \ - libutils \ - liblog \ - libcutils \ - libexpat \ - libziparchive \ - libpng \ - libbase \ - libprotobuf-cpp-lite - - -# Statically link libz for MinGW (Win SDK under Linux), -# and dynamically link for all others. -hostStaticLibs_windows := libz -hostLdLibs_linux := -lz -hostLdLibs_darwin := -lz - -cFlags := -Wall -Werror -Wno-unused-parameter -cFlags_darwin := -D_DARWIN_UNLIMITED_STREAMS -cFlags_windows := -Wno-maybe-uninitialized # Incorrectly marking use of Maybe.value() as error. -cppFlags := -Wno-missing-field-initializers -fno-exceptions -fno-rtti -protoIncludes := $(call generated-sources-dir-for,STATIC_LIBRARIES,libaapt2,HOST) - -# ========================================================== -# NOTE: Do not add any shared libraries. -# AAPT2 is built to run on many environments -# that may not have the required dependencies. -# ========================================================== - -# ========================================================== -# Build the host static library: libaapt2 -# ========================================================== -include $(CLEAR_VARS) -LOCAL_MODULE := libaapt2 -LOCAL_MODULE_CLASS := STATIC_LIBRARIES -LOCAL_MODULE_HOST_OS := darwin linux windows -LOCAL_CFLAGS := $(cFlags) -LOCAL_CFLAGS_darwin := $(cFlags_darwin) -LOCAL_CFLAGS_windows := $(cFlags_windows) -LOCAL_CPPFLAGS := $(cppFlags) -LOCAL_C_INCLUDES := $(protoIncludes) -LOCAL_SRC_FILES := $(sources) -LOCAL_STATIC_LIBRARIES := $(hostStaticLibs) -LOCAL_STATIC_LIBRARIES_windows := $(hostStaticLibs_windows) -include $(BUILD_HOST_STATIC_LIBRARY) - - -# ========================================================== -# Build the host shared library: libaapt2_jni -# ========================================================== -include $(CLEAR_VARS) -LOCAL_MODULE := libaapt2_jni -LOCAL_MODULE_CLASS := SHARED_LIBRARIES -LOCAL_MODULE_HOST_OS := darwin linux windows -LOCAL_CFLAGS := $(cFlags) -LOCAL_CFLAGS_darwin := $(cFlags_darwin) -LOCAL_CFLAGS_windows := $(cFlags_windows) -LOCAL_CPPFLAGS := $(cppFlags) -LOCAL_C_INCLUDES := $(protoIncludes) -LOCAL_SRC_FILES := $(toolSources) $(sourcesJni) -LOCAL_STATIC_LIBRARIES := libaapt2 $(hostStaticLibs) -LOCAL_STATIC_LIBRARIES_windows := $(hostStaticLibs_windows) -LOCAL_LDLIBS := $(hostLdLibs) -LOCAL_LDLIBS_darwin := $(hostLdLibs_darwin) -LOCAL_LDLIBS_linux := $(hostLdLibs_linux) -include $(BUILD_HOST_SHARED_LIBRARY) - - -# ========================================================== -# Build the host tests: libaapt2_tests -# ========================================================== -include $(CLEAR_VARS) -LOCAL_MODULE := libaapt2_tests -LOCAL_MODULE_TAGS := tests -LOCAL_MODULE_HOST_OS := darwin linux windows -LOCAL_CFLAGS := $(cFlags) -LOCAL_CFLAGS_darwin := $(cFlags_darwin) -LOCAL_CFLAGS_windows := $(cFlags_windows) -LOCAL_CPPFLAGS := $(cppFlags) -LOCAL_C_INCLUDES := $(protoIncludes) -LOCAL_SRC_FILES := $(testSources) -LOCAL_STATIC_LIBRARIES := libaapt2 $(hostStaticLibs) -LOCAL_STATIC_LIBRARIES_windows := $(hostStaticLibs_windows) -LOCAL_LDLIBS := $(hostLdLibs) -LOCAL_LDLIBS_darwin := $(hostLdLibs_darwin) -LOCAL_LDLIBS_linux := $(hostLdLibs_linux) -include $(BUILD_HOST_NATIVE_TEST) - -# ========================================================== -# Build the host executable: aapt2 -# ========================================================== -include $(CLEAR_VARS) -LOCAL_MODULE := aapt2 -LOCAL_MODULE_HOST_OS := darwin linux windows -LOCAL_CFLAGS := $(cFlags) -LOCAL_CFLAGS_darwin := $(cFlags_darwin) -LOCAL_CFLAGS_windows := $(cFlags_windows) -LOCAL_CPPFLAGS := $(cppFlags) -LOCAL_C_INCLUDES := $(protoIncludes) -LOCAL_SRC_FILES := $(main) $(toolSources) -LOCAL_STATIC_LIBRARIES := libaapt2 $(hostStaticLibs) -LOCAL_STATIC_LIBRARIES_windows := $(hostStaticLibs_windows) -LOCAL_LDLIBS := $(hostLdLibs) -LOCAL_LDLIBS_darwin := $(hostLdLibs_darwin) -LOCAL_LDLIBS_linux := $(hostLdLibs_linux) -include $(BUILD_HOST_EXECUTABLE) - -ifeq ($(ONE_SHOT_MAKEFILE),) -include $(call all-makefiles-under,$(LOCAL_PATH)) -endif diff --git a/tools/aapt2/proto/ProtoHelpers.h b/tools/aapt2/proto/ProtoHelpers.h index 735cda0bde785..344e9477ea714 100644 --- a/tools/aapt2/proto/ProtoHelpers.h +++ b/tools/aapt2/proto/ProtoHelpers.h @@ -23,7 +23,7 @@ #include "ResourceTable.h" #include "Source.h" #include "StringPool.h" -#include "proto/frameworks/base/tools/aapt2/Format.pb.h" +#include "Format.pb.h" namespace aapt {