xref: /aosp_15_r20/art/Android.mk (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker#
2*795d594fSAndroid Build Coastguard Worker# Copyright (C) 2011 The Android Open Source Project
3*795d594fSAndroid Build Coastguard Worker#
4*795d594fSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
5*795d594fSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
6*795d594fSAndroid Build Coastguard Worker# You may obtain a copy of the License at
7*795d594fSAndroid Build Coastguard Worker#
8*795d594fSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
9*795d594fSAndroid Build Coastguard Worker#
10*795d594fSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
11*795d594fSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
12*795d594fSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*795d594fSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
14*795d594fSAndroid Build Coastguard Worker# limitations under the License.
15*795d594fSAndroid Build Coastguard Worker#
16*795d594fSAndroid Build Coastguard Worker
17*795d594fSAndroid Build Coastguard WorkerLOCAL_PATH := $(call my-dir)
18*795d594fSAndroid Build Coastguard Worker
19*795d594fSAndroid Build Coastguard Workerart_path := $(LOCAL_PATH)
20*795d594fSAndroid Build Coastguard Worker
21*795d594fSAndroid Build Coastguard Workerinclude $(art_path)/build/Android.common_path.mk
22*795d594fSAndroid Build Coastguard Worker
23*795d594fSAndroid Build Coastguard Worker########################################################################
24*795d594fSAndroid Build Coastguard Worker# cpplint rules to style check art source files
25*795d594fSAndroid Build Coastguard Worker
26*795d594fSAndroid Build Coastguard Workerinclude $(art_path)/build/Android.cpplint.mk
27*795d594fSAndroid Build Coastguard Worker
28*795d594fSAndroid Build Coastguard Worker########################################################################
29*795d594fSAndroid Build Coastguard Worker# product rules
30*795d594fSAndroid Build Coastguard Worker
31*795d594fSAndroid Build Coastguard Workerinclude $(art_path)/tools/ahat/Android.mk
32*795d594fSAndroid Build Coastguard Worker
33*795d594fSAndroid Build Coastguard WorkerART_HOST_DEPENDENCIES := \
34*795d594fSAndroid Build Coastguard Worker  $(ART_HOST_EXECUTABLES) \
35*795d594fSAndroid Build Coastguard Worker  $(ART_HOST_DEX_DEPENDENCIES) \
36*795d594fSAndroid Build Coastguard Worker  $(ART_HOST_SHARED_LIBRARY_DEPENDENCIES)
37*795d594fSAndroid Build Coastguard Worker
38*795d594fSAndroid Build Coastguard Workerifeq ($(ART_BUILD_HOST_DEBUG),true)
39*795d594fSAndroid Build Coastguard WorkerART_HOST_DEPENDENCIES += $(ART_HOST_SHARED_LIBRARY_DEBUG_DEPENDENCIES)
40*795d594fSAndroid Build Coastguard Workerendif
41*795d594fSAndroid Build Coastguard Worker
42*795d594fSAndroid Build Coastguard WorkerART_TARGET_DEPENDENCIES := \
43*795d594fSAndroid Build Coastguard Worker  $(ART_TARGET_DEX_DEPENDENCIES)
44*795d594fSAndroid Build Coastguard Worker
45*795d594fSAndroid Build Coastguard Worker########################################################################
46*795d594fSAndroid Build Coastguard Worker# test rules
47*795d594fSAndroid Build Coastguard Worker
48*795d594fSAndroid Build Coastguard Worker# All the dependencies that must be built ahead of sync-ing them onto the target device.
49*795d594fSAndroid Build Coastguard WorkerTEST_ART_TARGET_SYNC_DEPS := $(ADB_EXECUTABLE)
50*795d594fSAndroid Build Coastguard Worker
51*795d594fSAndroid Build Coastguard Workerinclude $(art_path)/build/Android.common_test.mk
52*795d594fSAndroid Build Coastguard Workerinclude $(art_path)/build/Android.gtest.mk
53*795d594fSAndroid Build Coastguard Workerinclude $(art_path)/test/Android.run-test.mk
54*795d594fSAndroid Build Coastguard Worker
55*795d594fSAndroid Build Coastguard WorkerTEST_ART_TARGET_SYNC_DEPS += $(ART_TEST_TARGET_GTEST_DEPENDENCIES) $(ART_TEST_TARGET_RUN_TEST_DEPENDENCIES)
56*795d594fSAndroid Build Coastguard Worker
57*795d594fSAndroid Build Coastguard Worker# "mm test-art" to build and run all tests on host and device
58*795d594fSAndroid Build Coastguard Worker.PHONY: test-art
59*795d594fSAndroid Build Coastguard Workertest-art:
60*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
61*795d594fSAndroid Build Coastguard Worker
62*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-gtest
63*795d594fSAndroid Build Coastguard Workertest-art-gtest:
64*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
65*795d594fSAndroid Build Coastguard Worker
66*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-run-test
67*795d594fSAndroid Build Coastguard Workertest-art-run-test:
68*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
69*795d594fSAndroid Build Coastguard Worker
70*795d594fSAndroid Build Coastguard Worker########################################################################
71*795d594fSAndroid Build Coastguard Worker# host test rules
72*795d594fSAndroid Build Coastguard Worker
73*795d594fSAndroid Build Coastguard Workertest-art: test-art-host
74*795d594fSAndroid Build Coastguard Workertest-art-gtest: test-art-host-gtest
75*795d594fSAndroid Build Coastguard Workertest-art-run-test: test-art-host-run-test
76*795d594fSAndroid Build Coastguard Worker
77*795d594fSAndroid Build Coastguard WorkerVIXL_TEST_DEPENDENCY :=
78*795d594fSAndroid Build Coastguard Worker# We can only run the vixl tests on 64-bit hosts (vixl testing issue) when its a
79*795d594fSAndroid Build Coastguard Worker# top-level build (to declare the vixl test rule).
80*795d594fSAndroid Build Coastguard Workerifneq ($(HOST_PREFER_32_BIT),true)
81*795d594fSAndroid Build Coastguard Workerifeq ($(ONE_SHOT_MAKEFILE),)
82*795d594fSAndroid Build Coastguard WorkerVIXL_TEST_DEPENDENCY := run-vixl-tests
83*795d594fSAndroid Build Coastguard Workerendif
84*795d594fSAndroid Build Coastguard Workerendif
85*795d594fSAndroid Build Coastguard Worker
86*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-vixl
87*795d594fSAndroid Build Coastguard Workertest-art-host-vixl: $(VIXL_TEST_DEPENDENCY)
88*795d594fSAndroid Build Coastguard Worker
89*795d594fSAndroid Build Coastguard Worker# "mm test-art-host" to build and run all host tests.
90*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host
91*795d594fSAndroid Build Coastguard Workertest-art-host: test-art-host-gtest test-art-host-run-test \
92*795d594fSAndroid Build Coastguard Worker               test-art-host-vixl test-art-host-dexdump
93*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
94*795d594fSAndroid Build Coastguard Worker
95*795d594fSAndroid Build Coastguard Worker# All host tests that run solely with the default compiler.
96*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-default
97*795d594fSAndroid Build Coastguard Workertest-art-host-default: test-art-host-run-test-default
98*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
99*795d594fSAndroid Build Coastguard Worker
100*795d594fSAndroid Build Coastguard Worker# All host tests that run solely with the optimizing compiler.
101*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-optimizing
102*795d594fSAndroid Build Coastguard Workertest-art-host-optimizing: test-art-host-run-test-optimizing
103*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
104*795d594fSAndroid Build Coastguard Worker
105*795d594fSAndroid Build Coastguard Worker# All host tests that run solely on the interpreter.
106*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-interpreter
107*795d594fSAndroid Build Coastguard Workertest-art-host-interpreter: test-art-host-run-test-interpreter
108*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
109*795d594fSAndroid Build Coastguard Worker
110*795d594fSAndroid Build Coastguard Worker# All host tests that run solely on the jit.
111*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-jit
112*795d594fSAndroid Build Coastguard Workertest-art-host-jit: test-art-host-run-test-jit
113*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
114*795d594fSAndroid Build Coastguard Worker
115*795d594fSAndroid Build Coastguard Worker# Primary host architecture variants:
116*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host$(ART_PHONY_TEST_HOST_SUFFIX)
117*795d594fSAndroid Build Coastguard Workertest-art-host$(ART_PHONY_TEST_HOST_SUFFIX): test-art-host-gtest$(ART_PHONY_TEST_HOST_SUFFIX) \
118*795d594fSAndroid Build Coastguard Worker    test-art-host-run-test$(ART_PHONY_TEST_HOST_SUFFIX)
119*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
120*795d594fSAndroid Build Coastguard Worker
121*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-default$(ART_PHONY_TEST_HOST_SUFFIX)
122*795d594fSAndroid Build Coastguard Workertest-art-host-default$(ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-default$(ART_PHONY_TEST_HOST_SUFFIX)
123*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
124*795d594fSAndroid Build Coastguard Worker
125*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-optimizing$(ART_PHONY_TEST_HOST_SUFFIX)
126*795d594fSAndroid Build Coastguard Workertest-art-host-optimizing$(ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-optimizing$(ART_PHONY_TEST_HOST_SUFFIX)
127*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
128*795d594fSAndroid Build Coastguard Worker
129*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-interpreter$(ART_PHONY_TEST_HOST_SUFFIX)
130*795d594fSAndroid Build Coastguard Workertest-art-host-interpreter$(ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-interpreter$(ART_PHONY_TEST_HOST_SUFFIX)
131*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
132*795d594fSAndroid Build Coastguard Worker
133*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-jit$(ART_PHONY_TEST_HOST_SUFFIX)
134*795d594fSAndroid Build Coastguard Workertest-art-host-jit$(ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-jit$(ART_PHONY_TEST_HOST_SUFFIX)
135*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
136*795d594fSAndroid Build Coastguard Worker
137*795d594fSAndroid Build Coastguard Worker# Secondary host architecture variants:
138*795d594fSAndroid Build Coastguard Workerifneq ($(HOST_PREFER_32_BIT),true)
139*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host$(2ND_ART_PHONY_TEST_HOST_SUFFIX)
140*795d594fSAndroid Build Coastguard Workertest-art-host$(2ND_ART_PHONY_TEST_HOST_SUFFIX): test-art-host-gtest$(2ND_ART_PHONY_TEST_HOST_SUFFIX) \
141*795d594fSAndroid Build Coastguard Worker    test-art-host-run-test$(2ND_ART_PHONY_TEST_HOST_SUFFIX)
142*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
143*795d594fSAndroid Build Coastguard Worker
144*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX)
145*795d594fSAndroid Build Coastguard Workertest-art-host-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-default$(2ND_ART_PHONY_TEST_HOST_SUFFIX)
146*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
147*795d594fSAndroid Build Coastguard Worker
148*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX)
149*795d594fSAndroid Build Coastguard Workertest-art-host-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-optimizing$(2ND_ART_PHONY_TEST_HOST_SUFFIX)
150*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
151*795d594fSAndroid Build Coastguard Worker
152*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX)
153*795d594fSAndroid Build Coastguard Workertest-art-host-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-interpreter$(2ND_ART_PHONY_TEST_HOST_SUFFIX)
154*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
155*795d594fSAndroid Build Coastguard Worker
156*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-jit$(2ND_ART_PHONY_TEST_HOST_SUFFIX)
157*795d594fSAndroid Build Coastguard Workertest-art-host-jit$(2ND_ART_PHONY_TEST_HOST_SUFFIX): test-art-host-run-test-jit$(2ND_ART_PHONY_TEST_HOST_SUFFIX)
158*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
159*795d594fSAndroid Build Coastguard Workerendif
160*795d594fSAndroid Build Coastguard Worker
161*795d594fSAndroid Build Coastguard Worker# Dexdump/list regression test.
162*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-host-dexdump
163*795d594fSAndroid Build Coastguard Workertest-art-host-dexdump: $(addprefix $(HOST_OUT_EXECUTABLES)/, dexdump dexlist)
164*795d594fSAndroid Build Coastguard Worker	ANDROID_HOST_OUT=$(realpath $(HOST_OUT)) art/test/dexdump/run-all-tests
165*795d594fSAndroid Build Coastguard Worker
166*795d594fSAndroid Build Coastguard Worker########################################################################
167*795d594fSAndroid Build Coastguard Worker# target test rules
168*795d594fSAndroid Build Coastguard Worker
169*795d594fSAndroid Build Coastguard Workertest-art: test-art-target
170*795d594fSAndroid Build Coastguard Workertest-art-gtest: test-art-target-gtest
171*795d594fSAndroid Build Coastguard Workertest-art-run-test: test-art-target-run-test
172*795d594fSAndroid Build Coastguard Worker
173*795d594fSAndroid Build Coastguard Worker# "mm test-art-target" to build and run all target tests.
174*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target
175*795d594fSAndroid Build Coastguard Workertest-art-target: test-art-target-gtest test-art-target-run-test
176*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
177*795d594fSAndroid Build Coastguard Worker
178*795d594fSAndroid Build Coastguard Worker# All target tests that run solely with the default compiler.
179*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-default
180*795d594fSAndroid Build Coastguard Workertest-art-target-default: test-art-target-run-test-default
181*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
182*795d594fSAndroid Build Coastguard Worker
183*795d594fSAndroid Build Coastguard Worker# All target tests that run solely with the optimizing compiler.
184*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-optimizing
185*795d594fSAndroid Build Coastguard Workertest-art-target-optimizing: test-art-target-run-test-optimizing
186*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
187*795d594fSAndroid Build Coastguard Worker
188*795d594fSAndroid Build Coastguard Worker# All target tests that run solely on the interpreter.
189*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-interpreter
190*795d594fSAndroid Build Coastguard Workertest-art-target-interpreter: test-art-target-run-test-interpreter
191*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
192*795d594fSAndroid Build Coastguard Worker
193*795d594fSAndroid Build Coastguard Worker# All target tests that run solely on the jit.
194*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-jit
195*795d594fSAndroid Build Coastguard Workertest-art-target-jit: test-art-target-run-test-jit
196*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
197*795d594fSAndroid Build Coastguard Worker
198*795d594fSAndroid Build Coastguard Worker# Primary target architecture variants:
199*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target$(ART_PHONY_TEST_TARGET_SUFFIX)
200*795d594fSAndroid Build Coastguard Workertest-art-target$(ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-gtest$(ART_PHONY_TEST_TARGET_SUFFIX) \
201*795d594fSAndroid Build Coastguard Worker    test-art-target-run-test$(ART_PHONY_TEST_TARGET_SUFFIX)
202*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
203*795d594fSAndroid Build Coastguard Worker
204*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-default$(ART_PHONY_TEST_TARGET_SUFFIX)
205*795d594fSAndroid Build Coastguard Workertest-art-target-default$(ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-default$(ART_PHONY_TEST_TARGET_SUFFIX)
206*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
207*795d594fSAndroid Build Coastguard Worker
208*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX)
209*795d594fSAndroid Build Coastguard Workertest-art-target-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-optimizing$(ART_PHONY_TEST_TARGET_SUFFIX)
210*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
211*795d594fSAndroid Build Coastguard Worker
212*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX)
213*795d594fSAndroid Build Coastguard Workertest-art-target-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-interpreter$(ART_PHONY_TEST_TARGET_SUFFIX)
214*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
215*795d594fSAndroid Build Coastguard Worker
216*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-jit$(ART_PHONY_TEST_TARGET_SUFFIX)
217*795d594fSAndroid Build Coastguard Workertest-art-target-jit$(ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-jit$(ART_PHONY_TEST_TARGET_SUFFIX)
218*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
219*795d594fSAndroid Build Coastguard Worker
220*795d594fSAndroid Build Coastguard Worker# Secondary target architecture variants:
221*795d594fSAndroid Build Coastguard Workerifdef 2ND_ART_PHONY_TEST_TARGET_SUFFIX
222*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
223*795d594fSAndroid Build Coastguard Workertest-art-target$(2ND_ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-gtest$(2ND_ART_PHONY_TEST_TARGET_SUFFIX) \
224*795d594fSAndroid Build Coastguard Worker    test-art-target-run-test$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
225*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
226*795d594fSAndroid Build Coastguard Worker
227*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
228*795d594fSAndroid Build Coastguard Workertest-art-target-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-default$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
229*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
230*795d594fSAndroid Build Coastguard Worker
231*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
232*795d594fSAndroid Build Coastguard Workertest-art-target-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-optimizing$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
233*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
234*795d594fSAndroid Build Coastguard Worker
235*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
236*795d594fSAndroid Build Coastguard Workertest-art-target-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-interpreter$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
237*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
238*795d594fSAndroid Build Coastguard Worker
239*795d594fSAndroid Build Coastguard Worker.PHONY: test-art-target-jit$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
240*795d594fSAndroid Build Coastguard Workertest-art-target-jit$(2ND_ART_PHONY_TEST_TARGET_SUFFIX): test-art-target-run-test-jit$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)
241*795d594fSAndroid Build Coastguard Worker	$(hide) $(call ART_TEST_PREREQ_FINISHED,$@)
242*795d594fSAndroid Build Coastguard Workerendif
243*795d594fSAndroid Build Coastguard Worker
244*795d594fSAndroid Build Coastguard Worker#######################
245*795d594fSAndroid Build Coastguard Worker# Reset LOCAL_PATH because previous includes may override its value.
246*795d594fSAndroid Build Coastguard Worker# Keep this after all "include $(art_path)/..." are done, and before any
247*795d594fSAndroid Build Coastguard Worker# "include $(BUILD_...)".
248*795d594fSAndroid Build Coastguard WorkerLOCAL_PATH := $(art_path)
249*795d594fSAndroid Build Coastguard Worker
250*795d594fSAndroid Build Coastguard Worker########################################################################
251*795d594fSAndroid Build Coastguard Worker# "m build-art" for quick minimal build
252*795d594fSAndroid Build Coastguard Worker.PHONY: build-art
253*795d594fSAndroid Build Coastguard Worker
254*795d594fSAndroid Build Coastguard Workerbuild-art: build-art-host
255*795d594fSAndroid Build Coastguard Worker
256*795d594fSAndroid Build Coastguard Worker# For host, we extract the ICU data from the apex and install it to HOST_OUT/I18N_APEX.
257*795d594fSAndroid Build Coastguard Worker$(HOST_I18N_DATA): $(TARGET_OUT)/apex/$(I18N_APEX).apex $(HOST_OUT)/bin/deapexer
258*795d594fSAndroid Build Coastguard Worker	$(call extract-from-apex,$(I18N_APEX))
259*795d594fSAndroid Build Coastguard Worker	rm -rf $(HOST_OUT)/$(I18N_APEX)
260*795d594fSAndroid Build Coastguard Worker	mkdir -p $(HOST_OUT)/$(I18N_APEX)/
261*795d594fSAndroid Build Coastguard Worker	cp -R $(TARGET_OUT)/apex/$(I18N_APEX)/etc/ $(HOST_OUT)/$(I18N_APEX)/
262*795d594fSAndroid Build Coastguard Worker	touch $@
263*795d594fSAndroid Build Coastguard Worker
264*795d594fSAndroid Build Coastguard Worker$(HOST_TZDATA_DATA): $(TARGET_OUT)/apex/$(TZDATA_APEX).apex $(HOST_OUT)/bin/deapexer
265*795d594fSAndroid Build Coastguard Worker	$(call extract-from-apex,$(TZDATA_APEX))
266*795d594fSAndroid Build Coastguard Worker	rm -rf $(HOST_OUT)/$(TZDATA_APEX)
267*795d594fSAndroid Build Coastguard Worker	mkdir -p $(HOST_OUT)/$(TZDATA_APEX)/
268*795d594fSAndroid Build Coastguard Worker	cp -R $(TARGET_OUT)/apex/$(TZDATA_APEX)/etc/ $(HOST_OUT)/$(TZDATA_APEX)/
269*795d594fSAndroid Build Coastguard Worker	touch $@
270*795d594fSAndroid Build Coastguard Worker
271*795d594fSAndroid Build Coastguard Worker.PHONY: build-art-host
272*795d594fSAndroid Build Coastguard Workerbuild-art-host:   $(HOST_OUT_EXECUTABLES)/art $(ART_HOST_DEPENDENCIES) $(HOST_CORE_IMG_OUTS) $(HOST_I18N_DATA) $(HOST_TZDATA_DATA)
273*795d594fSAndroid Build Coastguard Worker
274*795d594fSAndroid Build Coastguard Workerbuild-art: build-art-target
275*795d594fSAndroid Build Coastguard Worker
276*795d594fSAndroid Build Coastguard Worker.PHONY: build-art-target
277*795d594fSAndroid Build Coastguard Workerbuild-art-target: $(TARGET_OUT_EXECUTABLES)/art $(ART_TARGET_DEPENDENCIES) $(TARGET_CORE_IMG_OUTS)
278*795d594fSAndroid Build Coastguard Worker
279*795d594fSAndroid Build Coastguard WorkerPRIVATE_ART_APEX_DEPENDENCY_FILES := \
280*795d594fSAndroid Build Coastguard Worker  bin/dalvikvm32 \
281*795d594fSAndroid Build Coastguard Worker  bin/dalvikvm64 \
282*795d594fSAndroid Build Coastguard Worker  bin/dalvikvm \
283*795d594fSAndroid Build Coastguard Worker  bin/dex2oat32 \
284*795d594fSAndroid Build Coastguard Worker  bin/dex2oat64 \
285*795d594fSAndroid Build Coastguard Worker  bin/dexdump \
286*795d594fSAndroid Build Coastguard Worker
287*795d594fSAndroid Build Coastguard WorkerPRIVATE_ART_APEX_DEPENDENCY_LIBS := \
288*795d594fSAndroid Build Coastguard Worker  lib/libadbconnection.so \
289*795d594fSAndroid Build Coastguard Worker  lib/libandroidio.so \
290*795d594fSAndroid Build Coastguard Worker  lib/libartbase.so \
291*795d594fSAndroid Build Coastguard Worker  lib/libart-dexlayout.so \
292*795d594fSAndroid Build Coastguard Worker  lib/libart-disassembler.so \
293*795d594fSAndroid Build Coastguard Worker  lib/libartpalette.so \
294*795d594fSAndroid Build Coastguard Worker  lib/libart.so \
295*795d594fSAndroid Build Coastguard Worker  lib/libdexfile.so \
296*795d594fSAndroid Build Coastguard Worker  lib/libdt_fd_forward.so \
297*795d594fSAndroid Build Coastguard Worker  lib/libdt_socket.so \
298*795d594fSAndroid Build Coastguard Worker  lib/libexpat.so \
299*795d594fSAndroid Build Coastguard Worker  lib/libjavacore.so \
300*795d594fSAndroid Build Coastguard Worker  lib/libjdwp.so \
301*795d594fSAndroid Build Coastguard Worker  lib/liblzma.so \
302*795d594fSAndroid Build Coastguard Worker  lib/libmeminfo.so \
303*795d594fSAndroid Build Coastguard Worker  lib/libnativebridge.so \
304*795d594fSAndroid Build Coastguard Worker  lib/libnativehelper.so \
305*795d594fSAndroid Build Coastguard Worker  lib/libnativeloader.so \
306*795d594fSAndroid Build Coastguard Worker  lib/libnpt.so \
307*795d594fSAndroid Build Coastguard Worker  lib/libopenjdkjvm.so \
308*795d594fSAndroid Build Coastguard Worker  lib/libopenjdkjvmti.so \
309*795d594fSAndroid Build Coastguard Worker  lib/libopenjdk.so \
310*795d594fSAndroid Build Coastguard Worker  lib/libpac.so \
311*795d594fSAndroid Build Coastguard Worker  lib/libprocinfo.so \
312*795d594fSAndroid Build Coastguard Worker  lib/libprofile.so \
313*795d594fSAndroid Build Coastguard Worker  lib/libsigchain.so \
314*795d594fSAndroid Build Coastguard Worker  lib/libunwindstack.so \
315*795d594fSAndroid Build Coastguard Worker  lib64/libadbconnection.so \
316*795d594fSAndroid Build Coastguard Worker  lib64/libandroidio.so \
317*795d594fSAndroid Build Coastguard Worker  lib64/libartbase.so \
318*795d594fSAndroid Build Coastguard Worker  lib64/libart-dexlayout.so \
319*795d594fSAndroid Build Coastguard Worker  lib64/libart-disassembler.so \
320*795d594fSAndroid Build Coastguard Worker  lib64/libartpalette.so \
321*795d594fSAndroid Build Coastguard Worker  lib64/libart.so \
322*795d594fSAndroid Build Coastguard Worker  lib64/libdexfile.so \
323*795d594fSAndroid Build Coastguard Worker  lib64/libdt_fd_forward.so \
324*795d594fSAndroid Build Coastguard Worker  lib64/libdt_socket.so \
325*795d594fSAndroid Build Coastguard Worker  lib64/libexpat.so \
326*795d594fSAndroid Build Coastguard Worker  lib64/libjavacore.so \
327*795d594fSAndroid Build Coastguard Worker  lib64/libjdwp.so \
328*795d594fSAndroid Build Coastguard Worker  lib64/liblzma.so \
329*795d594fSAndroid Build Coastguard Worker  lib64/libmeminfo.so \
330*795d594fSAndroid Build Coastguard Worker  lib64/libnativebridge.so \
331*795d594fSAndroid Build Coastguard Worker  lib64/libnativehelper.so \
332*795d594fSAndroid Build Coastguard Worker  lib64/libnativeloader.so \
333*795d594fSAndroid Build Coastguard Worker  lib64/libnpt.so \
334*795d594fSAndroid Build Coastguard Worker  lib64/libopenjdkjvm.so \
335*795d594fSAndroid Build Coastguard Worker  lib64/libopenjdkjvmti.so \
336*795d594fSAndroid Build Coastguard Worker  lib64/libopenjdk.so \
337*795d594fSAndroid Build Coastguard Worker  lib64/libpac.so \
338*795d594fSAndroid Build Coastguard Worker  lib64/libprocinfo.so \
339*795d594fSAndroid Build Coastguard Worker  lib64/libprofile.so \
340*795d594fSAndroid Build Coastguard Worker  lib64/libsigchain.so \
341*795d594fSAndroid Build Coastguard Worker  lib64/libunwindstack.so \
342*795d594fSAndroid Build Coastguard Worker
343*795d594fSAndroid Build Coastguard WorkerPRIVATE_RUNTIME_APEX_DEPENDENCY_FILES := \
344*795d594fSAndroid Build Coastguard Worker  bin/linker \
345*795d594fSAndroid Build Coastguard Worker  bin/linker64 \
346*795d594fSAndroid Build Coastguard Worker  lib/bionic/libc.so \
347*795d594fSAndroid Build Coastguard Worker  lib/bionic/libdl.so \
348*795d594fSAndroid Build Coastguard Worker  lib/bionic/libdl_android.so \
349*795d594fSAndroid Build Coastguard Worker  lib/bionic/libm.so \
350*795d594fSAndroid Build Coastguard Worker  lib64/bionic/libc.so \
351*795d594fSAndroid Build Coastguard Worker  lib64/bionic/libdl.so \
352*795d594fSAndroid Build Coastguard Worker  lib64/bionic/libdl_android.so \
353*795d594fSAndroid Build Coastguard Worker  lib64/bionic/libm.so \
354*795d594fSAndroid Build Coastguard Worker
355*795d594fSAndroid Build Coastguard WorkerPRIVATE_CONSCRYPT_APEX_DEPENDENCY_LIBS := \
356*795d594fSAndroid Build Coastguard Worker  lib/libcrypto.so \
357*795d594fSAndroid Build Coastguard Worker  lib/libjavacrypto.so \
358*795d594fSAndroid Build Coastguard Worker  lib/libssl.so \
359*795d594fSAndroid Build Coastguard Worker  lib64/libcrypto.so \
360*795d594fSAndroid Build Coastguard Worker  lib64/libjavacrypto.so \
361*795d594fSAndroid Build Coastguard Worker  lib64/libssl.so \
362*795d594fSAndroid Build Coastguard Worker
363*795d594fSAndroid Build Coastguard WorkerPRIVATE_I18N_APEX_DEPENDENCY_LIBS := \
364*795d594fSAndroid Build Coastguard Worker  lib/libicu.so \
365*795d594fSAndroid Build Coastguard Worker  lib/libicui18n.so \
366*795d594fSAndroid Build Coastguard Worker  lib/libicu_jni.so \
367*795d594fSAndroid Build Coastguard Worker  lib/libicuuc.so \
368*795d594fSAndroid Build Coastguard Worker  lib64/libicu.so \
369*795d594fSAndroid Build Coastguard Worker  lib64/libicui18n.so \
370*795d594fSAndroid Build Coastguard Worker  lib64/libicu_jni.so \
371*795d594fSAndroid Build Coastguard Worker  lib64/libicuuc.so \
372*795d594fSAndroid Build Coastguard Worker
373*795d594fSAndroid Build Coastguard WorkerPRIVATE_STATSD_APEX_DEPENDENCY_LIBS := \
374*795d594fSAndroid Build Coastguard Worker  lib/libstatspull.so \
375*795d594fSAndroid Build Coastguard Worker  lib/libstatssocket.so \
376*795d594fSAndroid Build Coastguard Worker  lib64/libstatspull.so \
377*795d594fSAndroid Build Coastguard Worker  lib64/libstatssocket.so \
378*795d594fSAndroid Build Coastguard Worker
379*795d594fSAndroid Build Coastguard Worker# Extracts files from an APEX into a location. The APEX can be either a .apex or
380*795d594fSAndroid Build Coastguard Worker# .capex file in $(TARGET_OUT)/apex, or a directory in the same location. Files
381*795d594fSAndroid Build Coastguard Worker# are extracted to $(TARGET_OUT) with the same relative paths as under the APEX
382*795d594fSAndroid Build Coastguard Worker# root.
383*795d594fSAndroid Build Coastguard Worker# $(1): APEX base name
384*795d594fSAndroid Build Coastguard Worker# $(2): List of files to extract, with paths relative to the APEX root
385*795d594fSAndroid Build Coastguard Worker#
386*795d594fSAndroid Build Coastguard Worker# "cp -d" below doesn't work on Darwin, but this is only used for Golem builds
387*795d594fSAndroid Build Coastguard Worker# and won't run on mac anyway.
388*795d594fSAndroid Build Coastguard Workerdefine extract-from-apex
389*795d594fSAndroid Build Coastguard Worker  apex_root=$(TARGET_OUT)/apex && \
390*795d594fSAndroid Build Coastguard Worker  apex_file=$$apex_root/$(1).apex && \
391*795d594fSAndroid Build Coastguard Worker  apex_dir=$$apex_root/$(1) && \
392*795d594fSAndroid Build Coastguard Worker  if [ ! -f $$apex_file ]; then \
393*795d594fSAndroid Build Coastguard Worker    apex_file=$$apex_root/$(1).capex; \
394*795d594fSAndroid Build Coastguard Worker  fi && \
395*795d594fSAndroid Build Coastguard Worker  if [ -f $$apex_file ]; then \
396*795d594fSAndroid Build Coastguard Worker    rm -rf $$apex_dir && \
397*795d594fSAndroid Build Coastguard Worker    mkdir -p $$apex_dir && \
398*795d594fSAndroid Build Coastguard Worker    debugfs=$(HOST_OUT)/bin/debugfs_static && \
399*795d594fSAndroid Build Coastguard Worker    fsckerofs=$(HOST_OUT)/bin/fsck.erofs && \
400*795d594fSAndroid Build Coastguard Worker    $(HOST_OUT)/bin/deapexer --debugfs_path $$debugfs \
401*795d594fSAndroid Build Coastguard Worker		--fsckerofs_path $$fsckerofs extract $$apex_file $$apex_dir; \
402*795d594fSAndroid Build Coastguard Worker  fi && \
403*795d594fSAndroid Build Coastguard Worker  for f in $(2); do \
404*795d594fSAndroid Build Coastguard Worker    sf=$$apex_dir/$$f && \
405*795d594fSAndroid Build Coastguard Worker    df=$(TARGET_OUT)/$$f && \
406*795d594fSAndroid Build Coastguard Worker    if [ -f $$sf -o -h $$sf ]; then \
407*795d594fSAndroid Build Coastguard Worker      mkdir -p $$(dirname $$df) && \
408*795d594fSAndroid Build Coastguard Worker      cp -fd $$sf $$df; \
409*795d594fSAndroid Build Coastguard Worker    fi || exit 1; \
410*795d594fSAndroid Build Coastguard Worker  done
411*795d594fSAndroid Build Coastguard Workerendef
412*795d594fSAndroid Build Coastguard Worker
413*795d594fSAndroid Build Coastguard Worker# Copy or extract some required files from APEXes to the `system` (TARGET_OUT)
414*795d594fSAndroid Build Coastguard Worker# directory. This is dangerous as these files could inadvertently stay in this
415*795d594fSAndroid Build Coastguard Worker# directory and be included in a system image.
416*795d594fSAndroid Build Coastguard Worker#
417*795d594fSAndroid Build Coastguard Worker# This target is only used by Golem now.
418*795d594fSAndroid Build Coastguard Worker#
419*795d594fSAndroid Build Coastguard Worker# NB Android build does not use cp from:
420*795d594fSAndroid Build Coastguard Worker#  $ANDROID_BUILD_TOP/prebuilts/build-tools/path/{linux-x86,darwin-x86}
421*795d594fSAndroid Build Coastguard Worker# which has a non-standard set of command-line flags.
422*795d594fSAndroid Build Coastguard Worker#
423*795d594fSAndroid Build Coastguard Worker# TODO(b/129332183): Remove this when Golem has full support for the
424*795d594fSAndroid Build Coastguard Worker# ART APEX.
425*795d594fSAndroid Build Coastguard Worker#
426*795d594fSAndroid Build Coastguard Worker# TODO(b/129332183): This approach is flawed: We mix DSOs from prebuilt APEXes
427*795d594fSAndroid Build Coastguard Worker# with source built ones, and some of them don't have stable ABIs. libbase.so in
428*795d594fSAndroid Build Coastguard Worker# particular is such a problematic dependency. When those dependencies
429*795d594fSAndroid Build Coastguard Worker# eventually don't work anymore we don't have much choice but to update all
430*795d594fSAndroid Build Coastguard Worker# prebuilts.
431*795d594fSAndroid Build Coastguard Worker.PHONY: standalone-apex-files
432*795d594fSAndroid Build Coastguard Workerstandalone-apex-files: deapexer \
433*795d594fSAndroid Build Coastguard Worker                       $(RELEASE_ART_APEX) \
434*795d594fSAndroid Build Coastguard Worker                       $(RUNTIME_APEX) \
435*795d594fSAndroid Build Coastguard Worker                       $(CONSCRYPT_APEX) \
436*795d594fSAndroid Build Coastguard Worker                       $(I18N_APEX) \
437*795d594fSAndroid Build Coastguard Worker                       $(STATSD_APEX) \
438*795d594fSAndroid Build Coastguard Worker                       $(TZDATA_APEX) \
439*795d594fSAndroid Build Coastguard Worker                       $(HOST_OUT)/bin/generate-boot-image64 \
440*795d594fSAndroid Build Coastguard Worker                       $(HOST_OUT)/bin/dex2oat64 \
441*795d594fSAndroid Build Coastguard Worker                       libartpalette_fake \
442*795d594fSAndroid Build Coastguard Worker                       art_fake_heapprofd_client_api
443*795d594fSAndroid Build Coastguard Worker	$(call extract-from-apex,$(RELEASE_ART_APEX),\
444*795d594fSAndroid Build Coastguard Worker	  $(PRIVATE_ART_APEX_DEPENDENCY_LIBS) $(PRIVATE_ART_APEX_DEPENDENCY_FILES))
445*795d594fSAndroid Build Coastguard Worker	# The Runtime APEX has the Bionic libs in ${LIB}/bionic subdirectories,
446*795d594fSAndroid Build Coastguard Worker	# so we need to move them up a level after extraction.
447*795d594fSAndroid Build Coastguard Worker	# Also, copy fake platform libraries.
448*795d594fSAndroid Build Coastguard Worker	$(call extract-from-apex,$(RUNTIME_APEX),\
449*795d594fSAndroid Build Coastguard Worker	  $(PRIVATE_RUNTIME_APEX_DEPENDENCY_FILES)) && \
450*795d594fSAndroid Build Coastguard Worker	  libdir=$(TARGET_OUT)/lib$$(expr $(TARGET_ARCH) : '.*\(64\)' || :) && \
451*795d594fSAndroid Build Coastguard Worker	  if [ -d $$libdir/bionic ]; then \
452*795d594fSAndroid Build Coastguard Worker	    mv -f $$libdir/bionic/*.so $$libdir; \
453*795d594fSAndroid Build Coastguard Worker	  fi && \
454*795d594fSAndroid Build Coastguard Worker	  cp $$libdir/art_fake/*.so $$libdir
455*795d594fSAndroid Build Coastguard Worker	$(call extract-from-apex,$(CONSCRYPT_APEX),\
456*795d594fSAndroid Build Coastguard Worker	  $(PRIVATE_CONSCRYPT_APEX_DEPENDENCY_LIBS))
457*795d594fSAndroid Build Coastguard Worker	$(call extract-from-apex,$(I18N_APEX),\
458*795d594fSAndroid Build Coastguard Worker	  $(PRIVATE_I18N_APEX_DEPENDENCY_LIBS))
459*795d594fSAndroid Build Coastguard Worker	$(call extract-from-apex,$(STATSD_APEX),\
460*795d594fSAndroid Build Coastguard Worker	  $(PRIVATE_STATSD_APEX_DEPENDENCY_LIBS))
461*795d594fSAndroid Build Coastguard Worker	$(call extract-from-apex,$(TZDATA_APEX),)
462*795d594fSAndroid Build Coastguard Worker	rm -rf $(PRODUCT_OUT)/apex/art_boot_images && \
463*795d594fSAndroid Build Coastguard Worker	  mkdir -p $(PRODUCT_OUT)/apex/art_boot_images/javalib && \
464*795d594fSAndroid Build Coastguard Worker	  $(HOST_OUT)/bin/generate-boot-image64 \
465*795d594fSAndroid Build Coastguard Worker	    --output-dir=$(PRODUCT_OUT)/apex/art_boot_images/javalib \
466*795d594fSAndroid Build Coastguard Worker	    --compiler-filter=speed \
467*795d594fSAndroid Build Coastguard Worker	    --use-profile=false \
468*795d594fSAndroid Build Coastguard Worker	    --dex2oat-bin=$(HOST_OUT)/bin/dex2oat64 \
469*795d594fSAndroid Build Coastguard Worker	    --android-root=$(TARGET_OUT) \
470*795d594fSAndroid Build Coastguard Worker	    --instruction-set=$(TARGET_ARCH)
471*795d594fSAndroid Build Coastguard Worker
472*795d594fSAndroid Build Coastguard Worker########################################################################
473*795d594fSAndroid Build Coastguard Worker# Phony target for only building what go/lem requires for pushing ART on /data.
474*795d594fSAndroid Build Coastguard Worker
475*795d594fSAndroid Build Coastguard Worker.PHONY: build-art-target-golem
476*795d594fSAndroid Build Coastguard Worker
477*795d594fSAndroid Build Coastguard WorkerART_TARGET_PLATFORM_LIBS := \
478*795d594fSAndroid Build Coastguard Worker  libcutils \
479*795d594fSAndroid Build Coastguard Worker  libprocessgroup \
480*795d594fSAndroid Build Coastguard Worker  libprocinfo \
481*795d594fSAndroid Build Coastguard Worker  libselinux \
482*795d594fSAndroid Build Coastguard Worker  libtombstoned_client \
483*795d594fSAndroid Build Coastguard Worker  libz \
484*795d594fSAndroid Build Coastguard Worker
485*795d594fSAndroid Build Coastguard WorkerART_TARGET_PLATFORM_DEPENDENCIES := \
486*795d594fSAndroid Build Coastguard Worker  $(TARGET_OUT)/etc/public.libraries.txt \
487*795d594fSAndroid Build Coastguard Worker  $(foreach lib,$(ART_TARGET_PLATFORM_LIBS), $(TARGET_OUT_SHARED_LIBRARIES)/$(lib).so)
488*795d594fSAndroid Build Coastguard Workerifdef TARGET_2ND_ARCH
489*795d594fSAndroid Build Coastguard WorkerART_TARGET_PLATFORM_DEPENDENCIES += \
490*795d594fSAndroid Build Coastguard Worker  $(foreach lib,$(ART_TARGET_PLATFORM_LIBS), $(2ND_TARGET_OUT_SHARED_LIBRARIES)/$(lib).so)
491*795d594fSAndroid Build Coastguard Workerendif
492*795d594fSAndroid Build Coastguard Worker
493*795d594fSAndroid Build Coastguard Worker# Despite `liblz4` being included in the ART apex, Golem benchmarks need another one in /system/ .
494*795d594fSAndroid Build Coastguard WorkerART_TARGET_PLATFORM_DEPENDENCIES_GOLEM= \
495*795d594fSAndroid Build Coastguard Worker  $(TARGET_OUT_SHARED_LIBRARIES)/liblz4.so
496*795d594fSAndroid Build Coastguard Worker
497*795d594fSAndroid Build Coastguard Worker# Also include libartbenchmark, we always include it when running golem.
498*795d594fSAndroid Build Coastguard Worker# libstdc++ is needed when building for ART_TARGET_LINUX.
499*795d594fSAndroid Build Coastguard WorkerART_TARGET_SHARED_LIBRARY_BENCHMARK := $(TARGET_OUT_SHARED_LIBRARIES)/libartbenchmark.so
500*795d594fSAndroid Build Coastguard Worker
501*795d594fSAndroid Build Coastguard Workerbuild-art-target-golem: $(RELEASE_ART_APEX) com.android.runtime $(CONSCRYPT_APEX) \
502*795d594fSAndroid Build Coastguard Worker                        $(TARGET_OUT_EXECUTABLES)/art \
503*795d594fSAndroid Build Coastguard Worker                        $(TARGET_OUT_EXECUTABLES)/dex2oat_wrapper \
504*795d594fSAndroid Build Coastguard Worker                        $(ART_TARGET_PLATFORM_DEPENDENCIES) \
505*795d594fSAndroid Build Coastguard Worker                        $(ART_TARGET_PLATFORM_DEPENDENCIES_GOLEM) \
506*795d594fSAndroid Build Coastguard Worker                        $(ART_TARGET_SHARED_LIBRARY_BENCHMARK) \
507*795d594fSAndroid Build Coastguard Worker                        $(TARGET_OUT_SHARED_LIBRARIES)/libgolemtiagent.so \
508*795d594fSAndroid Build Coastguard Worker                        standalone-apex-files
509*795d594fSAndroid Build Coastguard Worker	# remove debug libraries from public.libraries.txt because golem builds
510*795d594fSAndroid Build Coastguard Worker	# won't have it.
511*795d594fSAndroid Build Coastguard Worker	sed -i '/libartd.so/d' $(TARGET_OUT)/etc/public.libraries.txt
512*795d594fSAndroid Build Coastguard Worker	sed -i '/libdexfiled.so/d' $(TARGET_OUT)/etc/public.libraries.txt
513*795d594fSAndroid Build Coastguard Worker	sed -i '/libprofiled.so/d' $(TARGET_OUT)/etc/public.libraries.txt
514*795d594fSAndroid Build Coastguard Worker	sed -i '/libartbased.so/d' $(TARGET_OUT)/etc/public.libraries.txt
515*795d594fSAndroid Build Coastguard Worker
516*795d594fSAndroid Build Coastguard Worker########################################################################
517*795d594fSAndroid Build Coastguard Worker# Phony target for building what go/lem requires on host.
518*795d594fSAndroid Build Coastguard Worker
519*795d594fSAndroid Build Coastguard Worker.PHONY: build-art-host-golem
520*795d594fSAndroid Build Coastguard Worker# Also include libartbenchmark, we always include it when running golem.
521*795d594fSAndroid Build Coastguard WorkerART_HOST_SHARED_LIBRARY_BENCHMARK := $(ART_HOST_OUT_SHARED_LIBRARIES)/libartbenchmark.so
522*795d594fSAndroid Build Coastguard Workerbuild-art-host-golem: build-art-host \
523*795d594fSAndroid Build Coastguard Worker                      $(ART_HOST_SHARED_LIBRARY_BENCHMARK) \
524*795d594fSAndroid Build Coastguard Worker		      $(ART_HOST_OUT_SHARED_LIBRARIES)/libgolemtiagent.so \
525*795d594fSAndroid Build Coastguard Worker                      $(HOST_OUT_EXECUTABLES)/dex2oat_wrapper
526*795d594fSAndroid Build Coastguard Worker
527*795d594fSAndroid Build Coastguard Worker########################################################################
528*795d594fSAndroid Build Coastguard Worker# Rules for building all dependencies for tests.
529*795d594fSAndroid Build Coastguard Worker
530*795d594fSAndroid Build Coastguard Worker.PHONY: build-art-host-gtests build-art-host-run-tests build-art-host-tests
531*795d594fSAndroid Build Coastguard Worker
532*795d594fSAndroid Build Coastguard Workerbuild-art-host-gtests: build-art-host $(ART_TEST_HOST_GTEST_DEPENDENCIES)
533*795d594fSAndroid Build Coastguard Worker
534*795d594fSAndroid Build Coastguard Workerbuild-art-host-run-tests: build-art-host \
535*795d594fSAndroid Build Coastguard Worker                          $(TEST_ART_RUN_TEST_DEPENDENCIES) \
536*795d594fSAndroid Build Coastguard Worker                          $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES) \
537*795d594fSAndroid Build Coastguard Worker                          art-run-test-host-data \
538*795d594fSAndroid Build Coastguard Worker                          art-run-test-jvm-data
539*795d594fSAndroid Build Coastguard Worker
540*795d594fSAndroid Build Coastguard Workerbuild-art-host-tests: build-art-host-gtests build-art-host-run-tests
541*795d594fSAndroid Build Coastguard Worker
542*795d594fSAndroid Build Coastguard Worker.PHONY: build-art-target-gtests build-art-target-run-tests build-art-target-tests
543*795d594fSAndroid Build Coastguard Worker
544*795d594fSAndroid Build Coastguard Workerbuild-art-target-gtests: build-art-target \
545*795d594fSAndroid Build Coastguard Worker                         $(ART_TEST_TARGET_GTEST_DEPENDENCIES) \
546*795d594fSAndroid Build Coastguard Worker                         $(ART_TARGET_PLATFORM_DEPENDENCIES)
547*795d594fSAndroid Build Coastguard Worker
548*795d594fSAndroid Build Coastguard Workerbuild-art-target-run-tests: build-art-target \
549*795d594fSAndroid Build Coastguard Worker                            $(TEST_ART_RUN_TEST_DEPENDENCIES) \
550*795d594fSAndroid Build Coastguard Worker                            $(ART_TEST_TARGET_RUN_TEST_DEPENDENCIES) \
551*795d594fSAndroid Build Coastguard Worker                            $(ART_TARGET_PLATFORM_DEPENDENCIES) \
552*795d594fSAndroid Build Coastguard Worker                            art-run-test-target-data
553*795d594fSAndroid Build Coastguard Worker
554*795d594fSAndroid Build Coastguard Workerbuild-art-target-tests: build-art-target-gtests build-art-target-run-tests
555*795d594fSAndroid Build Coastguard Worker
556*795d594fSAndroid Build Coastguard Worker########################################################################
557*795d594fSAndroid Build Coastguard Worker
558*795d594fSAndroid Build Coastguard Worker# Clear locally used variables.
559*795d594fSAndroid Build Coastguard WorkerTEST_ART_TARGET_SYNC_DEPS :=
560*795d594fSAndroid Build Coastguard Worker
561*795d594fSAndroid Build Coastguard Worker# These files only exist if this flag is off. WITH_DEXPREOPT_ART_BOOT_IMG_ONLY is the
562*795d594fSAndroid Build Coastguard Worker# minimal dexpreopt mode we use on eng builds for build speed.
563*795d594fSAndroid Build Coastguard Workerifneq ($(WITH_DEXPREOPT_ART_BOOT_IMG_ONLY),true)
564*795d594fSAndroid Build Coastguard Worker
565*795d594fSAndroid Build Coastguard Worker# Helper target that depends on boot image creation.
566*795d594fSAndroid Build Coastguard Worker#
567*795d594fSAndroid Build Coastguard Worker# Can be used, for example, to dump initialization failures:
568*795d594fSAndroid Build Coastguard Worker#   m art-boot-image ART_BOOT_IMAGE_EXTRA_ARGS=--dump-init-failures=fails.txt
569*795d594fSAndroid Build Coastguard Worker.PHONY: art-boot-image
570*795d594fSAndroid Build Coastguard Workerart-boot-image:  $(DEXPREOPT_IMAGE_boot_$(TARGET_ARCH))
571*795d594fSAndroid Build Coastguard Worker
572*795d594fSAndroid Build Coastguard Worker.PHONY: art-job-images
573*795d594fSAndroid Build Coastguard Workerart-job-images: \
574*795d594fSAndroid Build Coastguard Worker  art-boot-image \
575*795d594fSAndroid Build Coastguard Worker  $(2ND_DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) \
576*795d594fSAndroid Build Coastguard Worker  $(HOST_OUT_EXECUTABLES)/dex2oats \
577*795d594fSAndroid Build Coastguard Worker  $(HOST_OUT_EXECUTABLES)/dex2oatds \
578*795d594fSAndroid Build Coastguard Worker  $(HOST_OUT_EXECUTABLES)/profman
579*795d594fSAndroid Build Coastguard Worker
580*795d594fSAndroid Build Coastguard Workerendif # TARGET_BUILD_VARIANT == eng
581*795d594fSAndroid Build Coastguard Worker
582*795d594fSAndroid Build Coastguard Worker########################################################################
583*795d594fSAndroid Build Coastguard Worker
584*795d594fSAndroid Build Coastguard Worker# Build a target that contains dex public SDK stubs for SDK version in the list.
585*795d594fSAndroid Build Coastguard Worker# Zip files structure:
586*795d594fSAndroid Build Coastguard Worker#   public-sdk-28-stub.zip
587*795d594fSAndroid Build Coastguard Worker#     classes.dex
588*795d594fSAndroid Build Coastguard Worker#   public-sdk-29-stub.zip
589*795d594fSAndroid Build Coastguard Worker#     classes.dex
590*795d594fSAndroid Build Coastguard Worker#   public-sdk-30-stub.zip
591*795d594fSAndroid Build Coastguard Worker#     classes.dex
592*795d594fSAndroid Build Coastguard WorkerMIN_SDK_VERSION := 28
593*795d594fSAndroid Build Coastguard WorkerSDK_VERSIONS := $(call numbers_greater_or_equal_to,$(MIN_SDK_VERSION),$(TARGET_AVAIALBLE_SDK_VERSIONS))
594*795d594fSAndroid Build Coastguard Worker
595*795d594fSAndroid Build Coastguard Worker# Create dex public SDK stubs.
596*795d594fSAndroid Build Coastguard Workerdefine get_public_sdk_stub_dex
597*795d594fSAndroid Build Coastguard Worker$(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/public_sdk_$(1)_stub_intermediates/classes.dex
598*795d594fSAndroid Build Coastguard Workerendef
599*795d594fSAndroid Build Coastguard Worker
600*795d594fSAndroid Build Coastguard Worker# The input is the SDK version.
601*795d594fSAndroid Build Coastguard Workerdefine create_public_sdk_dex
602*795d594fSAndroid Build Coastguard Workerpublic_sdk_$(1)_stub := $$(call get_public_sdk_stub_dex,$(1))
603*795d594fSAndroid Build Coastguard Worker$$(public_sdk_$(1)_stub): PRIVATE_MIN_SDK_VERSION := $(1)
604*795d594fSAndroid Build Coastguard Worker$$(public_sdk_$(1)_stub): $$(call resolve-prebuilt-sdk-jar-path,$(1)) $$(D8) $$(ZIP2ZIP)
605*795d594fSAndroid Build Coastguard Worker	$$(transform-classes.jar-to-dex)
606*795d594fSAndroid Build Coastguard Worker
607*795d594fSAndroid Build Coastguard Worker$$(call declare-1p-target,$$(public_sdk_$(1)_stub),art)
608*795d594fSAndroid Build Coastguard Workerendef
609*795d594fSAndroid Build Coastguard Worker
610*795d594fSAndroid Build Coastguard Worker$(foreach version,$(SDK_VERSIONS),$(eval $(call create_public_sdk_dex,$(version))))
611*795d594fSAndroid Build Coastguard Worker
612*795d594fSAndroid Build Coastguard Worker# Create dex public SDK stubs zip.
613*795d594fSAndroid Build Coastguard Workerdefine get_public_sdk_stub_zip
614*795d594fSAndroid Build Coastguard Worker$(call intermediates-dir-for,PACKAGING,public_sdk_stub,HOST)/public-sdk-$(1)-stub.zip
615*795d594fSAndroid Build Coastguard Workerendef
616*795d594fSAndroid Build Coastguard Worker
617*795d594fSAndroid Build Coastguard Workerdefine create_public_sdk_zip
618*795d594fSAndroid Build Coastguard WorkerPUBLIC_SDK_$(1)_STUB_ZIP_PATH := $$(call get_public_sdk_stub_zip,$(1))
619*795d594fSAndroid Build Coastguard Worker$$(PUBLIC_SDK_$(1)_STUB_ZIP_PATH): PRIVATE_SDK_STUBS_DEX_DIR := $$(dir $$(public_sdk_$(1)_stub))
620*795d594fSAndroid Build Coastguard Worker$$(PUBLIC_SDK_$(1)_STUB_ZIP_PATH): $$(SOONG_ZIP) $$(public_sdk_$(1)_stub)
621*795d594fSAndroid Build Coastguard Worker	rm -f $$@
622*795d594fSAndroid Build Coastguard Worker	$$(SOONG_ZIP) -o $$@ -C $$(PRIVATE_SDK_STUBS_DEX_DIR) -D $$(PRIVATE_SDK_STUBS_DEX_DIR)
623*795d594fSAndroid Build Coastguard Worker
624*795d594fSAndroid Build Coastguard Worker$$(call declare-1p-container,$$(PUBLIC_SDK_$(1)_STUB_ZIP_PATH),art)
625*795d594fSAndroid Build Coastguard Worker$$(call declare-container-license-deps,$$(PUBLIC_SDK_$(1)_STUB_ZIP_PATH),$$(public_sdk_$(1)_stub),$$(PUBLIC_SDK_$(1)_STUB_PATH):)
626*795d594fSAndroid Build Coastguard Workerendef
627*795d594fSAndroid Build Coastguard Worker
628*795d594fSAndroid Build Coastguard Worker$(foreach version,$(SDK_VERSIONS),$(eval $(call create_public_sdk_zip,$(version))))
629*795d594fSAndroid Build Coastguard Worker
630*795d594fSAndroid Build Coastguard Worker# Make the zip files available for prebuilts.
631*795d594fSAndroid Build Coastguard Worker$(foreach version,$(SDK_VERSIONS),$(call dist-for-goals,sdk,$(call get_public_sdk_stub_zip,$(version))))
632*795d594fSAndroid Build Coastguard Worker
633*795d594fSAndroid Build Coastguard WorkerSTUB_ZIP_FILES = $(foreach version,$(SDK_VERSIONS),$(call get_public_sdk_stub_zip,$(version)))
634*795d594fSAndroid Build Coastguard Worker
635*795d594fSAndroid Build Coastguard Worker.PHONY: public_sdk_stubs
636*795d594fSAndroid Build Coastguard Workerpublic_sdk_stubs: $(STUB_ZIP_FILES)
637*795d594fSAndroid Build Coastguard Worker
638*795d594fSAndroid Build Coastguard WorkerMIN_SDK_VERSION :=
639*795d594fSAndroid Build Coastguard WorkerSDK_VERSIONS :=
640