Home | History | Annotate | Download | only in dex2oat
      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