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
17ifndef ART_ANDROID_COMMON_MK
18ART_ANDROID_COMMON_MK = true
19
20ART_TARGET_SUPPORTED_ARCH := arm arm64 x86 x86_64
21ART_HOST_SUPPORTED_ARCH := x86 x86_64
22ART_DEXPREOPT_BOOT_JAR_DIR := apex/com.android.art/javalib
23CONSCRYPT_DEXPREOPT_BOOT_JAR_DIR := apex/com.android.conscrypt/javalib
24
25ifneq ($(HOST_OS),darwin)
26  ART_HOST_SUPPORTED_ARCH := x86 x86_64
27else
28  # Mac OS doesn't support low-4GB allocation in a 64-bit process. So we won't be able to create
29  # our heaps.
30  ART_HOST_SUPPORTED_ARCH := x86
31endif
32
33ART_COVERAGE := false
34
35ifeq ($(ART_COVERAGE),true)
36# https://gcc.gnu.org/onlinedocs/gcc/Cross-profiling.html
37GCOV_PREFIX := /data/local/tmp/gcov
38# GCOV_PREFIX_STRIP is an integer that defines how many levels should be
39# stripped off the beginning of the path. We want the paths in $GCOV_PREFIX to
40# be relative to $ANDROID_BUILD_TOP so we can just adb pull from the top and not
41# have to worry about placing things ourselves.
42GCOV_PREFIX_STRIP := $(shell echo $(ANDROID_BUILD_TOP) | grep -o / | wc -l)
43GCOV_ENV := GCOV_PREFIX=$(GCOV_PREFIX) GCOV_PREFIX_STRIP=$(GCOV_PREFIX_STRIP)
44else
45GCOV_ENV :=
46endif
47
48ifeq (,$(filter $(TARGET_ARCH),$(ART_TARGET_SUPPORTED_ARCH)))
49$(warning unsupported TARGET_ARCH=$(TARGET_ARCH))
50endif
51ifeq (,$(filter $(HOST_ARCH),$(ART_HOST_SUPPORTED_ARCH)))
52$(warning unsupported HOST_ARCH=$(HOST_ARCH))
53endif
54
55# Primary vs. secondary
562ND_TARGET_ARCH := $(TARGET_2ND_ARCH)
57TARGET_INSTRUCTION_SET_FEATURES := $(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES)
582ND_TARGET_INSTRUCTION_SET_FEATURES := $($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES)
59ifdef TARGET_2ND_ARCH
60  ifneq ($(filter %64,$(TARGET_ARCH)),)
61    ART_PHONY_TEST_TARGET_SUFFIX := 64
62    2ND_ART_PHONY_TEST_TARGET_SUFFIX := 32
63  else
64    ART_PHONY_TEST_TARGET_SUFFIX := 32
65    2ND_ART_PHONY_TEST_TARGET_SUFFIX :=
66  endif
67else
68  ifneq ($(filter %64,$(TARGET_ARCH)),)
69    ART_PHONY_TEST_TARGET_SUFFIX := 64
70    2ND_ART_PHONY_TEST_TARGET_SUFFIX :=
71  else
72    ART_PHONY_TEST_TARGET_SUFFIX := 32
73    2ND_ART_PHONY_TEST_TARGET_SUFFIX :=
74  endif
75endif
76
77ART_HOST_SHLIB_EXTENSION := $(HOST_SHLIB_SUFFIX)
78ART_HOST_SHLIB_EXTENSION ?= .so
79ifeq ($(HOST_PREFER_32_BIT),true)
80  ART_PHONY_TEST_HOST_SUFFIX := 32
81  2ND_ART_PHONY_TEST_HOST_SUFFIX :=
82  ART_HOST_ARCH := x86
83  2ND_ART_HOST_ARCH :=
84  2ND_HOST_ARCH :=
85  ART_HOST_OUT_SHARED_LIBRARIES := $(2ND_HOST_OUT_SHARED_LIBRARIES)
86  2ND_ART_HOST_OUT_SHARED_LIBRARIES :=
87else
88  ART_PHONY_TEST_HOST_SUFFIX := 64
89  2ND_ART_PHONY_TEST_HOST_SUFFIX := 32
90  ART_HOST_ARCH := x86_64
91  2ND_ART_HOST_ARCH := x86
92  2ND_HOST_ARCH := x86
93  ART_HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT_SHARED_LIBRARIES)
94  2ND_ART_HOST_OUT_SHARED_LIBRARIES := $(2ND_HOST_OUT_SHARED_LIBRARIES)
95endif
96
97ADB_EXECUTABLE := $(HOST_OUT_EXECUTABLES)/adb
98ADB ?= $(ADB_EXECUTABLE)
99
100endif # ART_ANDROID_COMMON_MK
101