• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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