Makefile文件  |  102行  |  3.66 KB

#
# 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