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 24 ifeq (,$(filter address, $(SANITIZE_TARGET))) 25 26 LOCAL_PATH := $(call my-dir) 27 28 include art/build/Android.executable.mk 29 30 DEX2OAT_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. 35 ifneq ($(filter ro.zygote=zygote64,$(PRODUCT_DEFAULT_PROPERTY_OVERRIDES)),) 36 dex2oat_target_arch := 64 37 else 38 dex2oat_target_arch := 32 39 endif 40 41 ifeq ($(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 46 else 47 dex2oat_host_arch := both 48 endif 49 50 ifeq ($(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))) 52 endif 53 54 ifeq ($(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))) 56 endif 57 58 # Note: the order is important because of static linking resolution. 59 DEX2OAT_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. 83 ifeq ($(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 88 endif 89 90 ifeq ($(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 95 endif 96 97 # Clear locals now they've served their purpose. 98 dex2oat_target_arch := 99 dex2oat_host_arch := 100 101 endif 102