blob: dfc379fdae272e1d2321278ee177fdbed4dc637a [file] [log] [blame]
Brian Carlstrom7940e442013-07-12 13:46:57 -07001#
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
Evgenii Stepanovc2f04742015-07-06 14:01:25 -070017# 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
Ivan Krasin33ddb742015-09-17 13:40:19 -070024ifeq (,$(filter address, $(SANITIZE_TARGET)))
Evgenii Stepanovc2f04742015-07-06 14:01:25 -070025
Brian Carlstrom7940e442013-07-12 13:46:57 -070026LOCAL_PATH := $(call my-dir)
27
28include art/build/Android.executable.mk
29
30DEX2OAT_SRC_FILES := \
31 dex2oat.cc
32
Andreas Gampe5a9cef82014-04-16 15:03:11 -070033# 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)),)
Nicolas Geoffray4a4dd702014-12-05 11:55:41 +000036 dex2oat_target_arch := 64
Andreas Gampe5a9cef82014-04-16 15:03:11 -070037else
Nicolas Geoffray4a4dd702014-12-05 11:55:41 +000038 dex2oat_target_arch := 32
39endif
40
Nicolas Geoffray4a4dd702014-12-05 11:55:41 +000041ifeq ($(HOST_PREFER_32_BIT),true)
Roland Levillain3045cfe2015-12-10 10:17:43 +000042 # 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.
Nicolas Geoffray4a4dd702014-12-05 11:55:41 +000045 dex2oat_host_arch := 32
46else
47 dex2oat_host_arch := both
Andreas Gampe5a9cef82014-04-16 15:03:11 -070048endif
49
Brian Carlstrom7940e442013-07-12 13:46:57 -070050ifeq ($(ART_BUILD_TARGET_NDEBUG),true)
Calin Juravle01aaf6e2015-06-19 22:05:39 +010051 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libart-compiler libsigchain,art/compiler,target,ndebug,$(dex2oat_target_arch)))
Brian Carlstrom7940e442013-07-12 13:46:57 -070052endif
Calin Juravle65e069d2015-06-08 10:35:24 +010053
Brian Carlstrom7940e442013-07-12 13:46:57 -070054ifeq ($(ART_BUILD_TARGET_DEBUG),true)
Calin Juravle01aaf6e2015-06-19 22:05:39 +010055 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libartd-compiler libsigchain,art/compiler,target,debug,$(dex2oat_target_arch)))
Brian Carlstrom7940e442013-07-12 13:46:57 -070056endif
57
Calin Juravledccd6752016-02-22 18:20:49 +000058# 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
Ian Rogersc5f17732014-06-05 20:48:42 -070082# We always build dex2oat and dependencies, even if the host build is otherwise disabled, since they are used to cross compile for the target.
Junmo Park03f92f42014-08-04 17:19:29 +090083ifeq ($(ART_BUILD_HOST_NDEBUG),true)
Mathieu Chartierceb07b32015-12-10 09:33:21 -080084 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libart-compiler libsigchain libziparchive-host liblz4,art/compiler,host,ndebug,$(dex2oat_host_arch)))
Calin Juravle65e069d2015-06-08 10:35:24 +010085 ifeq ($(ART_BUILD_HOST_STATIC),true)
Calin Juravledccd6752016-02-22 18:20:49 +000086 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libart libart-compiler libart $(DEX2OAT_STATIC_DEPENDENCIES),art/compiler,host,ndebug,$(dex2oat_host_arch),static))
Calin Juravle65e069d2015-06-08 10:35:24 +010087 endif
Ian Rogersc5f17732014-06-05 20:48:42 -070088endif
Calin Juravle65e069d2015-06-08 10:35:24 +010089
Junmo Park03f92f42014-08-04 17:19:29 +090090ifeq ($(ART_BUILD_HOST_DEBUG),true)
Mathieu Chartierceb07b32015-12-10 09:33:21 -080091 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libcutils libartd-compiler libsigchain libziparchive-host liblz4,art/compiler,host,debug,$(dex2oat_host_arch)))
Calin Juravle65e069d2015-06-08 10:35:24 +010092 ifeq ($(ART_BUILD_HOST_STATIC),true)
Calin Juravledccd6752016-02-22 18:20:49 +000093 $(eval $(call build-art-executable,dex2oat,$(DEX2OAT_SRC_FILES),libartd libartd-compiler libartd $(DEX2OAT_STATIC_DEPENDENCIES),art/compiler,host,debug,$(dex2oat_host_arch),static))
Calin Juravle65e069d2015-06-08 10:35:24 +010094 endif
Brian Carlstrom7940e442013-07-12 13:46:57 -070095endif
Evgenii Stepanovc2f04742015-07-06 14:01:25 -070096
Roland Levillain3045cfe2015-12-10 10:17:43 +000097# Clear locals now they've served their purpose.
98dex2oat_target_arch :=
99dex2oat_host_arch :=
100
Evgenii Stepanovc2f04742015-07-06 14:01:25 -0700101endif