1# 2# Copyright (C) 2011 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 17# ASan slows down dex2oat by ~3.5x, which translates into extremely slow first 18# boot. Disabled to help speed up SANITIZE_TARGET mode. 19# The supported way of using SANITIZE_TARGET is by first running a normal build, 20# followed by a SANITIZE_TARGET=address build on top of it (in the same build 21# tree). By disabling this module in SANITIZE_TARGET build, we keep the regular, 22# uninstrumented version of it. 23# Bug: 22233158 24ifeq (,$(filter address, $(SANITIZE_TARGET))) 25 26LOCAL_PATH := $(call my-dir) 27 28include art/build/Android.executable.mk 29 30DEX2OAT_SRC_FILES := \ 31 dex2oat.cc 32 33# TODO: Remove this when the framework (installd) supports pushing the 34# right instruction-set parameter for the primary architecture. 35ifneq ($(filter ro.zygote=zygote64,$(PRODUCT_DEFAULT_PROPERTY_OVERRIDES)),) 36 dex2oat_target_arch := 64 37else 38 dex2oat_target_arch := 32 39endif 40 41ifeq ($(HOST_PREFER_32_BIT),true) 42 # We need to explicitly restrict the host arch to 32-bit only, as 43 # giving 'both' would make build-art-executable generate a build 44 # rule for a 64-bit dex2oat executable too. 45 dex2oat_host_arch := 32 46else 47 dex2oat_host_arch := both 48endif 49 50ifeq ($(ART_BUILD_TARGET_NDEBUG),true) 51 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libart-compiler libsigchain,art/compiler,target,ndebug,$(dex2oat_target_arch))) 52endif 53 54ifeq ($(ART_BUILD_TARGET_DEBUG),true) 55 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libartd-compiler libsigchain,art/compiler,target,debug,$(dex2oat_target_arch))) 56endif 57 58# Note: the order is important because of static linking resolution. 59DEX2OAT_STATIC_DEPENDENCIES := \ 60 libziparchive-host \ 61 libnativehelper \ 62 libnativebridge \ 63 libnativeloader \ 64 libsigchain_dummy \ 65 libvixl \ 66 liblog \ 67 libz \ 68 libbacktrace \ 69 libLLVMObject \ 70 libLLVMBitReader \ 71 libLLVMMC \ 72 libLLVMMCParser \ 73 libLLVMCore \ 74 libLLVMSupport \ 75 libcutils \ 76 libunwindbacktrace \ 77 libutils \ 78 libbase \ 79 liblz4 \ 80 liblzma 81 82# We always build dex2oat and dependencies, even if the host build is otherwise disabled, since they are used to cross compile for the target. 83ifeq ($(ART_BUILD_HOST_NDEBUG),true) 84 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libart-compiler libsigchain libziparchive-host liblz4,art/compiler,host,ndebug,$(dex2oat_host_arch))) 85 ifeq ($(ART_BUILD_HOST_STATIC),true) 86 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libart libart-compiler libart $(DEX2OAT_STATIC_DEPENDENCIES),art/compiler,host,ndebug,$(dex2oat_host_arch),static)) 87 endif 88endif 89 90ifeq ($(ART_BUILD_HOST_DEBUG),true) 91 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libartd-compiler libsigchain libziparchive-host liblz4,art/compiler,host,debug,$(dex2oat_host_arch))) 92 ifeq ($(ART_BUILD_HOST_STATIC),true) 93 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libartd libartd-compiler libartd $(DEX2OAT_STATIC_DEPENDENCIES),art/compiler,host,debug,$(dex2oat_host_arch),static)) 94 endif 95endif 96 97# Clear locals now they've served their purpose. 98dex2oat_target_arch := 99dex2oat_host_arch := 100 101endif 102