xref: /aosp_15_r20/art/tools/ahat/Android.mk (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1#
2# Copyright (C) 2015 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
17LOCAL_PATH := $(call my-dir)
18
19include art/build/Android.common_path.mk
20
21# The ahat tests rely on running ART to generate a heap dump for test, but ART
22# doesn't run on darwin. Only build and run the tests for linux.
23# There are also issues with running under instrumentation.
24ifeq ($(HOST_OS),linux)
25ifneq ($(EMMA_INSTRUMENT),true)
26
27# Determine the location of the test-dump.jar, test-dump.hprof, and proguard
28AHAT_TEST_DUMP_JAR := $(call intermediates-dir-for,JAVA_LIBRARIES,ahat-test-dump)/javalib.jar
29AHAT_TEST_DUMP_COMMON := $(call intermediates-dir-for,JAVA_LIBRARIES,ahat-test-dump,,COMMON)
30AHAT_TEST_DUMP_JNI := $(ART_HOST_OUT_SHARED_LIBRARIES)/libahat-test-jni$(ART_HOST_SHLIB_EXTENSION)
31AHAT_TEST_DUMP_HPROF := $(AHAT_TEST_DUMP_COMMON)/test-dump.hprof
32AHAT_TEST_DUMP_BASE_HPROF := $(AHAT_TEST_DUMP_COMMON)/test-dump-base.hprof
33AHAT_TEST_DUMP_PROGUARD_MAP := $(AHAT_TEST_DUMP_COMMON)/test-dump.map
34AHAT_TEST_DUMP_PROGUARD_DICTIONARY := $(AHAT_TEST_DUMP_COMMON)/proguard_dictionary
35
36# Directories to use for ANDROID_DATA when generating the test dumps to
37# ensure we don't pollute the source tree with any artifacts from running
38# dalvikvm.
39AHAT_TEST_DUMP_ANDROID_DATA := $(AHAT_TEST_DUMP_COMMON)/test-dump-android_data
40AHAT_TEST_DUMP_BASE_ANDROID_DATA := $(AHAT_TEST_DUMP_COMMON)/test-dump-base-android_data
41
42# Generate the proguard map in the desired location by copying it from
43# wherever the build system generates it by default.
44$(AHAT_TEST_DUMP_PROGUARD_MAP): PRIVATE_AHAT_SOURCE_PROGUARD_MAP := $(AHAT_TEST_DUMP_PROGUARD_DICTIONARY)
45$(AHAT_TEST_DUMP_PROGUARD_MAP): $(AHAT_TEST_DUMP_PROGUARD_DICTIONARY)
46	cp $(PRIVATE_AHAT_SOURCE_PROGUARD_MAP) $@
47
48ifeq (true,$(HOST_PREFER_32_BIT))
49  AHAT_TEST_DALVIKVM_DEP := $(HOST_OUT_EXECUTABLES)/dalvikvm32
50  AHAT_TEST_DALVIKVM_ARG := --32
51else
52  AHAT_TEST_DALVIKVM_DEP := $(HOST_OUT_EXECUTABLES)/dalvikvm64
53  AHAT_TEST_DALVIKVM_ARG := --64
54endif
55
56# Run ahat-test-dump.jar to generate test-dump.hprof and test-dump-base.hprof
57# The scripts below are run with --no-compile to avoid dependency on dex2oat.
58AHAT_TEST_DUMP_DEPENDENCIES := \
59  $(AHAT_TEST_DALVIKVM_DEP) \
60  $(AHAT_TEST_DUMP_JNI) \
61  $(ART_HOST_SHARED_LIBRARY_DEPENDENCIES) \
62  $(ART_HOST_SHARED_LIBRARY_DEBUG_DEPENDENCIES) \
63  $(ART_HOST_DEX_DEPENDENCIES) \
64  $(HOST_OUT_EXECUTABLES)/art \
65  $(HOST_CORE_IMG_OUTS)
66
67$(AHAT_TEST_DUMP_HPROF): PRIVATE_AHAT_TEST_ART := $(HOST_OUT_EXECUTABLES)/art
68$(AHAT_TEST_DUMP_HPROF): PRIVATE_AHAT_TEST_DUMP_JAR := $(AHAT_TEST_DUMP_JAR)
69$(AHAT_TEST_DUMP_HPROF): PRIVATE_AHAT_TEST_ANDROID_DATA := $(AHAT_TEST_DUMP_ANDROID_DATA)
70$(AHAT_TEST_DUMP_HPROF): PRIVATE_AHAT_TEST_DALVIKVM_ARG := $(AHAT_TEST_DALVIKVM_ARG)
71$(AHAT_TEST_DUMP_HPROF): $(AHAT_TEST_DUMP_JAR) $(AHAT_TEST_DUMP_DEPENDENCIES)
72	rm -rf $(PRIVATE_AHAT_TEST_ANDROID_DATA)
73	mkdir -p $(PRIVATE_AHAT_TEST_ANDROID_DATA)
74	ANDROID_DATA=$(PRIVATE_AHAT_TEST_ANDROID_DATA) \
75	  $(PRIVATE_AHAT_TEST_ART) --no-compile -d $(PRIVATE_AHAT_TEST_DALVIKVM_ARG) \
76	  -cp $(PRIVATE_AHAT_TEST_DUMP_JAR) Main $@
77
78$(AHAT_TEST_DUMP_BASE_HPROF): PRIVATE_AHAT_TEST_ART := $(HOST_OUT_EXECUTABLES)/art
79$(AHAT_TEST_DUMP_BASE_HPROF): PRIVATE_AHAT_TEST_DUMP_JAR := $(AHAT_TEST_DUMP_JAR)
80$(AHAT_TEST_DUMP_BASE_HPROF): PRIVATE_AHAT_TEST_ANDROID_DATA := $(AHAT_TEST_DUMP_BASE_ANDROID_DATA)
81$(AHAT_TEST_DUMP_BASE_HPROF): PRIVATE_AHAT_TEST_DALVIKVM_ARG := $(AHAT_TEST_DALVIKVM_ARG)
82$(AHAT_TEST_DUMP_BASE_HPROF): $(AHAT_TEST_DUMP_JAR) $(AHAT_TEST_DUMP_DEPENDENCIES)
83	rm -rf $(PRIVATE_AHAT_TEST_ANDROID_DATA)
84	mkdir -p $(PRIVATE_AHAT_TEST_ANDROID_DATA)
85	ANDROID_DATA=$(PRIVATE_AHAT_TEST_ANDROID_DATA) \
86	  $(PRIVATE_AHAT_TEST_ART) --no-compile -d $(PRIVATE_AHAT_TEST_DALVIKVM_ARG) \
87	  -cp $(PRIVATE_AHAT_TEST_DUMP_JAR) Main $@ --base
88
89
90# Determine the location of the ri-test-dump.jar and ri-test-dump.hprof.
91AHAT_RI_TEST_DUMP_JAR := $(call intermediates-dir-for,JAVA_LIBRARIES,ahat-ri-test-dump,HOST)/javalib.jar
92AHAT_RI_TEST_DUMP_COMMON := $(call intermediates-dir-for,JAVA_LIBRARIES,ahat-ri-test-dump,HOST,COMMON)
93AHAT_RI_TEST_DUMP_HPROF := $(AHAT_RI_TEST_DUMP_COMMON)/ri-test-dump.hprof
94
95# Run ahat-ri-test-dump.jar to generate ri-test-dump.hprof
96$(AHAT_RI_TEST_DUMP_HPROF): PRIVATE_AHAT_RI_TEST_DUMP_JAR := $(AHAT_RI_TEST_DUMP_JAR)
97$(AHAT_RI_TEST_DUMP_HPROF): $(AHAT_RI_TEST_DUMP_JAR)
98	rm -rf $@
99	java -cp $(PRIVATE_AHAT_RI_TEST_DUMP_JAR) Main $@
100
101# --- ahat-tests.jar --------------
102# To run these tests, use: atest ahat-tests --host
103include $(CLEAR_VARS)
104LOCAL_SRC_FILES := $(call all-java-files-under, src/test)
105LOCAL_JAR_MANIFEST := etc/ahat-tests.mf
106LOCAL_JAVA_RESOURCE_FILES := \
107  $(AHAT_TEST_DUMP_HPROF) \
108  $(AHAT_TEST_DUMP_BASE_HPROF) \
109  $(AHAT_TEST_DUMP_PROGUARD_MAP) \
110  $(AHAT_RI_TEST_DUMP_HPROF) \
111  $(LOCAL_PATH)/etc/L.hprof \
112  $(LOCAL_PATH)/etc/O.hprof \
113  $(LOCAL_PATH)/etc/RI.hprof
114LOCAL_STATIC_JAVA_LIBRARIES := ahat junit-host
115LOCAL_IS_HOST_MODULE := true
116LOCAL_MODULE_TAGS := tests
117LOCAL_MODULE := ahat-tests
118LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
119LOCAL_LICENSE_CONDITIONS := notice
120LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../../NOTICE
121LOCAL_TEST_CONFIG := ahat-tests.xml
122LOCAL_COMPATIBILITY_SUITE := general-tests
123include $(BUILD_HOST_JAVA_LIBRARY)
124AHAT_TEST_JAR := $(LOCAL_BUILT_MODULE)
125
126endif # EMMA_INSTRUMENT
127endif # linux
128
129# Clean up local variables.
130AHAT_TEST_JAR :=
131AHAT_TEST_DUMP_JAR :=
132AHAT_TEST_DUMP_JNI :=
133AHAT_TEST_DUMP_COMMON :=
134AHAT_TEST_DUMP_HPROF :=
135AHAT_TEST_DUMP_BASE_HPROF :=
136AHAT_TEST_DUMP_PROGUARD_MAP :=
137AHAT_TEST_DUMP_DEPENDENCIES :=
138AHAT_TEST_DUMP_ANDROID_DATA :=
139AHAT_TEST_DUMP_BASE_ANDROID_DATA :=
140
141AHAT_RI_TEST_DUMP_JAR :=
142AHAT_RI_TEST_DUMP_COMMON :=
143AHAT_RI_TEST_DUMP_HPROF :=
144