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 17# The path for which all the dex files are relative, not actually the current directory. 18LOCAL_PATH := art/test 19 20include art/build/Android.common_test.mk 21include art/build/Android.common_path.mk 22include art/build/Android.common_build.mk 23 24# Subdirectories in art/test which contain dex files used as inputs for gtests. 25GTEST_DEX_DIRECTORIES := \ 26 AbstractMethod \ 27 AllFields \ 28 DefaultMethods \ 29 DexToDexDecompiler \ 30 ErroneousA \ 31 ErroneousB \ 32 ErroneousInit \ 33 Extension1 \ 34 Extension2 \ 35 ForClassLoaderA \ 36 ForClassLoaderB \ 37 ForClassLoaderC \ 38 ForClassLoaderD \ 39 ExceptionHandle \ 40 GetMethodSignature \ 41 HiddenApi \ 42 HiddenApiSignatures \ 43 HiddenApiStubs \ 44 ImageLayoutA \ 45 ImageLayoutB \ 46 IMTA \ 47 IMTB \ 48 Instrumentation \ 49 Interfaces \ 50 Lookup \ 51 Main \ 52 ManyMethods \ 53 MethodTypes \ 54 MultiDex \ 55 MultiDexModifiedSecondary \ 56 MyClass \ 57 MyClassNatives \ 58 Nested \ 59 NonStaticLeafMethods \ 60 Packages \ 61 ProtoCompare \ 62 ProtoCompare2 \ 63 ProfileTestMultiDex \ 64 StaticLeafMethods \ 65 Statics \ 66 StaticsFromCode \ 67 StringLiterals \ 68 Transaction \ 69 XandY 70 71# Create build rules for each dex file recording the dependency. 72$(foreach dir,$(GTEST_DEX_DIRECTORIES), $(eval $(call build-art-test-dex,art-gtest,$(dir), \ 73 $(ART_TARGET_NATIVETEST_OUT),art/build/Android.gtest.mk,ART_TEST_TARGET_GTEST_$(dir)_DEX, \ 74 ART_TEST_HOST_GTEST_$(dir)_DEX))) 75 76# Create rules for MainStripped, a copy of Main with the classes.dex stripped 77# for the oat file assistant tests. 78ART_TEST_HOST_GTEST_MainStripped_DEX := $(basename $(ART_TEST_HOST_GTEST_Main_DEX))Stripped$(suffix $(ART_TEST_HOST_GTEST_Main_DEX)) 79ART_TEST_TARGET_GTEST_MainStripped_DEX := $(basename $(ART_TEST_TARGET_GTEST_Main_DEX))Stripped$(suffix $(ART_TEST_TARGET_GTEST_Main_DEX)) 80 81# Create rules for MainUncompressedAligned, a copy of Main with the classes.dex uncompressed 82# for the dex2oat tests. 83ART_TEST_HOST_GTEST_MainUncompressedAligned_DEX := $(basename $(ART_TEST_HOST_GTEST_Main_DEX))UncompressedAligned$(suffix $(ART_TEST_HOST_GTEST_Main_DEX)) 84ART_TEST_TARGET_GTEST_MainUncompressedAligned_DEX := $(basename $(ART_TEST_TARGET_GTEST_Main_DEX))UncompressedAligned$(suffix $(ART_TEST_TARGET_GTEST_Main_DEX)) 85 86# Create rules for UncompressedEmpty, a classes.dex that is empty and uncompressed 87# for the dex2oat tests. 88ART_TEST_HOST_GTEST_EmptyUncompressed_DEX := $(basename $(ART_TEST_HOST_GTEST_Main_DEX))EmptyUncompressed$(suffix $(ART_TEST_HOST_GTEST_Main_DEX)) 89ART_TEST_TARGET_GTEST_EmptyUncompressed_DEX := $(basename $(ART_TEST_TARGET_GTEST_Main_DEX))EmptyUncompressed$(suffix $(ART_TEST_TARGET_GTEST_Main_DEX)) 90 91# Create rules for UncompressedEmptyAligned, a classes.dex that is empty, uncompressed, 92# and 4 byte aligned for the dex2oat tests. 93ART_TEST_HOST_GTEST_EmptyUncompressedAligned_DEX := $(basename $(ART_TEST_HOST_GTEST_Main_DEX))EmptyUncompressedAligned$(suffix $(ART_TEST_HOST_GTEST_Main_DEX)) 94ART_TEST_TARGET_GTEST_EmptyUncompressedAligned_DEX := $(basename $(ART_TEST_TARGET_GTEST_Main_DEX))EmptyUncompressedAligned$(suffix $(ART_TEST_TARGET_GTEST_Main_DEX)) 95 96# Create rules for MultiDexUncompressedAligned, a copy of MultiDex with the classes.dex uncompressed 97# for the OatFile tests. 98ART_TEST_HOST_GTEST_MultiDexUncompressedAligned_DEX := $(basename $(ART_TEST_HOST_GTEST_MultiDex_DEX))UncompressedAligned$(suffix $(ART_TEST_HOST_GTEST_MultiDex_DEX)) 99ART_TEST_TARGET_GTEST_MultiDexUncompressedAligned_DEX := $(basename $(ART_TEST_TARGET_GTEST_MultiDex_DEX))UncompressedAligned$(suffix $(ART_TEST_TARGET_GTEST_MultiDex_DEX)) 100 101ifdef ART_TEST_HOST_GTEST_Main_DEX 102$(ART_TEST_HOST_GTEST_MainStripped_DEX): $(ART_TEST_HOST_GTEST_Main_DEX) 103 cp $< $@ 104 $(call dexpreopt-remove-classes.dex,$@) 105endif 106 107ifdef ART_TEST_TARGET_GTEST_Main_DEX 108$(ART_TEST_TARGET_GTEST_MainStripped_DEX): $(ART_TEST_TARGET_GTEST_Main_DEX) 109 cp $< $@ 110 $(call dexpreopt-remove-classes.dex,$@) 111endif 112 113ifdef ART_TEST_HOST_GTEST_Main_DEX 114$(ART_TEST_HOST_GTEST_MainUncompressedAligned_DEX): $(ART_TEST_HOST_GTEST_Main_DEX) $(ZIPALIGN) 115 cp $< $@ 116 $(call uncompress-dexs, $@) 117 $(call align-package, $@) 118endif 119 120ifdef ART_TEST_TARGET_GTEST_Main_DEX 121$(ART_TEST_TARGET_GTEST_MainUncompressedAligned_DEX): $(ART_TEST_TARGET_GTEST_Main_DEX) $(ZIPALIGN) 122 cp $< $@ 123 $(call uncompress-dexs, $@) 124 $(call align-package, $@) 125endif 126 127ifdef ART_TEST_HOST_GTEST_Main_DEX 128$(ART_TEST_HOST_GTEST_EmptyUncompressed_DEX): 129 touch $@_classes.dex 130 zip -j -qD -X -0 $@ $@_classes.dex 131 rm $@_classes.dex 132endif 133 134ifdef ART_TEST_TARGET_GTEST_Main_DEX 135$(ART_TEST_TARGET_GTEST_EmptyUncompressed_DEX): 136 touch $@_classes.dex 137 zip -j -qD -X -0 $@ $@_classes.dex 138 rm $@_classes.dex 139endif 140 141ifdef ART_TEST_HOST_GTEST_Main_DEX 142$(ART_TEST_HOST_GTEST_EmptyUncompressedAligned_DEX): $(ZIPALIGN) 143 touch $@_classes.dex 144 zip -j -0 $@_temp.zip $@_classes.dex 145 $(ZIPALIGN) -f 4 $@_temp.zip $@ 146 rm $@_classes.dex 147 rm $@_temp.zip 148endif 149 150ifdef ART_TEST_TARGET_GTEST_Main_DEX 151$(ART_TEST_TARGET_GTEST_EmptyUncompressedAligned_DEX): $(ZIPALIGN) 152 touch $@_classes.dex 153 zip -j -0 $@_temp.zip $@_classes.dex 154 $(ZIPALIGN) -f 4 $@_temp.zip $@ 155 rm $@_classes.dex 156 rm $@_temp.zip 157endif 158 159ifdef ART_TEST_HOST_GTEST_MultiDex_DEX 160$(ART_TEST_HOST_GTEST_MultiDexUncompressedAligned_DEX): $(ART_TEST_HOST_GTEST_MultiDex_DEX) $(ZIPALIGN) 161 cp $< $@ 162 $(call uncompress-dexs, $@) 163 $(call align-package, $@) 164endif 165 166ifdef ART_TEST_TARGET_GTEST_MultiDex_DEX 167$(ART_TEST_TARGET_GTEST_MultiDexUncompressedAligned_DEX): $(ART_TEST_TARGET_GTEST_MultiDex_DEX) $(ZIPALIGN) 168 cp $< $@ 169 $(call uncompress-dexs, $@) 170 $(call align-package, $@) 171endif 172 173ART_TEST_GTEST_VerifierDeps_SRC := $(abspath $(wildcard $(LOCAL_PATH)/VerifierDeps/*.smali)) 174ART_TEST_GTEST_VerifierDepsMulti_SRC := $(abspath $(wildcard $(LOCAL_PATH)/VerifierDepsMulti/*.smali)) 175ART_TEST_HOST_GTEST_VerifierDeps_DEX := $(dir $(ART_TEST_HOST_GTEST_Main_DEX))$(subst Main,VerifierDeps,$(basename $(notdir $(ART_TEST_HOST_GTEST_Main_DEX))))$(suffix $(ART_TEST_HOST_GTEST_Main_DEX)) 176ART_TEST_TARGET_GTEST_VerifierDeps_DEX := $(dir $(ART_TEST_TARGET_GTEST_Main_DEX))$(subst Main,VerifierDeps,$(basename $(notdir $(ART_TEST_TARGET_GTEST_Main_DEX))))$(suffix $(ART_TEST_TARGET_GTEST_Main_DEX)) 177ART_TEST_HOST_GTEST_VerifierDepsMulti_DEX := $(dir $(ART_TEST_HOST_GTEST_Main_DEX))$(subst Main,VerifierDepsMulti,$(basename $(notdir $(ART_TEST_HOST_GTEST_Main_DEX))))$(suffix $(ART_TEST_HOST_GTEST_Main_DEX)) 178ART_TEST_TARGET_GTEST_VerifierDepsMulti_DEX := $(dir $(ART_TEST_TARGET_GTEST_Main_DEX))$(subst Main,VerifierDepsMulti,$(basename $(notdir $(ART_TEST_TARGET_GTEST_Main_DEX))))$(suffix $(ART_TEST_TARGET_GTEST_Main_DEX)) 179 180$(ART_TEST_HOST_GTEST_VerifierDeps_DEX): $(ART_TEST_GTEST_VerifierDeps_SRC) $(HOST_OUT_EXECUTABLES)/smali 181 $(HOST_OUT_EXECUTABLES)/smali assemble --output $@ $(filter %.smali,$^) 182 183$(ART_TEST_TARGET_GTEST_VerifierDeps_DEX): $(ART_TEST_GTEST_VerifierDeps_SRC) $(HOST_OUT_EXECUTABLES)/smali 184 $(HOST_OUT_EXECUTABLES)/smali assemble --output $@ $(filter %.smali,$^) 185 186$(ART_TEST_HOST_GTEST_VerifierDepsMulti_DEX): $(ART_TEST_GTEST_VerifierDepsMulti_SRC) $(HOST_OUT_EXECUTABLES)/smali 187 $(HOST_OUT_EXECUTABLES)/smali assemble --output $@ $(filter %.smali,$^) 188 189$(ART_TEST_TARGET_GTEST_VerifierDepsMulti_DEX): $(ART_TEST_GTEST_VerifierDepsMulti_SRC) $(HOST_OUT_EXECUTABLES)/smali 190 $(HOST_OUT_EXECUTABLES)/smali assemble --output $@ $(filter %.smali,$^) 191 192ART_TEST_GTEST_VerifySoftFailDuringClinit_SRC := $(abspath $(wildcard $(LOCAL_PATH)/VerifySoftFailDuringClinit/*.smali)) 193ART_TEST_HOST_GTEST_VerifySoftFailDuringClinit_DEX := $(dir $(ART_TEST_HOST_GTEST_Main_DEX))$(subst Main,VerifySoftFailDuringClinit,$(basename $(notdir $(ART_TEST_HOST_GTEST_Main_DEX))))$(suffix $(ART_TEST_HOST_GTEST_Main_DEX)) 194ART_TEST_TARGET_GTEST_VerifySoftFailDuringClinit_DEX := $(dir $(ART_TEST_TARGET_GTEST_Main_DEX))$(subst Main,VerifySoftFailDuringClinit,$(basename $(notdir $(ART_TEST_TARGET_GTEST_Main_DEX))))$(suffix $(ART_TEST_TARGET_GTEST_Main_DEX)) 195 196$(ART_TEST_HOST_GTEST_VerifySoftFailDuringClinit_DEX): $(ART_TEST_GTEST_VerifySoftFailDuringClinit_SRC) $(HOST_OUT_EXECUTABLES)/smali 197 $(HOST_OUT_EXECUTABLES)/smali assemble --output $@ $(filter %.smali,$^) 198 199$(ART_TEST_TARGET_GTEST_VerifySoftFailDuringClinit_DEX): $(ART_TEST_GTEST_VerifySoftFailDuringClinit_SRC) $(HOST_OUT_EXECUTABLES)/smali 200 $(HOST_OUT_EXECUTABLES)/smali assemble --output $@ $(filter %.smali,$^) 201 202# Dex file dependencies for each gtest. 203ART_GTEST_art_dex_file_loader_test_DEX_DEPS := GetMethodSignature Main Nested MultiDex 204ART_GTEST_dex2oat_environment_tests_DEX_DEPS := Main MainStripped MultiDex MultiDexModifiedSecondary MyClassNatives Nested VerifierDeps VerifierDepsMulti 205 206ART_GTEST_atomic_dex_ref_map_test_DEX_DEPS := Interfaces 207ART_GTEST_class_linker_test_DEX_DEPS := AllFields ErroneousA ErroneousB ErroneousInit ForClassLoaderA ForClassLoaderB ForClassLoaderC ForClassLoaderD Interfaces MethodTypes MultiDex MyClass Nested Statics StaticsFromCode 208ART_GTEST_class_loader_context_test_DEX_DEPS := Main MultiDex MyClass ForClassLoaderA ForClassLoaderB ForClassLoaderC ForClassLoaderD 209ART_GTEST_class_table_test_DEX_DEPS := XandY 210ART_GTEST_compiler_driver_test_DEX_DEPS := AbstractMethod StaticLeafMethods ProfileTestMultiDex 211ART_GTEST_dex_cache_test_DEX_DEPS := Main Packages MethodTypes 212ART_GTEST_dexanalyze_test_DEX_DEPS := MultiDex 213ART_GTEST_dexlayout_test_DEX_DEPS := ManyMethods 214ART_GTEST_dex2oat_test_DEX_DEPS := $(ART_GTEST_dex2oat_environment_tests_DEX_DEPS) ManyMethods Statics VerifierDeps MainUncompressedAligned EmptyUncompressed EmptyUncompressedAligned StringLiterals 215ART_GTEST_dex2oat_image_test_DEX_DEPS := $(ART_GTEST_dex2oat_environment_tests_DEX_DEPS) Statics VerifierDeps 216ART_GTEST_exception_test_DEX_DEPS := ExceptionHandle 217ART_GTEST_hiddenapi_test_DEX_DEPS := HiddenApi HiddenApiStubs 218ART_GTEST_hidden_api_test_DEX_DEPS := HiddenApiSignatures Main MultiDex 219ART_GTEST_image_test_DEX_DEPS := ImageLayoutA ImageLayoutB DefaultMethods VerifySoftFailDuringClinit 220ART_GTEST_imtable_test_DEX_DEPS := IMTA IMTB 221ART_GTEST_instrumentation_test_DEX_DEPS := Instrumentation 222ART_GTEST_jni_compiler_test_DEX_DEPS := MyClassNatives 223ART_GTEST_jni_internal_test_DEX_DEPS := AllFields StaticLeafMethods MyClassNatives 224ART_GTEST_oat_file_assistant_test_DEX_DEPS := $(ART_GTEST_dex2oat_environment_tests_DEX_DEPS) 225ART_GTEST_dexoptanalyzer_test_DEX_DEPS := $(ART_GTEST_dex2oat_environment_tests_DEX_DEPS) 226ART_GTEST_image_space_test_DEX_DEPS := $(ART_GTEST_dex2oat_environment_tests_DEX_DEPS) Extension1 Extension2 227ART_GTEST_oat_file_test_DEX_DEPS := Main MultiDex MainUncompressedAligned MultiDexUncompressedAligned MainStripped Nested MultiDexModifiedSecondary 228ART_GTEST_oat_test_DEX_DEPS := Main 229ART_GTEST_oat_writer_test_DEX_DEPS := Main 230# two_runtimes_test build off dex2oat_environment_test, which does sanity checks on the following dex files. 231ART_GTEST_two_runtimes_test_DEX_DEPS := Main MainStripped Nested MultiDex MultiDexModifiedSecondary 232ART_GTEST_object_test_DEX_DEPS := ProtoCompare ProtoCompare2 StaticsFromCode XandY 233ART_GTEST_proxy_test_DEX_DEPS := Interfaces 234ART_GTEST_reflection_test_DEX_DEPS := Main NonStaticLeafMethods StaticLeafMethods 235ART_GTEST_profile_assistant_test_DEX_DEPS := ProfileTestMultiDex 236ART_GTEST_profile_compilation_info_test_DEX_DEPS := ManyMethods ProfileTestMultiDex 237ART_GTEST_profile_boot_info_test_DEX_DEPS := ManyMethods ProfileTestMultiDex MultiDex 238ART_GTEST_profiling_info_test_DEX_DEPS := ProfileTestMultiDex 239ART_GTEST_runtime_callbacks_test_DEX_DEPS := XandY 240ART_GTEST_stub_test_DEX_DEPS := AllFields 241ART_GTEST_transaction_test_DEX_DEPS := Transaction 242ART_GTEST_type_lookup_table_test_DEX_DEPS := Lookup 243ART_GTEST_unstarted_runtime_test_DEX_DEPS := Nested 244ART_GTEST_heap_verification_test_DEX_DEPS := ProtoCompare ProtoCompare2 StaticsFromCode XandY 245ART_GTEST_verifier_deps_test_DEX_DEPS := VerifierDeps VerifierDepsMulti MultiDex 246ART_GTEST_dex_to_dex_decompiler_test_DEX_DEPS := VerifierDeps DexToDexDecompiler 247ART_GTEST_oatdump_app_test_DEX_DEPS := ProfileTestMultiDex 248ART_GTEST_oatdump_test_DEX_DEPS := ProfileTestMultiDex 249ART_GTEST_reg_type_test_DEX_DEPS := Interfaces 250 251# The elf writer test has dependencies on core.oat. 252ART_GTEST_elf_writer_test_HOST_DEPS := $(HOST_CORE_IMAGE_DEFAULT_64) $(HOST_CORE_IMAGE_DEFAULT_32) 253ART_GTEST_elf_writer_test_TARGET_DEPS := $(TARGET_CORE_IMAGE_DEFAULT_64) $(TARGET_CORE_IMAGE_DEFAULT_32) 254 255# The two_runtimes_test test has dependencies on core.oat. 256ART_GTEST_two_runtimes_test_HOST_DEPS := $(HOST_CORE_IMAGE_DEFAULT_64) $(HOST_CORE_IMAGE_DEFAULT_32) 257ART_GTEST_two_runtimes_test_TARGET_DEPS := $(TARGET_CORE_IMAGE_DEFAULT_64) $(TARGET_CORE_IMAGE_DEFAULT_32) 258 259# The transaction test has dependencies on core.oat. 260ART_GTEST_transaction_test_HOST_DEPS := $(HOST_CORE_IMAGE_DEFAULT_64) $(HOST_CORE_IMAGE_DEFAULT_32) 261ART_GTEST_transaction_test_TARGET_DEPS := $(TARGET_CORE_IMAGE_DEFAULT_64) $(TARGET_CORE_IMAGE_DEFAULT_32) 262 263ART_GTEST_dex2oat_environment_tests_HOST_DEPS := \ 264 $(HOST_CORE_IMAGE_optimizing_64) \ 265 $(HOST_CORE_IMAGE_optimizing_32) \ 266 $(HOST_CORE_IMAGE_interpreter_64) \ 267 $(HOST_CORE_IMAGE_interpreter_32) 268ART_GTEST_dex2oat_environment_tests_TARGET_DEPS := \ 269 $(TARGET_CORE_IMAGE_optimizing_64) \ 270 $(TARGET_CORE_IMAGE_optimizing_32) \ 271 $(TARGET_CORE_IMAGE_interpreter_64) \ 272 $(TARGET_CORE_IMAGE_interpreter_32) 273 274ART_GTEST_oat_file_test_HOST_DEPS := \ 275 $(ART_GTEST_dex2oat_environment_tests_HOST_DEPS) \ 276 $(HOST_OUT_EXECUTABLES)/dex2oatd 277ART_GTEST_oat_file_test_TARGET_DEPS := \ 278 $(ART_GTEST_dex2oat_environment_tests_TARGET_DEPS) \ 279 dex2oatd.com.android.art.debug 280 281ART_GTEST_oat_file_assistant_test_HOST_DEPS := \ 282 $(ART_GTEST_dex2oat_environment_tests_HOST_DEPS) 283ART_GTEST_oat_file_assistant_test_TARGET_DEPS := \ 284 $(ART_GTEST_dex2oat_environment_tests_TARGET_DEPS) 285 286ART_GTEST_dexoptanalyzer_test_HOST_DEPS := \ 287 $(ART_GTEST_dex2oat_environment_tests_HOST_DEPS) \ 288 $(HOST_OUT_EXECUTABLES)/dexoptanalyzerd 289ART_GTEST_dexoptanalyzer_test_TARGET_DEPS := \ 290 $(ART_GTEST_dex2oat_environment_tests_TARGET_DEPS) \ 291 $(TESTING_ART_APEX) # For dexoptanalyzerd. 292 293ART_GTEST_image_space_test_HOST_DEPS := \ 294 $(ART_GTEST_dex2oat_environment_tests_HOST_DEPS) 295ART_GTEST_image_space_test_TARGET_DEPS := \ 296 $(ART_GTEST_dex2oat_environment_tests_TARGET_DEPS) 297 298ART_GTEST_dex2oat_test_HOST_DEPS := \ 299 $(ART_GTEST_dex2oat_environment_tests_HOST_DEPS) \ 300 $(HOST_OUT_EXECUTABLES)/dex2oatd 301ART_GTEST_dex2oat_test_TARGET_DEPS := \ 302 $(ART_GTEST_dex2oat_environment_tests_TARGET_DEPS) \ 303 $(TESTING_ART_APEX) # For dex2oatd. 304 305ART_GTEST_dex2oat_image_test_HOST_DEPS := \ 306 $(ART_GTEST_dex2oat_environment_tests_HOST_DEPS) \ 307 $(HOST_OUT_EXECUTABLES)/dex2oatd 308ART_GTEST_dex2oat_image_test_TARGET_DEPS := \ 309 $(ART_GTEST_dex2oat_environment_tests_TARGET_DEPS) \ 310 $(TESTING_ART_APEX) # For dex2oatd. 311 312ART_GTEST_module_exclusion_test_HOST_DEPS := \ 313 $(ART_GTEST_dex2oat_image_test_HOST_DEPS) 314ART_GTEST_module_exclusion_test_TARGET_DEPS := \ 315 $(ART_GTEST_dex2oat_image_test_TARGET_DEPS) 316 317# TODO: document why this is needed. 318ART_GTEST_proxy_test_HOST_DEPS := $(HOST_CORE_IMAGE_DEFAULT_64) $(HOST_CORE_IMAGE_DEFAULT_32) 319 320# The dexdiag test requires the dexdiag utility. 321ART_GTEST_dexdiag_test_HOST_DEPS := $(HOST_OUT_EXECUTABLES)/dexdiag 322ART_GTEST_dexdiag_test_TARGET_DEPS := $(TESTING_ART_APEX) # For dexdiag. 323 324# The dexdump test requires an image and the dexdump utility. 325# TODO: rename into dexdump when migration completes 326ART_GTEST_dexdump_test_HOST_DEPS := \ 327 $(HOST_CORE_IMAGE_DEFAULT_64) \ 328 $(HOST_CORE_IMAGE_DEFAULT_32) \ 329 $(HOST_OUT_EXECUTABLES)/dexdump 330ART_GTEST_dexdump_test_TARGET_DEPS := \ 331 $(TARGET_CORE_IMAGE_DEFAULT_64) \ 332 $(TARGET_CORE_IMAGE_DEFAULT_32) \ 333 dexdump.com.android.art.debug 334 335# The dexanalyze test requires an image and the dexanalyze utility. 336ART_GTEST_dexanalyze_test_HOST_DEPS := \ 337 $(HOST_CORE_IMAGE_DEFAULT_64) \ 338 $(HOST_CORE_IMAGE_DEFAULT_32) \ 339 $(HOST_OUT_EXECUTABLES)/dexanalyze 340ART_GTEST_dexanalyze_test_TARGET_DEPS := \ 341 $(TARGET_CORE_IMAGE_DEFAULT_64) \ 342 $(TARGET_CORE_IMAGE_DEFAULT_32) \ 343 dexanalyze.com.android.art.debug 344 345# The dexlayout test requires an image and the dexlayout utility. 346# TODO: rename into dexdump when migration completes 347ART_GTEST_dexlayout_test_HOST_DEPS := \ 348 $(HOST_CORE_IMAGE_DEFAULT_64) \ 349 $(HOST_CORE_IMAGE_DEFAULT_32) \ 350 $(HOST_OUT_EXECUTABLES)/dexlayoutd \ 351 $(HOST_OUT_EXECUTABLES)/dexdump 352ART_GTEST_dexlayout_test_TARGET_DEPS := \ 353 $(TARGET_CORE_IMAGE_DEFAULT_64) \ 354 $(TARGET_CORE_IMAGE_DEFAULT_32) \ 355 dexlayoutd.com.android.art.debug \ 356 dexdump.com.android.art.debug 357 358# The dexlist test requires an image and the dexlist utility. 359ART_GTEST_dexlist_test_HOST_DEPS := \ 360 $(HOST_CORE_IMAGE_DEFAULT_64) \ 361 $(HOST_CORE_IMAGE_DEFAULT_32) \ 362 $(HOST_OUT_EXECUTABLES)/dexlist 363ART_GTEST_dexlist_test_TARGET_DEPS := \ 364 $(TARGET_CORE_IMAGE_DEFAULT_64) \ 365 $(TARGET_CORE_IMAGE_DEFAULT_32) \ 366 $(TESTING_ART_APEX) # For dexlist. 367 368# The imgdiag test has dependencies on core.oat since it needs to load it during the test. 369# For the host, also add the installed tool (in the base size, that should suffice). For the 370# target, just the module is fine, the sync will happen late enough. 371ART_GTEST_imgdiag_test_HOST_DEPS := \ 372 $(HOST_CORE_IMAGE_DEFAULT_64) \ 373 $(HOST_CORE_IMAGE_DEFAULT_32) \ 374 $(HOST_OUT_EXECUTABLES)/imgdiagd 375ART_GTEST_imgdiag_test_TARGET_DEPS := \ 376 $(TARGET_CORE_IMAGE_DEFAULT_64) \ 377 $(TARGET_CORE_IMAGE_DEFAULT_32) \ 378 imgdiagd.com.android.art.debug 379 380# Dex analyze test requires dexanalyze. 381ART_GTEST_dexanalyze_test_HOST_DEPS := \ 382 $(HOST_OUT_EXECUTABLES)/dexanalyze 383ART_GTEST_dexanalyze_test_TARGET_DEPS := \ 384 dexanalyze.com.android.art.debug 385 386# Oatdump test requires an image and oatfile to dump. 387ART_GTEST_oatdump_test_HOST_DEPS := \ 388 $(HOST_CORE_IMAGE_DEFAULT_64) \ 389 $(HOST_CORE_IMAGE_DEFAULT_32) \ 390 $(HOST_OUT_EXECUTABLES)/oatdumpd \ 391 $(HOST_OUT_EXECUTABLES)/oatdumpds \ 392 $(HOST_OUT_EXECUTABLES)/dexdump \ 393 $(HOST_OUT_EXECUTABLES)/dex2oatd \ 394 $(HOST_OUT_EXECUTABLES)/dex2oatds 395ART_GTEST_oatdump_test_TARGET_DEPS := \ 396 $(TARGET_CORE_IMAGE_DEFAULT_64) \ 397 $(TARGET_CORE_IMAGE_DEFAULT_32) \ 398 $(TESTING_ART_APEX) # For oatdumpd, dexdump, dex2oatd. 399ART_GTEST_oatdump_image_test_HOST_DEPS := $(ART_GTEST_oatdump_test_HOST_DEPS) 400ART_GTEST_oatdump_image_test_TARGET_DEPS := $(ART_GTEST_oatdump_test_TARGET_DEPS) 401ART_GTEST_oatdump_app_test_HOST_DEPS := $(ART_GTEST_oatdump_test_HOST_DEPS) 402ART_GTEST_oatdump_app_test_TARGET_DEPS := $(ART_GTEST_oatdump_test_TARGET_DEPS) 403 404# Profile assistant tests requires profman utility. 405ART_GTEST_profile_assistant_test_HOST_DEPS := $(HOST_OUT_EXECUTABLES)/profmand 406ART_GTEST_profile_assistant_test_TARGET_DEPS := $(TESTING_ART_APEX) # For profmand. 407 408ART_GTEST_hiddenapi_test_HOST_DEPS := \ 409 $(HOST_CORE_IMAGE_DEFAULT_64) \ 410 $(HOST_CORE_IMAGE_DEFAULT_32) \ 411 $(HOST_OUT_EXECUTABLES)/hiddenapid 412 413# The path for which all the source files are relative, not actually the current directory. 414LOCAL_PATH := art 415 416ART_TEST_MODULES := \ 417 art_cmdline_tests \ 418 art_compiler_host_tests \ 419 art_compiler_tests \ 420 art_dex2oat_tests \ 421 art_dexanalyze_tests \ 422 art_dexdiag_tests \ 423 art_dexdump_tests \ 424 art_dexlayout_tests \ 425 art_dexlist_tests \ 426 art_dexoptanalyzer_tests \ 427 art_hiddenapi_tests \ 428 art_imgdiag_tests \ 429 art_libartbase_tests \ 430 art_libartpalette_tests \ 431 art_libdexfile_external_tests \ 432 art_libdexfile_support_static_tests \ 433 art_libdexfile_support_tests \ 434 art_libdexfile_tests \ 435 art_libprofile_tests \ 436 art_oatdump_tests \ 437 art_profman_tests \ 438 art_runtime_compiler_tests \ 439 art_runtime_tests \ 440 art_sigchain_tests \ 441 442ART_TARGET_GTEST_NAMES := $(foreach tm,$(ART_TEST_MODULES),\ 443 $(foreach path,$(ART_TEST_LIST_device_$(TARGET_ARCH)_$(tm)),\ 444 $(notdir $(path))\ 445 )\ 446) 447 448ART_HOST_GTEST_FILES := $(foreach m,$(ART_TEST_MODULES),\ 449 $(ART_TEST_LIST_host_$(ART_HOST_ARCH)_$(m))) 450 451ifneq ($(HOST_PREFER_32_BIT),true) 4522ND_ART_HOST_GTEST_FILES += $(foreach m,$(ART_TEST_MODULES),\ 453 $(ART_TEST_LIST_host_$(2ND_ART_HOST_ARCH)_$(m))) 454endif 455 456# Variables holding collections of gtest pre-requisits used to run a number of gtests. 457ART_TEST_HOST_GTEST$(ART_PHONY_TEST_HOST_SUFFIX)_RULES := 458ART_TEST_HOST_GTEST$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES := 459ART_TEST_HOST_GTEST_RULES := 460ART_TEST_TARGET_GTEST$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES := 461ART_TEST_TARGET_GTEST$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES := 462ART_TEST_TARGET_GTEST_RULES := 463ART_TEST_HOST_GTEST_DEPENDENCIES := 464ART_TEST_TARGET_GTEST_DEPENDENCIES := 465 466ART_GTEST_TARGET_ANDROID_ROOT := '/system' 467ifneq ($(ART_TEST_ANDROID_ROOT),) 468 ART_GTEST_TARGET_ANDROID_ROOT := $(ART_TEST_ANDROID_ROOT) 469endif 470 471ART_GTEST_TARGET_ANDROID_I18N_ROOT := '/apex/com.android.i18n' 472ifneq ($(ART_TEST_ANDROID_I18N_ROOT),) 473 ART_GTEST_TARGET_ANDROID_I18N_ROOT := $(ART_TEST_ANDROID_I18N_ROOT) 474endif 475 476ART_GTEST_TARGET_ANDROID_ART_ROOT := '/apex/com.android.art' 477ifneq ($(ART_TEST_ANDROID_ART_ROOT),) 478 ART_GTEST_TARGET_ANDROID_ART_ROOT := $(ART_TEST_ANDROID_ART_ROOT) 479endif 480 481ART_GTEST_TARGET_ANDROID_TZDATA_ROOT := '/apex/com.android.tzdata' 482ifneq ($(ART_TEST_ANDROID_TZDATA_ROOT),) 483 ART_GTEST_TARGET_ANDROID_TZDATA_ROOT := $(ART_TEST_ANDROID_TZDATA_ROOT) 484endif 485 486# Define make rules for a host gtests. 487# $(1): gtest name - the name of the test we're building such as leb128_test. 488# $(2): path relative to $OUT to the test binary 489# $(3): 2ND_ or undefined - used to differentiate between the primary and secondary architecture. 490define define-art-gtest-rule-host 491 gtest_suffix := $(1)$$($(3)ART_PHONY_TEST_HOST_SUFFIX) 492 gtest_rule := test-art-host-gtest-$$(gtest_suffix) 493 gtest_output := $(call intermediates-dir-for,PACKAGING,art-host-gtest,HOST)/$$(gtest_suffix).xml 494 $$(call dist-for-goals,$$(gtest_rule),$$(gtest_output):gtest/$$(gtest_suffix)) 495 gtest_exe := $(2) 496 # Dependencies for all host gtests. 497 gtest_deps := $$(HOST_CORE_DEX_LOCATIONS) \ 498 $$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libicu_jni$$(ART_HOST_SHLIB_EXTENSION) \ 499 $$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$$(ART_HOST_SHLIB_EXTENSION) \ 500 $$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$$(ART_HOST_SHLIB_EXTENSION) \ 501 $$(gtest_exe) \ 502 $$(ART_GTEST_$(1)_HOST_DEPS) \ 503 $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_HOST_GTEST_$(file)_DEX)) \ 504 $(HOST_OUT_EXECUTABLES)/signal_dumper 505 506 ART_TEST_HOST_GTEST_DEPENDENCIES += $$(gtest_deps) 507 508.PHONY: $$(gtest_rule) 509$$(gtest_rule): $$(gtest_output) 510 511# Re-run the tests, even if nothing changed. Until the build system has a dedicated "no cache" 512# option, claim to write a file that is never produced. 513$$(gtest_output): .KATI_IMPLICIT_OUTPUTS := $$(gtest_output)-nocache 514$$(gtest_output): NAME := $$(gtest_rule) 515ifeq (,$(SANITIZE_HOST)) 516$$(gtest_output): $$(gtest_exe) $$(gtest_deps) 517 $(hide) ($$(call ART_TEST_SKIP,$$(NAME)) && \ 518 timeout --foreground -k 120s 2400s $(HOST_OUT_EXECUTABLES)/signal_dumper -s 15 \ 519 $$< --gtest_output=xml:$$@ && \ 520 $$(call ART_TEST_PASSED,$$(NAME))) || $$(call ART_TEST_FAILED,$$(NAME)) 521else 522# Note: envsetup currently exports ASAN_OPTIONS=detect_leaks=0 to suppress leak detection, as some 523# build tools (e.g., ninja) intentionally leak. We want leak checks when we run our tests, so 524# override ASAN_OPTIONS. b/37751350 525# Note 2: Under sanitization, also capture the output, and run it through the stack tool on failure 526# (with the x86-64 ABI, as this allows symbolization of both x86 and x86-64). We don't do this in 527# general as it loses all the color output, and we have our own symbolization step when not running 528# under ASAN. 529$$(gtest_output): $$(gtest_exe) $$(gtest_deps) 530 $(hide) ($$(call ART_TEST_SKIP,$$(NAME)) && set -o pipefail && \ 531 ASAN_OPTIONS=detect_leaks=1 timeout --foreground -k 120s 3600s \ 532 $(HOST_OUT_EXECUTABLES)/signal_dumper -s 15 \ 533 $$< --gtest_output=xml:$$@ 2>&1 | tee $$<.tmp.out >&2 && \ 534 { $$(call ART_TEST_PASSED,$$(NAME)) ; rm $$<.tmp.out ; }) || \ 535 ( grep -q AddressSanitizer $$<.tmp.out && export ANDROID_BUILD_TOP=`pwd` && \ 536 { echo "ABI: 'x86_64'" | cat - $$<.tmp.out | development/scripts/stack | tail -n 3000 ; } ; \ 537 rm $$<.tmp.out ; $$(call ART_TEST_FAILED,$$(NAME))) 538endif 539 540 ART_TEST_HOST_GTEST$$($(3)ART_PHONY_TEST_HOST_SUFFIX)_RULES += $$(gtest_rule) 541 ART_TEST_HOST_GTEST_RULES += $$(gtest_rule) 542 ART_TEST_HOST_GTEST_$(1)_RULES += $$(gtest_rule) 543 544 545 # Clear locally defined variables. 546 gtest_deps := 547 gtest_exe := 548 gtest_output := 549 gtest_rule := 550 gtest_suffix := 551endef # define-art-gtest-rule-host 552 553# Add the additional dependencies for the specified test 554# $(1): test name 555define add-art-gtest-dependencies 556 # Note that, both the primary and the secondary arches of the libs are built by depending 557 # on the module name. 558 gtest_deps := \ 559 $$(ART_GTEST_$(1)_TARGET_DEPS) \ 560 $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_TARGET_GTEST_$(file)_DEX)) \ 561 562 ART_TEST_TARGET_GTEST_DEPENDENCIES += $$(gtest_deps) 563 564 # Clear locally defined variables. 565 gtest_deps := 566endef # add-art-gtest-dependencies 567 568# $(1): file name 569# $(2): 2ND_ or undefined - used to differentiate between the primary and secondary architecture. 570define define-art-gtest-host 571 art_gtest_filename := $(1) 572 573 include $$(CLEAR_VARS) 574 art_gtest_name := $$(notdir $$(basename $$(art_gtest_filename))) 575 ifndef ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES 576 ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES := 577 endif 578 $$(eval $$(call define-art-gtest-rule-host,$$(art_gtest_name),$$(art_gtest_filename),$(2))) 579 580 # Clear locally defined variables. 581 art_gtest_filename := 582 art_gtest_name := 583endef # define-art-gtest-host 584 585# Define the rules to build and run gtests for both archs on host. 586# $(1): test name 587define define-art-gtest-host-both 588 art_gtest_name := $(1) 589 590.PHONY: test-art-host-gtest-$$(art_gtest_name) 591test-art-host-gtest-$$(art_gtest_name): $$(ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES) 592 $$(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@) 593 594 # Clear now unused variables. 595 ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES := 596 art_gtest_name := 597endef # define-art-gtest-host-both 598 599ifeq ($(ART_BUILD_TARGET),true) 600 $(foreach name,$(ART_TARGET_GTEST_NAMES), $(eval $(call add-art-gtest-dependencies,$(name),))) 601 ART_TEST_TARGET_GTEST_DEPENDENCIES += \ 602 libicu_jni.com.android.art.debug \ 603 libjavacore.com.android.art.debug \ 604 libopenjdkd.com.android.art.debug \ 605 $(foreach jar,$(TARGET_TEST_CORE_JARS),$(TARGET_OUT_JAVA_LIBRARIES)/$(jar).jar) 606endif 607ifeq ($(ART_BUILD_HOST),true) 608 $(foreach file,$(ART_HOST_GTEST_FILES), $(eval $(call define-art-gtest-host,$(file),))) 609 ifneq ($(HOST_PREFER_32_BIT),true) 610 $(foreach file,$(2ND_ART_HOST_GTEST_FILES), $(eval $(call define-art-gtest-host,$(file),2ND_))) 611 endif 612 # Rules to run the different architecture versions of the gtest. 613 $(foreach file,$(ART_HOST_GTEST_FILES), $(eval $(call define-art-gtest-host-both,$$(notdir $$(basename $$(file)))))) 614endif 615 616# Used outside the art project to get a list of the current tests 617RUNTIME_TARGET_GTEST_MAKE_TARGETS := 618art_target_gtest_files := $(foreach m,$(ART_TEST_MODULES),$(ART_TEST_LIST_device_$(TARGET_ARCH)_$(m))) 619# If testdir == testfile, assume this is not a test_per_src module 620$(foreach file,$(art_target_gtest_files),\ 621 $(eval testdir := $$(notdir $$(patsubst %/,%,$$(dir $$(file)))))\ 622 $(eval testfile := $$(notdir $$(basename $$(file))))\ 623 $(if $(call streq,$(testdir),$(testfile)),,\ 624 $(eval testfile := $(testdir)_$(testfile)))\ 625 $(eval RUNTIME_TARGET_GTEST_MAKE_TARGETS += $(testfile))\ 626) 627testdir := 628testfile := 629art_target_gtest_files := 630 631# Define all the combinations of host/target and suffix such as: 632# test-art-host-gtest or test-art-host-gtest64 633# $(1): host or target 634# $(2): HOST or TARGET 635# $(3): undefined, 32 or 64 636define define-test-art-gtest-combination 637 ifeq ($(1),host) 638 ifneq ($(2),HOST) 639 $$(error argument mismatch $(1) and ($2)) 640 endif 641 else 642 ifneq ($(1),target) 643 $$(error found $(1) expected host or target) 644 endif 645 ifneq ($(2),TARGET) 646 $$(error argument mismatch $(1) and ($2)) 647 endif 648 endif 649 650 rule_name := test-art-$(1)-gtest$(3) 651 dependencies := $$(ART_TEST_$(2)_GTEST$(3)_RULES) 652 653.PHONY: $$(rule_name) 654$$(rule_name): $$(dependencies) d8 655 $(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@) 656 657 # Clear locally defined variables. 658 rule_name := 659 dependencies := 660endef # define-test-art-gtest-combination 661 662$(eval $(call define-test-art-gtest-combination,target,TARGET,)) 663$(eval $(call define-test-art-gtest-combination,target,TARGET,$(ART_PHONY_TEST_TARGET_SUFFIX))) 664ifdef 2ND_ART_PHONY_TEST_TARGET_SUFFIX 665$(eval $(call define-test-art-gtest-combination,target,TARGET,$(2ND_ART_PHONY_TEST_TARGET_SUFFIX))) 666endif 667$(eval $(call define-test-art-gtest-combination,host,HOST,)) 668$(eval $(call define-test-art-gtest-combination,host,HOST,$(ART_PHONY_TEST_HOST_SUFFIX))) 669ifneq ($(HOST_PREFER_32_BIT),true) 670$(eval $(call define-test-art-gtest-combination,host,HOST,$(2ND_ART_PHONY_TEST_HOST_SUFFIX))) 671endif 672 673# Clear locally defined variables. 674define-art-gtest-rule-target := 675define-art-gtest-rule-host := 676define-art-gtest := 677define-test-art-gtest-combination := 678RUNTIME_GTEST_COMMON_SRC_FILES := 679COMPILER_GTEST_COMMON_SRC_FILES := 680RUNTIME_GTEST_TARGET_SRC_FILES := 681RUNTIME_GTEST_HOST_SRC_FILES := 682COMPILER_GTEST_TARGET_SRC_FILES := 683COMPILER_GTEST_HOST_SRC_FILES := 684ART_TEST_HOST_GTEST$(ART_PHONY_TEST_HOST_SUFFIX)_RULES := 685ART_TEST_HOST_GTEST$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES := 686ART_TEST_HOST_GTEST_RULES := 687ART_TEST_TARGET_GTEST$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES := 688ART_TEST_TARGET_GTEST$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES := 689ART_TEST_TARGET_GTEST_RULES := 690ART_GTEST_TARGET_ANDROID_ROOT := 691ART_GTEST_TARGET_ANDROID_I18N_ROOT := 692ART_GTEST_TARGET_ANDROID_ART_ROOT := 693ART_GTEST_TARGET_ANDROID_TZDATA_ROOT := 694ART_GTEST_class_linker_test_DEX_DEPS := 695ART_GTEST_class_table_test_DEX_DEPS := 696ART_GTEST_compiler_driver_test_DEX_DEPS := 697ART_GTEST_dex_file_test_DEX_DEPS := 698ART_GTEST_exception_test_DEX_DEPS := 699ART_GTEST_elf_writer_test_HOST_DEPS := 700ART_GTEST_elf_writer_test_TARGET_DEPS := 701ART_GTEST_imtable_test_DEX_DEPS := 702ART_GTEST_jni_compiler_test_DEX_DEPS := 703ART_GTEST_jni_internal_test_DEX_DEPS := 704ART_GTEST_oat_file_assistant_test_DEX_DEPS := 705ART_GTEST_oat_file_assistant_test_HOST_DEPS := 706ART_GTEST_oat_file_assistant_test_TARGET_DEPS := 707ART_GTEST_dexanalyze_test_DEX_DEPS := 708ART_GTEST_dexoptanalyzer_test_DEX_DEPS := 709ART_GTEST_dexoptanalyzer_test_HOST_DEPS := 710ART_GTEST_dexoptanalyzer_test_TARGET_DEPS := 711ART_GTEST_image_space_test_DEX_DEPS := 712ART_GTEST_image_space_test_HOST_DEPS := 713ART_GTEST_image_space_test_TARGET_DEPS := 714ART_GTEST_dex2oat_test_DEX_DEPS := 715ART_GTEST_dex2oat_test_HOST_DEPS := 716ART_GTEST_dex2oat_test_TARGET_DEPS := 717ART_GTEST_dex2oat_image_test_DEX_DEPS := 718ART_GTEST_dex2oat_image_test_HOST_DEPS := 719ART_GTEST_dex2oat_image_test_TARGET_DEPS := 720ART_GTEST_module_exclusion_test_HOST_DEPS := 721ART_GTEST_module_exclusion_test_TARGET_DEPS := 722ART_GTEST_object_test_DEX_DEPS := 723ART_GTEST_proxy_test_DEX_DEPS := 724ART_GTEST_reflection_test_DEX_DEPS := 725ART_GTEST_stub_test_DEX_DEPS := 726ART_GTEST_transaction_test_DEX_DEPS := 727ART_GTEST_dex2oat_environment_tests_DEX_DEPS := 728ART_GTEST_heap_verification_test_DEX_DEPS := 729ART_GTEST_verifier_deps_test_DEX_DEPS := 730$(foreach dir,$(GTEST_DEX_DIRECTORIES), $(eval ART_TEST_TARGET_GTEST_$(dir)_DEX :=)) 731$(foreach dir,$(GTEST_DEX_DIRECTORIES), $(eval ART_TEST_HOST_GTEST_$(dir)_DEX :=)) 732ART_TEST_HOST_GTEST_MainStripped_DEX := 733ART_TEST_TARGET_GTEST_MainStripped_DEX := 734ART_TEST_HOST_GTEST_MainUncompressedAligned_DEX := 735ART_TEST_TARGET_GTEST_MainUncompressedAligned_DEX := 736ART_TEST_HOST_GTEST_EmptyUncompressed_DEX := 737ART_TEST_TARGET_GTEST_EmptyUncompressed_DEX := 738ART_TEST_GTEST_VerifierDeps_SRC := 739ART_TEST_HOST_GTEST_VerifierDeps_DEX := 740ART_TEST_TARGET_GTEST_VerifierDeps_DEX := 741ART_TEST_GTEST_VerifySoftFailDuringClinit_SRC := 742ART_TEST_HOST_GTEST_VerifySoftFailDuringClinit_DEX := 743ART_TEST_TARGET_GTEST_VerifySoftFailDuringClinit_DEX := 744GTEST_DEX_DIRECTORIES := 745LOCAL_PATH := 746