# # Copyright (C) 2011 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. # # ASan slows down dex2oat by ~3.5x, which translates into extremely slow first # boot. Disabled to help speed up SANITIZE_TARGET mode. # The supported way of using SANITIZE_TARGET is by first running a normal build, # followed by a SANITIZE_TARGET=address build on top of it (in the same build # tree). By disabling this module in SANITIZE_TARGET build, we keep the regular, # uninstrumented version of it. # Bug: 22233158 ifeq (,$(filter address, $(SANITIZE_TARGET))) LOCAL_PATH := $(call my-dir) include art/build/Android.executable.mk DEX2OAT_SRC_FILES := \ dex2oat.cc # TODO: Remove this when the framework (installd) supports pushing the # right instruction-set parameter for the primary architecture. ifneq ($(filter ro.zygote=zygote64,$(PRODUCT_DEFAULT_PROPERTY_OVERRIDES)),) dex2oat_target_arch := 64 else dex2oat_target_arch := 32 endif ifeq ($(HOST_PREFER_32_BIT),true) # We need to explicitly restrict the host arch to 32-bit only, as # giving 'both' would make build-art-executable generate a build # rule for a 64-bit dex2oat executable too. dex2oat_host_arch := 32 else dex2oat_host_arch := both endif ifeq ($(ART_BUILD_TARGET_NDEBUG),true) $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libart-compiler libsigchain,art/compiler,target,ndebug,$(dex2oat_target_arch))) endif ifeq ($(ART_BUILD_TARGET_DEBUG),true) $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libartd-compiler libsigchain,art/compiler,target,debug,$(dex2oat_target_arch))) endif # Note: the order is important because of static linking resolution. DEX2OAT_STATIC_DEPENDENCIES := \ libziparchive-host \ libnativehelper \ libnativebridge \ libnativeloader \ libsigchain_dummy \ libvixl \ liblog \ libz \ libbacktrace \ libLLVMObject \ libLLVMBitReader \ libLLVMMC \ libLLVMMCParser \ libLLVMCore \ libLLVMSupport \ libcutils \ libunwindbacktrace \ libutils \ libbase \ liblz4 \ liblzma # We always build dex2oat and dependencies, even if the host build is otherwise disabled, since they are used to cross compile for the target. ifeq ($(ART_BUILD_HOST_NDEBUG),true) $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libart-compiler libsigchain libziparchive-host liblz4,art/compiler,host,ndebug,$(dex2oat_host_arch))) ifeq ($(ART_BUILD_HOST_STATIC),true) $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libart libart-compiler libart $(DEX2OAT_STATIC_DEPENDENCIES),art/compiler,host,ndebug,$(dex2oat_host_arch),static)) endif endif ifeq ($(ART_BUILD_HOST_DEBUG),true) $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libartd-compiler libsigchain libziparchive-host liblz4,art/compiler,host,debug,$(dex2oat_host_arch))) ifeq ($(ART_BUILD_HOST_STATIC),true) $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libartd libartd-compiler libartd $(DEX2OAT_STATIC_DEPENDENCIES),art/compiler,host,debug,$(dex2oat_host_arch),static)) endif endif # Clear locals now they've served their purpose. dex2oat_target_arch := dex2oat_host_arch := endif