| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 1 | # Copyright (C) 2011 The Android Open Source Project |
| 2 | # |
| 3 | # Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | # you may not use this file except in compliance with the License. |
| 5 | # You may obtain a copy of the License at |
| 6 | # |
| 7 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | # |
| 9 | # Unless required by applicable law or agreed to in writing, software |
| 10 | # distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | # See the License for the specific language governing permissions and |
| 13 | # limitations under the License. |
| 14 | # |
| 15 | |
| 16 | LOCAL_PATH := $(call my-dir) |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 17 | include art/build/Android.common_test.mk |
| 18 | |
| 19 | # List of all tests of the form 003-omnibus-opcodes. |
| 20 | TEST_ART_RUN_TESTS := $(wildcard $(LOCAL_PATH)/[0-9]*) |
| 21 | TEST_ART_RUN_TESTS := $(subst $(LOCAL_PATH)/,, $(TEST_ART_RUN_TESTS)) |
| 22 | |
| Ian Rogers | f5c44b3 | 2014-08-19 16:52:36 -0700 | [diff] [blame] | 23 | ######################################################################## |
| 24 | # The art-run-tests module, used to build all run-tests into an image. |
| Alex Light | 9dcc457 | 2014-08-14 14:16:26 -0700 | [diff] [blame] | 25 | |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 26 | # The path where build only targets will be output, e.g. |
| 27 | # out/target/product/generic_x86_64/obj/PACKAGING/art-run-tests_intermediates/DATA |
| Dan Willemsen | 7fb2c2c | 2016-08-01 22:58:31 -0700 | [diff] [blame] | 28 | art_run_tests_build_dir := $(call intermediates-dir-for,JAVA_LIBRARIES,art-run-tests)/DATA |
| 29 | art_run_tests_install_dir := $(call intermediates-dir-for,PACKAGING,art-run-tests)/DATA |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 30 | |
| 31 | # A generated list of prerequisites that call 'run-test --build-only', the actual prerequisite is |
| 32 | # an empty file touched in the intermediate directory. |
| 33 | TEST_ART_RUN_TEST_BUILD_RULES := |
| 34 | |
| Nicolas Geoffray | 07f2bc1 | 2015-05-29 13:40:25 +0100 | [diff] [blame] | 35 | # Dependencies for actually running a run-test. |
| Sebastien Hertz | 19ac027 | 2015-02-24 17:39:50 +0100 | [diff] [blame] | 36 | TEST_ART_RUN_TEST_DEPENDENCIES := \ |
| 37 | $(DX) \ |
| 38 | $(HOST_OUT_EXECUTABLES)/jasmin \ |
| 39 | $(HOST_OUT_EXECUTABLES)/smali \ |
| Sebastien Hertz | 2b763c3 | 2016-03-31 09:22:50 +0200 | [diff] [blame] | 40 | $(HOST_OUT_EXECUTABLES)/dexmerger \ |
| 41 | $(JACK) |
| Sebastien Hertz | 19ac027 | 2015-02-24 17:39:50 +0100 | [diff] [blame] | 42 | |
| Sebastien Hertz | 2b763c3 | 2016-03-31 09:22:50 +0200 | [diff] [blame] | 43 | TEST_ART_RUN_TEST_ORDERONLY_DEPENDENCIES := setup-jack-server |
| Nicolas Geoffray | 07f2bc1 | 2015-05-29 13:40:25 +0100 | [diff] [blame] | 44 | |
| Hiroshi Yamauchi | 093f1b4 | 2015-07-14 12:20:30 -0700 | [diff] [blame] | 45 | ifeq ($(ART_TEST_DEBUG_GC),true) |
| 46 | ART_TEST_WITH_STRACE := true |
| 47 | endif |
| 48 | |
| Wojciech Staszkiewicz | d7a819a | 2016-09-01 14:43:39 -0700 | [diff] [blame] | 49 | ifeq ($(ART_TEST_BISECTION),true) |
| 50 | # Need to keep rebuilding the test to bisection search it. |
| 51 | ART_TEST_RUN_TEST_NO_PREBUILD := true |
| 52 | ART_TEST_RUN_TEST_PREBUILD := false |
| 53 | # Bisection search writes to standard output. |
| 54 | ART_TEST_QUIET := false |
| 55 | endif |
| 56 | |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 57 | # Helper to create individual build targets for tests. Must be called with $(eval). |
| 58 | # $(1): the test number |
| 59 | define define-build-art-run-test |
| Dan Willemsen | 7fb2c2c | 2016-08-01 22:58:31 -0700 | [diff] [blame] | 60 | dmart_target := $(art_run_tests_build_dir)/art-run-tests/$(1)/touch |
| 61 | dmart_install_target := $(art_run_tests_install_dir)/art-run-tests/$(1)/touch |
| Sebastien Hertz | 19ac027 | 2015-02-24 17:39:50 +0100 | [diff] [blame] | 62 | run_test_options = --build-only |
| Alex Light | 91de25f | 2015-10-28 17:00:06 -0700 | [diff] [blame] | 63 | ifeq ($(ART_TEST_QUIET),true) |
| 64 | run_test_options += --quiet |
| 65 | endif |
| Sebastien Hertz | 19ac027 | 2015-02-24 17:39:50 +0100 | [diff] [blame] | 66 | $$(dmart_target): PRIVATE_RUN_TEST_OPTIONS := $$(run_test_options) |
| Yohann Roussel | 05b9125 | 2015-12-09 12:02:46 +0100 | [diff] [blame] | 67 | $$(dmart_target): $(TEST_ART_RUN_TEST_DEPENDENCIES) $(TARGET_JACK_CLASSPATH_DEPENDENCIES) | $(TEST_ART_RUN_TEST_ORDERONLY_DEPENDENCIES) |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 68 | $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@) |
| 69 | $(hide) DX=$(abspath $(DX)) JASMIN=$(abspath $(HOST_OUT_EXECUTABLES)/jasmin) \ |
| Andreas Gampe | 8fda9f2 | 2014-10-03 16:15:37 -0700 | [diff] [blame] | 70 | SMALI=$(abspath $(HOST_OUT_EXECUTABLES)/smali) \ |
| 71 | DXMERGER=$(abspath $(HOST_OUT_EXECUTABLES)/dexmerger) \ |
| Yohann Roussel | cc6bb93 | 2016-01-19 23:29:29 +0100 | [diff] [blame] | 72 | JACK_VERSION=$(JACK_DEFAULT_VERSION) \ |
| Sebastien Hertz | 19ac027 | 2015-02-24 17:39:50 +0100 | [diff] [blame] | 73 | JACK=$(abspath $(JACK)) \ |
| Yohann Roussel | aaa779a | 2016-01-19 17:07:18 +0100 | [diff] [blame] | 74 | JACK_VERSION=$(JACK_DEFAULT_VERSION) \ |
| Sebastien Hertz | 19ac027 | 2015-02-24 17:39:50 +0100 | [diff] [blame] | 75 | JACK_CLASSPATH=$(TARGET_JACK_CLASSPATH) \ |
| Sebastien Hertz | 19ac027 | 2015-02-24 17:39:50 +0100 | [diff] [blame] | 76 | $(LOCAL_PATH)/run-test $$(PRIVATE_RUN_TEST_OPTIONS) --output-path $$(abspath $$(dir $$@)) $(1) |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 77 | $(hide) touch $$@ |
| 78 | |
| Dan Willemsen | 7fb2c2c | 2016-08-01 22:58:31 -0700 | [diff] [blame] | 79 | $$(dmart_install_target): $$(dmart_target) |
| 80 | $(hide) rm -rf $$(dir $$@) && mkdir -p $$(dir $$@) |
| 81 | $(hide) cp $$(dir $$<)/* $$(dir $$@)/ |
| 82 | |
| 83 | TEST_ART_RUN_TEST_BUILD_RULES += $$(dmart_install_target) |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 84 | dmart_target := |
| Dan Willemsen | 7fb2c2c | 2016-08-01 22:58:31 -0700 | [diff] [blame] | 85 | dmart_install_target := |
| Sebastien Hertz | 19ac027 | 2015-02-24 17:39:50 +0100 | [diff] [blame] | 86 | run_test_options := |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 87 | endef |
| Ian Rogers | bf66bce | 2014-06-24 23:15:34 -0700 | [diff] [blame] | 88 | $(foreach test, $(TEST_ART_RUN_TESTS), $(eval $(call define-build-art-run-test,$(test)))) |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 89 | |
| 90 | include $(CLEAR_VARS) |
| 91 | LOCAL_MODULE_TAGS := tests |
| 92 | LOCAL_MODULE := art-run-tests |
| Ian Rogers | abbf242 | 2014-10-15 11:57:01 -0700 | [diff] [blame] | 93 | LOCAL_ADDITIONAL_DEPENDENCIES := $(TEST_ART_RUN_TEST_BUILD_RULES) |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 94 | # The build system use this flag to pick up files generated by declare-make-art-run-test. |
| Dan Willemsen | 7fb2c2c | 2016-08-01 22:58:31 -0700 | [diff] [blame] | 95 | LOCAL_PICKUP_FILES := $(art_run_tests_install_dir) |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 96 | |
| 97 | include $(BUILD_PHONY_PACKAGE) |
| 98 | |
| 99 | # Clear temp vars. |
| Dan Willemsen | 7fb2c2c | 2016-08-01 22:58:31 -0700 | [diff] [blame] | 100 | art_run_tests_build_dir := |
| 101 | art_run_tests_install_dir := |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 102 | define-build-art-run-test := |
| Ian Rogers | 8a14b75 | 2014-07-18 15:06:53 -0700 | [diff] [blame] | 103 | TEST_ART_RUN_TEST_BUILD_RULES := |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 104 | |
| 105 | ######################################################################## |
| Ian Rogers | f5c44b3 | 2014-08-19 16:52:36 -0700 | [diff] [blame] | 106 | # General rules to build and run a run-test. |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 107 | |
| Ian Rogers | f5c44b3 | 2014-08-19 16:52:36 -0700 | [diff] [blame] | 108 | TARGET_TYPES := host target |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 109 | |
| 110 | PREBUILD_TYPES := prebuild |
| 111 | PREBUILD_TYPES += no-prebuild |
| 112 | PREBUILD_TYPES += no-dex2oat |
| 113 | |
| 114 | COMPILER_TYPES := interp-ac |
| 115 | COMPILER_TYPES += interpreter |
| 116 | COMPILER_TYPES += jit |
| 117 | COMPILER_TYPES += optimizing |
| 118 | COMPILER_TYPES += regalloc_gc |
| 119 | |
| 120 | RELOCATE_TYPES := relocate |
| 121 | RELOCATE_TYPES += no-relocate |
| 122 | RELOCATE_TYPES += relocate-npatchoat |
| 123 | |
| Mathieu Chartier | 1445dd3 | 2015-03-20 14:29:51 -0700 | [diff] [blame] | 124 | TRACE_TYPES := ntrace |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 125 | TRACE_TYPES += trace |
| 126 | TRACE_TYPES += stream |
| 127 | |
| Ian Rogers | 86df3ac | 2014-08-27 10:54:11 -0700 | [diff] [blame] | 128 | GC_TYPES := cms |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 129 | GC_TYPES += gcstress |
| 130 | GC_TYPES += gcverify |
| 131 | |
| Ian Rogers | 86df3ac | 2014-08-27 10:54:11 -0700 | [diff] [blame] | 132 | JNI_TYPES := checkjni |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 133 | JNI_TYPES += forcecopy |
| 134 | |
| Nicolas Geoffray | b76bc78 | 2016-09-14 12:33:34 +0000 | [diff] [blame] | 135 | IMAGE_TYPES := picimage |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 136 | IMAGE_TYPES += no-image |
| 137 | IMAGE_TYPES += multipicimage |
| 138 | IMAGE_TYPES += npicimage |
| 139 | IMAGE_TYPES += multinpicimage |
| 140 | |
| Mathieu Chartier | 1445dd3 | 2015-03-20 14:29:51 -0700 | [diff] [blame] | 141 | PICTEST_TYPES := npictest |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 142 | PICTEST_TYPES += pictest |
| 143 | |
| 144 | RUN_TYPES := debug |
| 145 | RUN_TYPES += ndebug |
| 146 | |
| Mathieu Chartier | 1445dd3 | 2015-03-20 14:29:51 -0700 | [diff] [blame] | 147 | DEBUGGABLE_TYPES := ndebuggable |
| Nicolas Geoffray | 43c162f | 2015-03-09 12:21:26 +0000 | [diff] [blame] | 148 | DEBUGGABLE_TYPES += debuggable |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 149 | |
| Ian Rogers | f5c44b3 | 2014-08-19 16:52:36 -0700 | [diff] [blame] | 150 | ALL_ADDRESS_SIZES := 64 32 |
| Ian Rogers | 86df3ac | 2014-08-27 10:54:11 -0700 | [diff] [blame] | 151 | |
| Ian Rogers | f5c44b3 | 2014-08-19 16:52:36 -0700 | [diff] [blame] | 152 | define name-to-var |
| 153 | $(shell echo $(1) | tr '[:lower:]' '[:upper:]' | tr '-' '_') |
| 154 | endef # name-to-var |
| 155 | |
| Andreas Gampe | 63fc30e | 2014-10-24 21:58:16 -0700 | [diff] [blame] | 156 | # We need dex2oat and dalvikvm on the target as well as the core images (all images as we sync |
| 157 | # only once). |
| 158 | TEST_ART_TARGET_SYNC_DEPS += $(ART_TARGET_EXECUTABLES) $(TARGET_CORE_IMG_OUTS) |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 159 | |
| Alex Light | 7233c7e | 2016-07-28 10:07:45 -0700 | [diff] [blame] | 160 | # Also need libartagent. |
| Colin Cross | afd3c9e | 2016-09-16 13:47:21 -0700 | [diff] [blame] | 161 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libartagent) |
| 162 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libartagentd) |
| Alex Light | 7233c7e | 2016-07-28 10:07:45 -0700 | [diff] [blame] | 163 | ifdef TARGET_2ND_ARCH |
| Colin Cross | afd3c9e | 2016-09-16 13:47:21 -0700 | [diff] [blame] | 164 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libartagent) |
| 165 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libartagentd) |
| Alex Light | 7233c7e | 2016-07-28 10:07:45 -0700 | [diff] [blame] | 166 | endif |
| 167 | |
| Alex Light | 49948e9 | 2016-08-11 15:35:28 -0700 | [diff] [blame] | 168 | # Also need libtiagent. |
| Colin Cross | afd3c9e | 2016-09-16 13:47:21 -0700 | [diff] [blame] | 169 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtiagent) |
| 170 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libtiagentd) |
| Alex Light | 49948e9 | 2016-08-11 15:35:28 -0700 | [diff] [blame] | 171 | ifdef TARGET_2ND_ARCH |
| Colin Cross | afd3c9e | 2016-09-16 13:47:21 -0700 | [diff] [blame] | 172 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtiagent) |
| 173 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libtiagentd) |
| Alex Light | 49948e9 | 2016-08-11 15:35:28 -0700 | [diff] [blame] | 174 | endif |
| 175 | |
| Andreas Gampe | 1c83cbc | 2014-07-22 18:52:29 -0700 | [diff] [blame] | 176 | # Also need libarttest. |
| Colin Cross | afd3c9e | 2016-09-16 13:47:21 -0700 | [diff] [blame] | 177 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libarttest) |
| 178 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libarttestd) |
| Andreas Gampe | 1c83cbc | 2014-07-22 18:52:29 -0700 | [diff] [blame] | 179 | ifdef TARGET_2ND_ARCH |
| Colin Cross | afd3c9e | 2016-09-16 13:47:21 -0700 | [diff] [blame] | 180 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libarttest) |
| 181 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libarttestd) |
| Andreas Gampe | 1c83cbc | 2014-07-22 18:52:29 -0700 | [diff] [blame] | 182 | endif |
| 183 | |
| Andreas Gampe | 855564b | 2014-07-25 02:32:19 -0700 | [diff] [blame] | 184 | # Also need libnativebridgetest. |
| Colin Cross | afd3c9e | 2016-09-16 13:47:21 -0700 | [diff] [blame] | 185 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_ARCH)_libnativebridgetest) |
| Andreas Gampe | 855564b | 2014-07-25 02:32:19 -0700 | [diff] [blame] | 186 | ifdef TARGET_2ND_ARCH |
| Colin Cross | afd3c9e | 2016-09-16 13:47:21 -0700 | [diff] [blame] | 187 | TEST_ART_TARGET_SYNC_DEPS += $(OUT_DIR)/$(ART_TEST_LIST_device_$(TARGET_2ND_ARCH)_libnativebridgetest) |
| Andreas Gampe | 855564b | 2014-07-25 02:32:19 -0700 | [diff] [blame] | 188 | endif |
| 189 | |
| Nicolas Geoffray | d026ee5 | 2016-11-23 10:47:02 +0000 | [diff] [blame] | 190 | # Also need libopenjdkjvmti. |
| Nicolas Geoffray | ae02d2e | 2016-11-23 16:25:15 +0000 | [diff] [blame] | 191 | TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmti |
| 192 | TEST_ART_TARGET_SYNC_DEPS += libopenjdkjvmtid |
| Nicolas Geoffray | d026ee5 | 2016-11-23 10:47:02 +0000 | [diff] [blame] | 193 | |
| Andreas Gampe | 63fc30e | 2014-10-24 21:58:16 -0700 | [diff] [blame] | 194 | # All tests require the host executables. The tests also depend on the core images, but on |
| 195 | # specific version depending on the compiler. |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 196 | ART_TEST_HOST_RUN_TEST_DEPENDENCIES := \ |
| 197 | $(ART_HOST_EXECUTABLES) \ |
| Colin Cross | afd3c9e | 2016-09-16 13:47:21 -0700 | [diff] [blame] | 198 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagent) \ |
| 199 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libtiagentd) \ |
| 200 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagent) \ |
| 201 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libartagentd) \ |
| 202 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttest) \ |
| 203 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libarttestd) \ |
| 204 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(ART_HOST_ARCH)_libnativebridgetest) \ |
| Narayan Kamath | 67ef2c9 | 2015-11-16 10:17:35 +0000 | [diff] [blame] | 205 | $(ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \ |
| Andreas Gampe | 10edbb1 | 2016-01-06 17:59:49 -0800 | [diff] [blame] | 206 | $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \ |
| Andreas Gampe | f2c5dbd | 2016-11-17 22:50:33 -0800 | [diff] [blame] | 207 | $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \ |
| 208 | $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \ |
| 209 | $(ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \ |
| Ian Rogers | 665de8a | 2014-06-24 21:34:09 -0700 | [diff] [blame] | 210 | |
| 211 | ifneq ($(HOST_PREFER_32_BIT),true) |
| 212 | ART_TEST_HOST_RUN_TEST_DEPENDENCIES += \ |
| Colin Cross | afd3c9e | 2016-09-16 13:47:21 -0700 | [diff] [blame] | 213 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagent) \ |
| 214 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libtiagentd) \ |
| 215 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagent) \ |
| 216 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libartagentd) \ |
| 217 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttest) \ |
| 218 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libarttestd) \ |
| 219 | $(OUT_DIR)/$(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_libnativebridgetest) \ |
| Narayan Kamath | 67ef2c9 | 2015-11-16 10:17:35 +0000 | [diff] [blame] | 220 | $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$(ART_HOST_SHLIB_EXTENSION) \ |
| Andreas Gampe | 10edbb1 | 2016-01-06 17:59:49 -0800 | [diff] [blame] | 221 | $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdk$(ART_HOST_SHLIB_EXTENSION) \ |
| Andreas Gampe | f2c5dbd | 2016-11-17 22:50:33 -0800 | [diff] [blame] | 222 | $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$(ART_HOST_SHLIB_EXTENSION) \ |
| 223 | $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmti$(ART_HOST_SHLIB_EXTENSION) \ |
| 224 | $(2ND_ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkjvmtid$(ART_HOST_SHLIB_EXTENSION) \ |
| 225 | |
| Ian Rogers | 665de8a | 2014-06-24 21:34:09 -0700 | [diff] [blame] | 226 | endif |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 227 | |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 228 | host_prereq_rules := $(ART_TEST_HOST_RUN_TEST_DEPENDENCIES) |
| 229 | host_prereq_rules += $(HOST_JACK_CLASSPATH_DEPENDENCIES) |
| 230 | host_prereq_rules += $(HOST_CORE_IMAGE_OUT) |
| 231 | host_prereq_rules += $(TEST_ART_RUN_TEST_DEPENDENCIES) |
| 232 | host_prereq_rules += $(HOST_OUT_EXECUTABLES)/hprof-conv |
| Andreas Gampe | 63fc30e | 2014-10-24 21:58:16 -0700 | [diff] [blame] | 233 | |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 234 | target_prereq_rules := $(TARGET_JACK_CLASSPATH_DEPENDENCIES) |
| 235 | target_prereq_rules += test-art-target-sync |
| 236 | |
| 237 | define core-image-dependencies |
| 238 | ifeq ($(2),no-image) |
| 239 | $(1)_prereq_rules += $($(call name-to-var,$(1))_CORE_IMAGE_$(3)_pic_$(4)) |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 240 | else |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 241 | ifeq ($(2),npicimage) |
| 242 | $(1)_prereq_rules += $($(call name-to-var,$(1))_CORE_IMAGE_$(3)_no-pic_$(4)) |
| Ian Rogers | f5c44b3 | 2014-08-19 16:52:36 -0700 | [diff] [blame] | 243 | else |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 244 | ifeq ($(2),picimage) |
| 245 | $(1)_prereq_rules += $($(call name-to-var,$(1))_CORE_IMAGE_$(3)_pic_$(4)) |
| Alex Light | 03a112d | 2014-08-25 13:25:56 -0700 | [diff] [blame] | 246 | else |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 247 | ifeq ($(2),multinpicimage) |
| 248 | $(1)_prereq_rules += $($(call name-to-var,$(1))_CORE_IMAGE_$(3)_no-pic_multi_$(4)) |
| Andreas Gampe | c23c9c9 | 2014-10-28 14:47:25 -0700 | [diff] [blame] | 249 | else |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 250 | ifeq ($(2),multipicimage) |
| 251 | $(1)_prereq_rules += $($(call name-to-var,$(1))_CORE_IMAGE_$(3)_pic_multi_$(4)) |
| Jeff Hao | dcdc85b | 2015-12-04 14:06:18 -0800 | [diff] [blame] | 252 | endif |
| 253 | endif |
| Andreas Gampe | c23c9c9 | 2014-10-28 14:47:25 -0700 | [diff] [blame] | 254 | endif |
| Alex Light | 03a112d | 2014-08-25 13:25:56 -0700 | [diff] [blame] | 255 | endif |
| 256 | endif |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 257 | endef |
| Ian Rogers | afd9acc | 2014-06-17 08:21:54 -0700 | [diff] [blame] | 258 | |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 259 | # Generate list of dependencies required for given target - HOST or TARGET, IMAGE_TYPE, |
| 260 | # COMPILER_TYPE and ADDRESS_SIZE. |
| Nicolas Geoffray | 43c162f | 2015-03-09 12:21:26 +0000 | [diff] [blame] | 261 | $(foreach target, $(TARGET_TYPES), \ |
| Alex Light | 03a112d | 2014-08-25 13:25:56 -0700 | [diff] [blame] | 262 | $(foreach image, $(IMAGE_TYPES), \ |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 263 | $(foreach compiler, $(COMPILER_TYPES), \ |
| 264 | $(foreach address_size, $(ALL_ADDRESS_SIZES), $(eval \ |
| 265 | $(call core-image-dependencies,$(target),$(image),$(compiler),$(address_size))))))) |
| 266 | |
| 267 | test-art-host-run-test-dependencies : $(host_prereq_rules) |
| 268 | test-art-target-run-test-dependencies : $(target_prereq_rules) |
| 269 | test-art-run-test-dependencies : test-art-host-run-test-dependencies test-art-target-run-test-dependencies |
| 270 | |
| 271 | # Create a rule to build and run a test group of the following form: |
| 272 | # test-art-{1: host target}-run-test-{2: prebuild no-prebuild no-dex2oat \ |
| 273 | # interp-ac interpreter jit optimizing regalloc_gc relocate no-relocate \ |
| 274 | # relocate-npatchoat ntrace trace stream cms gcstress gcverify checkjni \ |
| 275 | # forcecopy picimage no-image multinpicimage npictest pictest debug ndebug \ |
| 276 | # ndebuggable debuggable} |
| 277 | # |
| 278 | # test-art-{1: host target}-run-test{2: 32 64} |
| 279 | define define-test-art-run-test-group |
| 280 | ifneq (,$(filter $(2),$(ALL_ADDRESS_SIZES))) |
| 281 | build_target := test-art-$(1)-run-test$(2) |
| 282 | else |
| 283 | build_target := test-art-$(1)-run-test-$(2) |
| 284 | endif |
| 285 | # Python testrunner support multi-threaded test run, however, to invoke the script, one |
| 286 | # has to provide the concurrency level for the run. To provide that value, the concurrency |
| 287 | # level of the make invocation is used. The make invocation information is extracted through |
| 288 | # `ps` and subsequently the number of threads is determined. |
| 289 | kati_pid = $(shell echo $$PPID) |
| 290 | make_pid = $$(shell ps -o ppid= -p $$(kati_pid)) |
| 291 | grep_build_targets_from_ps_keyword := -e |
| 292 | grep_build_targets_from_ps_keyword += $$(shell echo $(MAKECMDGOALS) | sed -e "s/\s\+/ -e /g") |
| 293 | ps_data := $$(shell ps aux | grep $$(make_pid) | grep $$(grep_build_targets_from_ps_keyword) ) |
| 294 | concurrency := $$(shell [[ "$$(ps_data)" =~ -[a-zA-Z]*j[[:space:]]*[0-9]+ ]] && [[ $$$$BASH_REMATCH =~ [0-9]+ ]] && echo $$$$BASH_REMATCH || echo 1) |
| 295 | |
| 296 | .PHONY: $$(build_target) |
| 297 | $$(build_target) : args := --$(1) --$(2) --verbose -j$$(concurrency) |
| 298 | $$(build_target) : test-art-$(1)-run-test-dependencies |
| 299 | ./art/test/testrunner/testrunner.py $$(args) |
| 300 | build_target := |
| 301 | concurrency := |
| 302 | ps_data := |
| 303 | kati_pid := |
| 304 | make_pid := |
| 305 | grep_build_targets_from_ps_keyword := |
| 306 | endef # define-test-art-run-test-group |
| 307 | |
| Alex Light | 03a112d | 2014-08-25 13:25:56 -0700 | [diff] [blame] | 308 | $(foreach target, $(TARGET_TYPES), \ |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 309 | $(foreach prebuild, $(PREBUILD_TYPES), $(eval \ |
| 310 | $(call define-test-art-run-test-group,$(target),$(prebuild))))) |
| Ian Rogers | f5c44b3 | 2014-08-19 16:52:36 -0700 | [diff] [blame] | 311 | $(foreach target, $(TARGET_TYPES), \ |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 312 | $(foreach run-type, $(RUN_TYPES), $(eval \ |
| 313 | $(call define-test-art-run-test-group,$(target),$(run-type))))) |
| Nicolas Geoffray | bd2c63c | 2014-10-16 18:04:12 +0100 | [diff] [blame] | 314 | $(foreach target, $(TARGET_TYPES), \ |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 315 | $(foreach compiler, $(COMPILER_TYPES), $(eval \ |
| 316 | $(call define-test-art-run-test-group,$(target),$(compiler))))) |
| 317 | $(foreach target, $(TARGET_TYPES), \ |
| 318 | $(foreach relocate, $(RELOCATE_TYPES), $(eval \ |
| 319 | $(call define-test-art-run-test-group,$(target),$(relocate))))) |
| 320 | $(foreach target, $(TARGET_TYPES), \ |
| 321 | $(foreach trace, $(TRACE_TYPES), $(eval \ |
| 322 | $(call define-test-art-run-test-group,$(target),$(trace))))) |
| 323 | $(foreach target, $(TARGET_TYPES), \ |
| 324 | $(foreach gc, $(GC_TYPES), $(eval \ |
| 325 | $(call define-test-art-run-test-group,$(target),$(gc))))) |
| 326 | $(foreach target, $(TARGET_TYPES), \ |
| 327 | $(foreach jni, $(JNI_TYPES), $(eval \ |
| 328 | $(call define-test-art-run-test-group,$(target),$(jni))))) |
| 329 | $(foreach target, $(TARGET_TYPES), \ |
| 330 | $(foreach debuggable, $(DEBUGGABLE_TYPES), $(eval \ |
| 331 | $(call define-test-art-run-test-group,$(target),$(debuggable))))) |
| 332 | $(foreach target, $(TARGET_TYPES), \ |
| 333 | $(foreach image, $(IMAGE_TYPES), $(eval \ |
| 334 | $(call define-test-art-run-test-group,$(target),$(image))))) |
| 335 | $(foreach target, $(TARGET_TYPES), \ |
| 336 | $(foreach address_size, $(ADDRESS_SIZES_$(call name-to-var,$(target))), $(eval \ |
| 337 | $(call define-test-art-run-test-group,$(target),$(address_size))))) |
| 338 | |
| 339 | # Create a rule to build and run a test group of the following form: |
| 340 | # test-art-{1: host target}-run-test |
| 341 | define define-test-art-host-or-target-run-test-group |
| 342 | build_target := test-art-$(1)-run-test |
| 343 | .PHONY: $$(build_target) |
| 344 | # Python testrunner support multi-threaded test run, however, to invoke the script, one |
| 345 | # has to provide the concurrency level for the run. To provide that value, the concurrency |
| 346 | # level of the make invocation is used. The make invocation information is extracted through |
| 347 | # `ps` and subsequently the number of threads is determined. |
| 348 | kati_pid = $(shell echo $$PPID) |
| 349 | make_pid = $$(shell ps -o ppid= -p $$(kati_pid)) |
| 350 | grep_build_targets_from_ps_keyword := -e |
| 351 | grep_build_targets_from_ps_keyword += $$(shell echo $(MAKECMDGOALS) | sed -e "s/\s\+/ -e /g") |
| 352 | ps_data := $$(shell ps aux | grep $$(make_pid) | grep $$(grep_build_targets_from_ps_keyword)) |
| 353 | concurrency := $$(shell [[ "$$(ps_data)" =~ -[a-zA-Z]*j[[:space:]]*[0-9]+ ]] && [[ $$$$BASH_REMATCH =~ [0-9]+ ]] && echo $$$$BASH_REMATCH || echo 1) |
| 354 | |
| 355 | $$(build_target) : args := --$(1) --verbose -j$$(concurrency) |
| 356 | $$(build_target) : test-art-$(1)-run-test-dependencies |
| 357 | ./art/test/testrunner/testrunner.py $$(args) |
| 358 | build_target := |
| 359 | args := |
| 360 | grep_build_targets_from_ps_keyword := |
| 361 | ps_data := |
| 362 | concurrency := |
| 363 | kati_pid := |
| 364 | make_pid := |
| 365 | endef # define-test-art-host-or-target-run-test-group |
| 366 | |
| 367 | $(foreach target, $(TARGET_TYPES), $(eval \ |
| 368 | $(call define-test-art-host-or-target-run-test-group,$(target)))) |
| 369 | |
| Ian Rogers | f5c44b3 | 2014-08-19 16:52:36 -0700 | [diff] [blame] | 370 | TARGET_TYPES := |
| 371 | PREBUILD_TYPES := |
| 372 | COMPILER_TYPES := |
| 373 | RELOCATE_TYPES := |
| 374 | TRACE_TYPES := |
| 375 | GC_TYPES := |
| 376 | JNI_TYPES := |
| Alex Light | 03a112d | 2014-08-25 13:25:56 -0700 | [diff] [blame] | 377 | IMAGE_TYPES := |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 378 | PICTEST_TYPES := |
| Nicolas Geoffray | bd2c63c | 2014-10-16 18:04:12 +0100 | [diff] [blame] | 379 | RUN_TYPES := |
| Nicolas Geoffray | 43c162f | 2015-03-09 12:21:26 +0000 | [diff] [blame] | 380 | DEBUGGABLE_TYPES := |
| Shubham Ajmera | b5a77b9 | 2016-12-07 19:39:29 +0000 | [diff] [blame] | 381 | ALL_ADDRESS_SIZES := |
| Alex Light | 7233c7e | 2016-07-28 10:07:45 -0700 | [diff] [blame] | 382 | LOCAL_PATH := |