Home | History | Annotate | Download | only in build
      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.
     18 LOCAL_PATH := art/test
     19 
     20 include art/build/Android.common_test.mk
     21 include art/build/Android.common_path.mk
     22 include art/build/Android.common_build.mk
     23 
     24 # Subdirectories in art/test which contain dex files used as inputs for gtests.
     25 GTEST_DEX_DIRECTORIES := \
     26   AbstractMethod \
     27   AllFields \
     28   ExceptionHandle \
     29   GetMethodSignature \
     30   ImageLayoutA \
     31   ImageLayoutB \
     32   Instrumentation \
     33   Interfaces \
     34   Lookup \
     35   Main \
     36   MultiDex \
     37   MultiDexModifiedSecondary \
     38   MyClass \
     39   MyClassNatives \
     40   Nested \
     41   NonStaticLeafMethods \
     42   Packages \
     43   ProtoCompare \
     44   ProtoCompare2 \
     45   ProfileTestMultiDex \
     46   StaticLeafMethods \
     47   Statics \
     48   StaticsFromCode \
     49   Transaction \
     50   XandY
     51 
     52 # Create build rules for each dex file recording the dependency.
     53 $(foreach dir,$(GTEST_DEX_DIRECTORIES), $(eval $(call build-art-test-dex,art-gtest,$(dir), \
     54   $(ART_TARGET_NATIVETEST_OUT),art/build/Android.gtest.mk,ART_TEST_TARGET_GTEST_$(dir)_DEX, \
     55   ART_TEST_HOST_GTEST_$(dir)_DEX)))
     56 
     57 # Create rules for MainStripped, a copy of Main with the classes.dex stripped
     58 # for the oat file assistant tests.
     59 ART_TEST_HOST_GTEST_MainStripped_DEX := $(basename $(ART_TEST_HOST_GTEST_Main_DEX))Stripped$(suffix $(ART_TEST_HOST_GTEST_Main_DEX))
     60 ART_TEST_TARGET_GTEST_MainStripped_DEX := $(basename $(ART_TEST_TARGET_GTEST_Main_DEX))Stripped$(suffix $(ART_TEST_TARGET_GTEST_Main_DEX))
     61 
     62 $(ART_TEST_HOST_GTEST_MainStripped_DEX): $(ART_TEST_HOST_GTEST_Main_DEX)
     63 	cp $< $@
     64 	$(call dexpreopt-remove-classes.dex,$@)
     65 
     66 $(ART_TEST_TARGET_GTEST_MainStripped_DEX): $(ART_TEST_TARGET_GTEST_Main_DEX)
     67 	cp $< $@
     68 	$(call dexpreopt-remove-classes.dex,$@)
     69 
     70 # Dex file dependencies for each gtest.
     71 ART_GTEST_dex2oat_environment_tests_DEX_DEPS := Main MainStripped MultiDex MultiDexModifiedSecondary Nested
     72 
     73 ART_GTEST_class_linker_test_DEX_DEPS := Interfaces MultiDex MyClass Nested Statics StaticsFromCode
     74 ART_GTEST_compiler_driver_test_DEX_DEPS := AbstractMethod StaticLeafMethods ProfileTestMultiDex
     75 ART_GTEST_dex_cache_test_DEX_DEPS := Main Packages
     76 ART_GTEST_dex_file_test_DEX_DEPS := GetMethodSignature Main Nested
     77 ART_GTEST_dex2oat_test_DEX_DEPS := $(ART_GTEST_dex2oat_environment_tests_DEX_DEPS)
     78 ART_GTEST_exception_test_DEX_DEPS := ExceptionHandle
     79 ART_GTEST_image_test_DEX_DEPS := ImageLayoutA ImageLayoutB
     80 ART_GTEST_instrumentation_test_DEX_DEPS := Instrumentation
     81 ART_GTEST_jni_compiler_test_DEX_DEPS := MyClassNatives
     82 ART_GTEST_jni_internal_test_DEX_DEPS := AllFields StaticLeafMethods
     83 ART_GTEST_oat_file_assistant_test_DEX_DEPS := $(ART_GTEST_dex2oat_environment_tests_DEX_DEPS)
     84 ART_GTEST_oat_file_test_DEX_DEPS := Main MultiDex
     85 ART_GTEST_oat_test_DEX_DEPS := Main
     86 ART_GTEST_object_test_DEX_DEPS := ProtoCompare ProtoCompare2 StaticsFromCode XandY
     87 ART_GTEST_proxy_test_DEX_DEPS := Interfaces
     88 ART_GTEST_reflection_test_DEX_DEPS := Main NonStaticLeafMethods StaticLeafMethods
     89 ART_GTEST_profile_assistant_test_DEX_DEPS := ProfileTestMultiDex
     90 ART_GTEST_profile_compilation_info_test_DEX_DEPS := ProfileTestMultiDex
     91 ART_GTEST_stub_test_DEX_DEPS := AllFields
     92 ART_GTEST_transaction_test_DEX_DEPS := Transaction
     93 ART_GTEST_type_lookup_table_test_DEX_DEPS := Lookup
     94 
     95 # The elf writer test has dependencies on core.oat.
     96 ART_GTEST_elf_writer_test_HOST_DEPS := $(HOST_CORE_IMAGE_default_no-pic_64) $(HOST_CORE_IMAGE_default_no-pic_32)
     97 ART_GTEST_elf_writer_test_TARGET_DEPS := $(TARGET_CORE_IMAGE_default_no-pic_64) $(TARGET_CORE_IMAGE_default_no-pic_32)
     98 
     99 ART_GTEST_dex2oat_environment_tests_HOST_DEPS := \
    100   $(HOST_CORE_IMAGE_default_no-pic_64) \
    101   $(HOST_CORE_IMAGE_default_no-pic_32)
    102 ART_GTEST_dex2oat_environment_tests_TARGET_DEPS := \
    103   $(TARGET_CORE_IMAGE_default_no-pic_64) \
    104   $(TARGET_CORE_IMAGE_default_no-pic_32)
    105 
    106 ART_GTEST_oat_file_assistant_test_HOST_DEPS := \
    107    $(ART_GTEST_dex2oat_environment_tests_HOST_DEPS) \
    108    $(HOST_OUT_EXECUTABLES)/patchoatd
    109 ART_GTEST_oat_file_assistant_test_TARGET_DEPS := \
    110    $(ART_GTEST_dex2oat_environment_tests_TARGET_DEPS) \
    111    $(TARGET_OUT_EXECUTABLES)/patchoatd
    112 
    113 
    114 ART_GTEST_dex2oat_test_HOST_DEPS := \
    115   $(ART_GTEST_dex2oat_environment_tests_HOST_DEPS)
    116 ART_GTEST_dex2oat_test_TARGET_DEPS := \
    117   $(ART_GTEST_dex2oat_environment_tests_TARGET_DEPS)
    118 
    119 # TODO: document why this is needed.
    120 ART_GTEST_proxy_test_HOST_DEPS := $(HOST_CORE_IMAGE_default_no-pic_64) $(HOST_CORE_IMAGE_default_no-pic_32)
    121 
    122 # The dexdump test requires an image and the dexdump utility.
    123 # TODO: rename into dexdump when migration completes
    124 ART_GTEST_dexdump_test_HOST_DEPS := \
    125   $(HOST_CORE_IMAGE_default_no-pic_64) \
    126   $(HOST_CORE_IMAGE_default_no-pic_32) \
    127   $(HOST_OUT_EXECUTABLES)/dexdump2
    128 ART_GTEST_dexdump_test_TARGET_DEPS := \
    129   $(TARGET_CORE_IMAGE_default_no-pic_64) \
    130   $(TARGET_CORE_IMAGE_default_no-pic_32) \
    131   dexdump2
    132 
    133 # The dexlist test requires an image and the dexlist utility.
    134 ART_GTEST_dexlist_test_HOST_DEPS := \
    135   $(HOST_CORE_IMAGE_default_no-pic_64) \
    136   $(HOST_CORE_IMAGE_default_no-pic_32) \
    137   $(HOST_OUT_EXECUTABLES)/dexlist
    138 ART_GTEST_dexlist_test_TARGET_DEPS := \
    139   $(TARGET_CORE_IMAGE_default_no-pic_64) \
    140   $(TARGET_CORE_IMAGE_default_no-pic_32) \
    141   dexlist
    142 
    143 # The imgdiag test has dependencies on core.oat since it needs to load it during the test.
    144 # For the host, also add the installed tool (in the base size, that should suffice). For the
    145 # target, just the module is fine, the sync will happen late enough.
    146 ART_GTEST_imgdiag_test_HOST_DEPS := \
    147   $(HOST_CORE_IMAGE_default_no-pic_64) \
    148   $(HOST_CORE_IMAGE_default_no-pic_32) \
    149   $(HOST_OUT_EXECUTABLES)/imgdiagd
    150 ART_GTEST_imgdiag_test_TARGET_DEPS := \
    151   $(TARGET_CORE_IMAGE_default_no-pic_64) \
    152   $(TARGET_CORE_IMAGE_default_no-pic_32) \
    153   imgdiagd
    154 
    155 # Oatdump test requires an image and oatfile to dump.
    156 ART_GTEST_oatdump_test_HOST_DEPS := \
    157   $(HOST_CORE_IMAGE_default_no-pic_64) \
    158   $(HOST_CORE_IMAGE_default_no-pic_32) \
    159   $(HOST_OUT_EXECUTABLES)/oatdumpd
    160 ART_GTEST_oatdump_test_TARGET_DEPS := \
    161   $(TARGET_CORE_IMAGE_default_no-pic_64) \
    162   $(TARGET_CORE_IMAGE_default_no-pic_32) \
    163   oatdump
    164 
    165 # Profile assistant tests requires profman utility.
    166 ART_GTEST_profile_assistant_test_HOST_DEPS := \
    167   $(HOST_OUT_EXECUTABLES)/profmand
    168 ART_GTEST_profile_assistant_test_TARGET_DEPS := \
    169   profman
    170 
    171 # The path for which all the source files are relative, not actually the current directory.
    172 LOCAL_PATH := art
    173 
    174 RUNTIME_GTEST_COMMON_SRC_FILES := \
    175   cmdline/cmdline_parser_test.cc \
    176   dexdump/dexdump_test.cc \
    177   dexlist/dexlist_test.cc \
    178   dex2oat/dex2oat_test.cc \
    179   imgdiag/imgdiag_test.cc \
    180   oatdump/oatdump_test.cc \
    181   profman/profile_assistant_test.cc \
    182   runtime/arch/arch_test.cc \
    183   runtime/arch/instruction_set_test.cc \
    184   runtime/arch/instruction_set_features_test.cc \
    185   runtime/arch/memcmp16_test.cc \
    186   runtime/arch/stub_test.cc \
    187   runtime/arch/arm/instruction_set_features_arm_test.cc \
    188   runtime/arch/arm64/instruction_set_features_arm64_test.cc \
    189   runtime/arch/mips/instruction_set_features_mips_test.cc \
    190   runtime/arch/mips64/instruction_set_features_mips64_test.cc \
    191   runtime/arch/x86/instruction_set_features_x86_test.cc \
    192   runtime/arch/x86_64/instruction_set_features_x86_64_test.cc \
    193   runtime/barrier_test.cc \
    194   runtime/base/arena_allocator_test.cc \
    195   runtime/base/bit_field_test.cc \
    196   runtime/base/bit_utils_test.cc \
    197   runtime/base/bit_vector_test.cc \
    198   runtime/base/hash_set_test.cc \
    199   runtime/base/hex_dump_test.cc \
    200   runtime/base/histogram_test.cc \
    201   runtime/base/mutex_test.cc \
    202   runtime/base/scoped_flock_test.cc \
    203   runtime/base/stringprintf_test.cc \
    204   runtime/base/time_utils_test.cc \
    205   runtime/base/timing_logger_test.cc \
    206   runtime/base/variant_map_test.cc \
    207   runtime/base/unix_file/fd_file_test.cc \
    208   runtime/class_linker_test.cc \
    209   runtime/compiler_filter_test.cc \
    210   runtime/dex_file_test.cc \
    211   runtime/dex_file_verifier_test.cc \
    212   runtime/dex_instruction_test.cc \
    213   runtime/dex_instruction_visitor_test.cc \
    214   runtime/dex_method_iterator_test.cc \
    215   runtime/entrypoints/math_entrypoints_test.cc \
    216   runtime/entrypoints/quick/quick_trampoline_entrypoints_test.cc \
    217   runtime/entrypoints_order_test.cc \
    218   runtime/gc/accounting/card_table_test.cc \
    219   runtime/gc/accounting/mod_union_table_test.cc \
    220   runtime/gc/accounting/space_bitmap_test.cc \
    221   runtime/gc/collector/immune_spaces_test.cc \
    222   runtime/gc/heap_test.cc \
    223   runtime/gc/reference_queue_test.cc \
    224   runtime/gc/space/dlmalloc_space_static_test.cc \
    225   runtime/gc/space/dlmalloc_space_random_test.cc \
    226   runtime/gc/space/large_object_space_test.cc \
    227   runtime/gc/space/rosalloc_space_static_test.cc \
    228   runtime/gc/space/rosalloc_space_random_test.cc \
    229   runtime/gc/space/space_create_test.cc \
    230   runtime/gc/task_processor_test.cc \
    231   runtime/gtest_test.cc \
    232   runtime/handle_scope_test.cc \
    233   runtime/indenter_test.cc \
    234   runtime/indirect_reference_table_test.cc \
    235   runtime/instrumentation_test.cc \
    236   runtime/intern_table_test.cc \
    237   runtime/interpreter/safe_math_test.cc \
    238   runtime/interpreter/unstarted_runtime_test.cc \
    239   runtime/java_vm_ext_test.cc \
    240   runtime/jit/profile_compilation_info_test.cc \
    241   runtime/lambda/closure_test.cc \
    242   runtime/lambda/shorty_field_type_test.cc \
    243   runtime/leb128_test.cc \
    244   runtime/mem_map_test.cc \
    245   runtime/memory_region_test.cc \
    246   runtime/mirror/dex_cache_test.cc \
    247   runtime/mirror/object_test.cc \
    248   runtime/monitor_pool_test.cc \
    249   runtime/monitor_test.cc \
    250   runtime/oat_file_test.cc \
    251   runtime/oat_file_assistant_test.cc \
    252   runtime/parsed_options_test.cc \
    253   runtime/prebuilt_tools_test.cc \
    254   runtime/reference_table_test.cc \
    255   runtime/thread_pool_test.cc \
    256   runtime/transaction_test.cc \
    257   runtime/type_lookup_table_test.cc \
    258   runtime/utf_test.cc \
    259   runtime/utils_test.cc \
    260   runtime/verifier/method_verifier_test.cc \
    261   runtime/verifier/reg_type_test.cc \
    262   runtime/zip_archive_test.cc
    263 
    264 COMPILER_GTEST_COMMON_SRC_FILES := \
    265   runtime/jni_internal_test.cc \
    266   runtime/proxy_test.cc \
    267   runtime/reflection_test.cc \
    268   compiler/compiled_method_test.cc \
    269   compiler/debug/dwarf/dwarf_test.cc \
    270   compiler/driver/compiled_method_storage_test.cc \
    271   compiler/driver/compiler_driver_test.cc \
    272   compiler/elf_writer_test.cc \
    273   compiler/exception_test.cc \
    274   compiler/image_test.cc \
    275   compiler/jni/jni_compiler_test.cc \
    276   compiler/linker/multi_oat_relative_patcher_test.cc \
    277   compiler/linker/output_stream_test.cc \
    278   compiler/oat_test.cc \
    279   compiler/optimizing/bounds_check_elimination_test.cc \
    280   compiler/optimizing/dominator_test.cc \
    281   compiler/optimizing/find_loops_test.cc \
    282   compiler/optimizing/graph_checker_test.cc \
    283   compiler/optimizing/graph_test.cc \
    284   compiler/optimizing/gvn_test.cc \
    285   compiler/optimizing/induction_var_analysis_test.cc \
    286   compiler/optimizing/induction_var_range_test.cc \
    287   compiler/optimizing/licm_test.cc \
    288   compiler/optimizing/live_interval_test.cc \
    289   compiler/optimizing/nodes_test.cc \
    290   compiler/optimizing/parallel_move_test.cc \
    291   compiler/optimizing/pretty_printer_test.cc \
    292   compiler/optimizing/reference_type_propagation_test.cc \
    293   compiler/optimizing/side_effects_test.cc \
    294   compiler/optimizing/ssa_test.cc \
    295   compiler/optimizing/stack_map_test.cc \
    296   compiler/optimizing/suspend_check_test.cc \
    297   compiler/utils/dedupe_set_test.cc \
    298   compiler/utils/intrusive_forward_list_test.cc \
    299   compiler/utils/swap_space_test.cc \
    300   compiler/utils/test_dex_file_builder_test.cc \
    301 
    302 COMPILER_GTEST_COMMON_SRC_FILES_all := \
    303   compiler/jni/jni_cfi_test.cc \
    304   compiler/optimizing/codegen_test.cc \
    305   compiler/optimizing/constant_folding_test.cc \
    306   compiler/optimizing/dead_code_elimination_test.cc \
    307   compiler/optimizing/linearize_test.cc \
    308   compiler/optimizing/liveness_test.cc \
    309   compiler/optimizing/live_ranges_test.cc \
    310   compiler/optimizing/optimizing_cfi_test.cc \
    311   compiler/optimizing/register_allocator_test.cc \
    312 
    313 COMPILER_GTEST_COMMON_SRC_FILES_arm := \
    314   compiler/linker/arm/relative_patcher_thumb2_test.cc \
    315   compiler/utils/arm/managed_register_arm_test.cc \
    316 
    317 COMPILER_GTEST_COMMON_SRC_FILES_arm64 := \
    318   compiler/linker/arm64/relative_patcher_arm64_test.cc \
    319   compiler/utils/arm64/managed_register_arm64_test.cc \
    320 
    321 COMPILER_GTEST_COMMON_SRC_FILES_mips := \
    322 
    323 COMPILER_GTEST_COMMON_SRC_FILES_mips64 := \
    324 
    325 COMPILER_GTEST_COMMON_SRC_FILES_x86 := \
    326   compiler/linker/x86/relative_patcher_x86_test.cc \
    327   compiler/utils/x86/managed_register_x86_test.cc \
    328 
    329 COMPILER_GTEST_COMMON_SRC_FILES_x86_64 := \
    330   compiler/linker/x86_64/relative_patcher_x86_64_test.cc \
    331 
    332 RUNTIME_GTEST_TARGET_SRC_FILES := \
    333   $(RUNTIME_GTEST_COMMON_SRC_FILES)
    334 
    335 RUNTIME_GTEST_HOST_SRC_FILES := \
    336   $(RUNTIME_GTEST_COMMON_SRC_FILES)
    337 
    338 COMPILER_GTEST_TARGET_SRC_FILES := \
    339   $(COMPILER_GTEST_COMMON_SRC_FILES)
    340 
    341 COMPILER_GTEST_TARGET_SRC_FILES_all := \
    342   $(COMPILER_GTEST_COMMON_SRC_FILES_all) \
    343 
    344 COMPILER_GTEST_TARGET_SRC_FILES_arm := \
    345   $(COMPILER_GTEST_COMMON_SRC_FILES_arm) \
    346 
    347 COMPILER_GTEST_TARGET_SRC_FILES_arm64 := \
    348   $(COMPILER_GTEST_COMMON_SRC_FILES_arm64) \
    349 
    350 COMPILER_GTEST_TARGET_SRC_FILES_mips := \
    351   $(COMPILER_GTEST_COMMON_SRC_FILES_mips) \
    352 
    353 COMPILER_GTEST_TARGET_SRC_FILES_mips64 := \
    354   $(COMPILER_GTEST_COMMON_SRC_FILES_mips64) \
    355 
    356 COMPILER_GTEST_TARGET_SRC_FILES_x86 := \
    357   $(COMPILER_GTEST_COMMON_SRC_FILES_x86) \
    358 
    359 COMPILER_GTEST_TARGET_SRC_FILES_x86_64 := \
    360   $(COMPILER_GTEST_COMMON_SRC_FILES_x86_64) \
    361 
    362 $(foreach arch,$(ART_TARGET_CODEGEN_ARCHS),$(eval COMPILER_GTEST_TARGET_SRC_FILES += $$(COMPILER_GTEST_TARGET_SRC_FILES_$(arch))))
    363 ifeq (true,$(ART_TARGET_COMPILER_TESTS))
    364   COMPILER_GTEST_TARGET_SRC_FILES += $(COMPILER_GTEST_TARGET_SRC_FILES_all)
    365 endif
    366 
    367 COMPILER_GTEST_HOST_SRC_FILES := \
    368   $(COMPILER_GTEST_COMMON_SRC_FILES) \
    369 
    370 COMPILER_GTEST_HOST_SRC_FILES_all := \
    371   $(COMPILER_GTEST_COMMON_SRC_FILES_all) \
    372 
    373 COMPILER_GTEST_HOST_SRC_FILES_arm := \
    374   $(COMPILER_GTEST_COMMON_SRC_FILES_arm) \
    375   compiler/utils/arm/assembler_arm32_test.cc \
    376   compiler/utils/arm/assembler_thumb2_test.cc \
    377   compiler/utils/assembler_thumb_test.cc \
    378 
    379 COMPILER_GTEST_HOST_SRC_FILES_arm64 := \
    380   $(COMPILER_GTEST_COMMON_SRC_FILES_arm64) \
    381 
    382 COMPILER_GTEST_HOST_SRC_FILES_mips := \
    383   $(COMPILER_GTEST_COMMON_SRC_FILES_mips) \
    384   compiler/utils/mips/assembler_mips_test.cc \
    385 
    386 COMPILER_GTEST_HOST_SRC_FILES_mips64 := \
    387   $(COMPILER_GTEST_COMMON_SRC_FILES_mips64) \
    388   compiler/utils/mips64/assembler_mips64_test.cc \
    389 
    390 COMPILER_GTEST_HOST_SRC_FILES_x86 := \
    391   $(COMPILER_GTEST_COMMON_SRC_FILES_x86) \
    392   compiler/utils/x86/assembler_x86_test.cc \
    393 
    394 COMPILER_GTEST_HOST_SRC_FILES_x86_64 := \
    395   $(COMPILER_GTEST_COMMON_SRC_FILES_x86_64) \
    396   compiler/utils/x86_64/assembler_x86_64_test.cc
    397 
    398 $(foreach arch,$(ART_HOST_CODEGEN_ARCHS),$(eval COMPILER_GTEST_HOST_SRC_FILES += $$(COMPILER_GTEST_HOST_SRC_FILES_$(arch))))
    399 ifeq (true,$(ART_HOST_COMPILER_TESTS))
    400   COMPILER_GTEST_HOST_SRC_FILES += $(COMPILER_GTEST_HOST_SRC_FILES_all)
    401 endif
    402 
    403 ART_TEST_CFLAGS :=
    404 
    405 include $(CLEAR_VARS)
    406 LOCAL_MODULE := libart-gtest
    407 LOCAL_MODULE_TAGS := optional
    408 LOCAL_CPP_EXTENSION := cc
    409 LOCAL_SRC_FILES := runtime/common_runtime_test.cc compiler/common_compiler_test.cc
    410 LOCAL_C_INCLUDES := $(ART_C_INCLUDES) art/runtime art/cmdline art/compiler
    411 LOCAL_SHARED_LIBRARIES := libartd libartd-compiler libdl
    412 LOCAL_STATIC_LIBRARIES += libgtest
    413 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk
    414 LOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.gtest.mk
    415 $(eval $(call set-target-local-clang-vars))
    416 $(eval $(call set-target-local-cflags-vars,debug))
    417 LOCAL_CLANG_CFLAGS += -Wno-used-but-marked-unused -Wno-deprecated -Wno-missing-noreturn # gtest issue
    418 include $(BUILD_SHARED_LIBRARY)
    419 
    420 include $(CLEAR_VARS)
    421 LOCAL_MODULE := libart-gtest
    422 LOCAL_MODULE_TAGS := optional
    423 LOCAL_CPP_EXTENSION := cc
    424 LOCAL_CFLAGS := $(ART_HOST_CFLAGS)
    425 LOCAL_ASFLAGS := $(ART_HOST_ASFLAGS)
    426 LOCAL_SRC_FILES := runtime/common_runtime_test.cc compiler/common_compiler_test.cc
    427 LOCAL_C_INCLUDES := $(ART_C_INCLUDES) art/runtime art/cmdline art/compiler
    428 LOCAL_SHARED_LIBRARIES := libartd libartd-compiler
    429 LOCAL_STATIC_LIBRARIES := libgtest_host
    430 LOCAL_LDLIBS += -ldl -lpthread
    431 LOCAL_MULTILIB := both
    432 LOCAL_CLANG := $(ART_HOST_CLANG)
    433 LOCAL_CLANG_CFLAGS += -Wno-used-but-marked-unused -Wno-deprecated -Wno-missing-noreturn  # gtest issue
    434 LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk
    435 LOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.gtest.mk
    436 include $(BUILD_HOST_SHARED_LIBRARY)
    437 
    438 # Variables holding collections of gtest pre-requisits used to run a number of gtests.
    439 ART_TEST_HOST_GTEST$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
    440 ART_TEST_HOST_GTEST$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
    441 ART_TEST_HOST_GTEST_RULES :=
    442 ART_TEST_HOST_VALGRIND_GTEST$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
    443 ART_TEST_HOST_VALGRIND_GTEST$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
    444 ART_TEST_HOST_VALGRIND_GTEST_RULES :=
    445 ART_TEST_TARGET_GTEST$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
    446 ART_TEST_TARGET_GTEST$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
    447 ART_TEST_TARGET_GTEST_RULES :=
    448 ART_TEST_HOST_GTEST_DEPENDENCIES :=
    449 
    450 ART_GTEST_TARGET_ANDROID_ROOT := '/system'
    451 ifneq ($(ART_TEST_ANDROID_ROOT),)
    452   ART_GTEST_TARGET_ANDROID_ROOT := $(ART_TEST_ANDROID_ROOT)
    453 endif
    454 
    455 # Define a make rule for a target device gtest.
    456 # $(1): gtest name - the name of the test we're building such as leb128_test.
    457 # $(2): 2ND_ or undefined - used to differentiate between the primary and secondary architecture.
    458 # $(3): LD_LIBRARY_PATH or undefined - used in case libartd.so is not in /system/lib/
    459 define define-art-gtest-rule-target
    460   gtest_rule := test-art-target-gtest-$(1)$$($(2)ART_PHONY_TEST_TARGET_SUFFIX)
    461 
    462   # Add the test dependencies to test-art-target-sync, which will be a prerequisite for the test
    463   # to ensure files are pushed to the device.
    464   TEST_ART_TARGET_SYNC_DEPS += \
    465     $$(ART_GTEST_$(1)_TARGET_DEPS) \
    466     $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_TARGET_GTEST_$(file)_DEX)) \
    467     $$(ART_TARGET_NATIVETEST_OUT)/$$(TARGET_$(2)ARCH)/$(1) \
    468     $$($(2)TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so \
    469     $$($(2)TARGET_OUT_SHARED_LIBRARIES)/libopenjdkd.so \
    470     $$(TARGET_OUT_JAVA_LIBRARIES)/core-libart-testdex.jar \
    471     $$(TARGET_OUT_JAVA_LIBRARIES)/core-oj-testdex.jar
    472 
    473 .PHONY: $$(gtest_rule)
    474 $$(gtest_rule): test-art-target-sync
    475 	$(hide) adb shell touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID
    476 	$(hide) adb shell rm $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID
    477 	$(hide) adb shell chmod 755 $(ART_TARGET_NATIVETEST_DIR)/$(TARGET_$(2)ARCH)/$(1)
    478 	$(hide) $$(call ART_TEST_SKIP,$$@) && \
    479 	  (adb shell "$(GCOV_ENV) LD_LIBRARY_PATH=$(3) ANDROID_ROOT=$(ART_GTEST_TARGET_ANDROID_ROOT) \
    480 	    $(ART_TARGET_NATIVETEST_DIR)/$(TARGET_$(2)ARCH)/$(1) && touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID" \
    481 	  && (adb pull $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID /tmp/ \
    482 	      && $$(call ART_TEST_PASSED,$$@)) \
    483 	  || $$(call ART_TEST_FAILED,$$@))
    484 	$(hide) rm -f /tmp/$$@-$$$$PPID
    485 
    486   ART_TEST_TARGET_GTEST$($(2)ART_PHONY_TEST_TARGET_SUFFIX)_RULES += $$(gtest_rule)
    487   ART_TEST_TARGET_GTEST_RULES += $$(gtest_rule)
    488   ART_TEST_TARGET_GTEST_$(1)_RULES += $$(gtest_rule)
    489 
    490   # Clear locally defined variables.
    491   gtest_rule :=
    492 endef  # define-art-gtest-rule-target
    493 
    494 ART_VALGRIND_DEPENDENCIES := \
    495   $(HOST_OUT_EXECUTABLES)/valgrind \
    496   $(HOST_OUT)/lib64/valgrind/memcheck-amd64-linux \
    497   $(HOST_OUT)/lib64/valgrind/memcheck-x86-linux \
    498   $(HOST_OUT)/lib64/valgrind/default.supp \
    499   $(HOST_OUT)/lib64/valgrind/vgpreload_core-amd64-linux.so \
    500   $(HOST_OUT)/lib64/valgrind/vgpreload_core-x86-linux.so \
    501   $(HOST_OUT)/lib64/valgrind/vgpreload_memcheck-amd64-linux.so \
    502   $(HOST_OUT)/lib64/valgrind/vgpreload_memcheck-x86-linux.so
    503 
    504 # Define make rules for a host gtests.
    505 # $(1): gtest name - the name of the test we're building such as leb128_test.
    506 # $(2): 2ND_ or undefined - used to differentiate between the primary and secondary architecture.
    507 define define-art-gtest-rule-host
    508   gtest_rule := test-art-host-gtest-$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX)
    509   gtest_exe := $$(HOST_OUT_EXECUTABLES)/$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX)
    510   # Dependencies for all host gtests.
    511   gtest_deps := $$(HOST_CORE_DEX_LOCATIONS) \
    512     $$($(2)ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$$(ART_HOST_SHLIB_EXTENSION) \
    513     $$($(2)ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$$(ART_HOST_SHLIB_EXTENSION) \
    514     $$(gtest_exe) \
    515     $$(ART_GTEST_$(1)_HOST_DEPS) \
    516     $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_HOST_GTEST_$(file)_DEX))
    517 
    518   ART_TEST_HOST_GTEST_DEPENDENCIES += $$(gtest_deps)
    519 
    520 .PHONY: $$(gtest_rule)
    521 $$(gtest_rule): $$(gtest_exe) $$(gtest_deps)
    522 	$(hide) ($$(call ART_TEST_SKIP,$$@) && $$< && $$(call ART_TEST_PASSED,$$@)) \
    523 	  || $$(call ART_TEST_FAILED,$$@)
    524 
    525   ART_TEST_HOST_GTEST$$($(2)ART_PHONY_TEST_HOST_SUFFIX)_RULES += $$(gtest_rule)
    526   ART_TEST_HOST_GTEST_RULES += $$(gtest_rule)
    527   ART_TEST_HOST_GTEST_$(1)_RULES += $$(gtest_rule)
    528 
    529 
    530 .PHONY: valgrind-$$(gtest_rule)
    531 valgrind-$$(gtest_rule): $$(gtest_exe) $$(gtest_deps) $(ART_VALGRIND_DEPENDENCIES)
    532 	$(hide) $$(call ART_TEST_SKIP,$$@) && \
    533 	  VALGRIND_LIB=$(HOST_OUT)/lib64/valgrind \
    534 	  $(HOST_OUT_EXECUTABLES)/valgrind --leak-check=full --error-exitcode=1 \
    535 	    --suppressions=art/test/valgrind-suppressions.txt $$< && \
    536 	    $$(call ART_TEST_PASSED,$$@) || $$(call ART_TEST_FAILED,$$@)
    537 
    538   ART_TEST_HOST_VALGRIND_GTEST$$($(2)ART_PHONY_TEST_HOST_SUFFIX)_RULES += valgrind-$$(gtest_rule)
    539   ART_TEST_HOST_VALGRIND_GTEST_RULES += valgrind-$$(gtest_rule)
    540   ART_TEST_HOST_VALGRIND_GTEST_$(1)_RULES += valgrind-$$(gtest_rule)
    541 
    542   # Clear locally defined variables.
    543   valgrind_gtest_rule :=
    544   gtest_rule :=
    545   gtest_exe :=
    546   gtest_deps :=
    547 endef  # define-art-gtest-rule-host
    548 
    549 # Define the rules to build and run host and target gtests.
    550 # $(1): target or host
    551 # $(2): file name
    552 # $(3): extra C includes
    553 # $(4): extra shared libraries
    554 define define-art-gtest
    555   ifneq ($(1),target)
    556     ifneq ($(1),host)
    557       $$(error expected target or host for argument 1, received $(1))
    558     endif
    559   endif
    560 
    561   art_target_or_host := $(1)
    562   art_gtest_filename := $(2)
    563   art_gtest_extra_c_includes := $(3)
    564   art_gtest_extra_shared_libraries := $(4)
    565 
    566   include $$(CLEAR_VARS)
    567   art_gtest_name := $$(notdir $$(basename $$(art_gtest_filename)))
    568   LOCAL_MODULE := $$(art_gtest_name)
    569   ifeq ($$(art_target_or_host),target)
    570     LOCAL_MODULE_TAGS := tests
    571   endif
    572   LOCAL_CPP_EXTENSION := $$(ART_CPP_EXTENSION)
    573   LOCAL_SRC_FILES := $$(art_gtest_filename)
    574   LOCAL_C_INCLUDES += $$(ART_C_INCLUDES) art/runtime art/cmdline $$(art_gtest_extra_c_includes)
    575   LOCAL_SHARED_LIBRARIES += libartd $$(art_gtest_extra_shared_libraries) libart-gtest libartd-disassembler
    576   LOCAL_WHOLE_STATIC_LIBRARIES += libsigchain
    577 
    578   LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk
    579   LOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.gtest.mk
    580 
    581   # Mac OS linker doesn't understand --export-dynamic.
    582   ifneq ($$(HOST_OS)-$$(art_target_or_host),darwin-host)
    583     # Allow jni_compiler_test to find Java_MyClassNatives_bar within itself using dlopen(NULL, ...).
    584     LOCAL_LDFLAGS := -Wl,--export-dynamic -Wl,-u,Java_MyClassNatives_bar -Wl,-u,Java_MyClassNatives_sbar
    585   endif
    586 
    587   LOCAL_CFLAGS := $$(ART_TEST_CFLAGS)
    588   ifeq ($$(art_target_or_host),target)
    589     $$(eval $$(call set-target-local-clang-vars))
    590     $$(eval $$(call set-target-local-cflags-vars,debug))
    591     LOCAL_SHARED_LIBRARIES += libdl libicuuc libicui18n libnativehelper libz libcutils libvixl
    592     LOCAL_MODULE_PATH_32 := $$(ART_TARGET_NATIVETEST_OUT)/$$(ART_TARGET_ARCH_32)
    593     LOCAL_MODULE_PATH_64 := $$(ART_TARGET_NATIVETEST_OUT)/$$(ART_TARGET_ARCH_64)
    594     LOCAL_MULTILIB := both
    595     LOCAL_CLANG_CFLAGS += -Wno-used-but-marked-unused -Wno-deprecated -Wno-missing-noreturn  # gtest issue
    596     include $$(BUILD_EXECUTABLE)
    597     library_path :=
    598     2nd_library_path :=
    599     ifneq ($$(ART_TEST_ANDROID_ROOT),)
    600       ifdef TARGET_2ND_ARCH
    601         2nd_library_path := $$(ART_TEST_ANDROID_ROOT)/lib
    602         library_path := $$(ART_TEST_ANDROID_ROOT)/lib64
    603       else
    604         ifneq ($(filter %64,$(TARGET_ARCH)),)
    605           library_path := $$(ART_TEST_ANDROID_ROOT)/lib64
    606         else
    607           library_path := $$(ART_TEST_ANDROID_ROOT)/lib
    608         endif
    609       endif
    610     endif
    611 
    612     ART_TEST_TARGET_GTEST_$$(art_gtest_name)_RULES :=
    613     ifdef TARGET_2ND_ARCH
    614       $$(eval $$(call define-art-gtest-rule-target,$$(art_gtest_name),2ND_,$$(2nd_library_path)))
    615     endif
    616     $$(eval $$(call define-art-gtest-rule-target,$$(art_gtest_name),,$$(library_path)))
    617 
    618     # A rule to run the different architecture versions of the gtest.
    619 .PHONY: test-art-target-gtest-$$(art_gtest_name)
    620 test-art-target-gtest-$$(art_gtest_name): $$(ART_TEST_TARGET_GTEST_$$(art_gtest_name)_RULES)
    621 	$$(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
    622 
    623     # Clear locally defined variables.
    624     ART_TEST_TARGET_GTEST_$$(art_gtest_name)_RULES :=
    625   else # host
    626     LOCAL_CLANG := $$(ART_HOST_CLANG)
    627     LOCAL_CFLAGS += $$(ART_HOST_CFLAGS) $$(ART_HOST_DEBUG_CFLAGS)
    628     LOCAL_ASFLAGS += $$(ART_HOST_ASFLAGS)
    629     LOCAL_SHARED_LIBRARIES += libicuuc-host libicui18n-host libnativehelper libziparchive-host libz-host libvixl
    630     LOCAL_LDLIBS := $(ART_HOST_LDLIBS) -lpthread -ldl
    631     LOCAL_IS_HOST_MODULE := true
    632     LOCAL_MULTILIB := both
    633     LOCAL_MODULE_STEM_32 := $$(art_gtest_name)32
    634     LOCAL_MODULE_STEM_64 := $$(art_gtest_name)64
    635     LOCAL_CLANG_CFLAGS += -Wno-used-but-marked-unused -Wno-deprecated -Wno-missing-noreturn  # gtest issue
    636     include $$(BUILD_HOST_EXECUTABLE)
    637 
    638     ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES :=
    639     ART_TEST_HOST_VALGRIND_GTEST_$$(art_gtest_name)_RULES :=
    640     ifneq ($$(HOST_PREFER_32_BIT),true)
    641       $$(eval $$(call define-art-gtest-rule-host,$$(art_gtest_name),2ND_))
    642     endif
    643     $$(eval $$(call define-art-gtest-rule-host,$$(art_gtest_name),))
    644 
    645     # Rules to run the different architecture versions of the gtest.
    646 .PHONY: test-art-host-gtest-$$(art_gtest_name)
    647 test-art-host-gtest-$$(art_gtest_name): $$(ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES)
    648 	$$(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
    649 
    650 .PHONY: valgrind-test-art-host-gtest-$$(art_gtest_name)
    651 valgrind-test-art-host-gtest-$$(art_gtest_name): $$(ART_TEST_HOST_VALGRIND_GTEST_$$(art_gtest_name)_RULES)
    652 	$$(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
    653 
    654     # Clear locally defined variables.
    655     ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES :=
    656     ART_TEST_HOST_VALGRIND_GTEST_$$(art_gtest_name)_RULES :=
    657   endif  # host_or_target
    658 
    659   # Clear locally defined variables.
    660   art_target_or_host :=
    661   art_gtest_filename :=
    662   art_gtest_extra_c_includes :=
    663   art_gtest_extra_shared_libraries :=
    664   art_gtest_name :=
    665   library_path :=
    666   2nd_library_path :=
    667 endef  # define-art-gtest
    668 
    669 
    670 ifeq ($(ART_BUILD_TARGET),true)
    671   $(foreach file,$(RUNTIME_GTEST_TARGET_SRC_FILES), $(eval $(call define-art-gtest,target,$(file),,libbacktrace)))
    672   $(foreach file,$(COMPILER_GTEST_TARGET_SRC_FILES), $(eval $(call define-art-gtest,target,$(file),art/compiler,libartd-compiler libbacktrace libnativeloader)))
    673 endif
    674 ifeq ($(ART_BUILD_HOST),true)
    675   $(foreach file,$(RUNTIME_GTEST_HOST_SRC_FILES), $(eval $(call define-art-gtest,host,$(file),,libbacktrace)))
    676   $(foreach file,$(COMPILER_GTEST_HOST_SRC_FILES), $(eval $(call define-art-gtest,host,$(file),art/compiler,libartd-compiler libbacktrace libnativeloader)))
    677 endif
    678 
    679 # Used outside the art project to get a list of the current tests
    680 RUNTIME_TARGET_GTEST_MAKE_TARGETS :=
    681 $(foreach file, $(RUNTIME_GTEST_TARGET_SRC_FILES), $(eval RUNTIME_TARGET_GTEST_MAKE_TARGETS += $$(notdir $$(basename $$(file)))))
    682 COMPILER_TARGET_GTEST_MAKE_TARGETS :=
    683 $(foreach file, $(COMPILER_GTEST_TARGET_SRC_FILES), $(eval COMPILER_TARGET_GTEST_MAKE_TARGETS += $$(notdir $$(basename $$(file)))))
    684 
    685 # Define all the combinations of host/target, valgrind and suffix such as:
    686 # test-art-host-gtest or valgrind-test-art-host-gtest64
    687 # $(1): host or target
    688 # $(2): HOST or TARGET
    689 # $(3): valgrind- or undefined
    690 # $(4): undefined, 32 or 64
    691 define define-test-art-gtest-combination
    692   ifeq ($(1),host)
    693     ifneq ($(2),HOST)
    694       $$(error argument mismatch $(1) and ($2))
    695     endif
    696   else
    697     ifneq ($(1),target)
    698       $$(error found $(1) expected host or target)
    699     endif
    700     ifneq ($(2),TARGET)
    701       $$(error argument mismatch $(1) and ($2))
    702     endif
    703   endif
    704 
    705   rule_name := $(3)test-art-$(1)-gtest$(4)
    706   ifeq ($(3),valgrind-)
    707     ifneq ($(1),host)
    708       $$(error valgrind tests only wired up for the host)
    709     endif
    710     dependencies := $$(ART_TEST_$(2)_VALGRIND_GTEST$(4)_RULES)
    711   else
    712     dependencies := $$(ART_TEST_$(2)_GTEST$(4)_RULES)
    713   endif
    714 
    715 .PHONY: $$(rule_name)
    716 $$(rule_name): $$(dependencies)
    717 	$(hide) $$(call ART_TEST_PREREQ_FINISHED,$$@)
    718 
    719   # Clear locally defined variables.
    720   rule_name :=
    721   dependencies :=
    722 endef  # define-test-art-gtest-combination
    723 
    724 $(eval $(call define-test-art-gtest-combination,target,TARGET,,))
    725 $(eval $(call define-test-art-gtest-combination,target,TARGET,,$(ART_PHONY_TEST_TARGET_SUFFIX)))
    726 ifdef TARGET_2ND_ARCH
    727 $(eval $(call define-test-art-gtest-combination,target,TARGET,,$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)))
    728 endif
    729 $(eval $(call define-test-art-gtest-combination,host,HOST,,))
    730 $(eval $(call define-test-art-gtest-combination,host,HOST,valgrind-,))
    731 $(eval $(call define-test-art-gtest-combination,host,HOST,,$(ART_PHONY_TEST_HOST_SUFFIX)))
    732 $(eval $(call define-test-art-gtest-combination,host,HOST,valgrind-,$(ART_PHONY_TEST_HOST_SUFFIX)))
    733 ifneq ($(HOST_PREFER_32_BIT),true)
    734 $(eval $(call define-test-art-gtest-combination,host,HOST,,$(2ND_ART_PHONY_TEST_HOST_SUFFIX)))
    735 $(eval $(call define-test-art-gtest-combination,host,HOST,valgrind-,$(2ND_ART_PHONY_TEST_HOST_SUFFIX)))
    736 endif
    737 
    738 # Clear locally defined variables.
    739 define-art-gtest-rule-target :=
    740 define-art-gtest-rule-host :=
    741 define-art-gtest :=
    742 define-test-art-gtest-combination :=
    743 RUNTIME_GTEST_COMMON_SRC_FILES :=
    744 COMPILER_GTEST_COMMON_SRC_FILES :=
    745 RUNTIME_GTEST_TARGET_SRC_FILES :=
    746 RUNTIME_GTEST_HOST_SRC_FILES :=
    747 COMPILER_GTEST_TARGET_SRC_FILES :=
    748 COMPILER_GTEST_HOST_SRC_FILES :=
    749 ART_TEST_CFLAGS :=
    750 ART_TEST_HOST_GTEST$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
    751 ART_TEST_HOST_GTEST$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
    752 ART_TEST_HOST_GTEST_RULES :=
    753 ART_TEST_HOST_VALGRIND_GTEST$(ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
    754 ART_TEST_HOST_VALGRIND_GTEST$(2ND_ART_PHONY_TEST_HOST_SUFFIX)_RULES :=
    755 ART_TEST_HOST_VALGRIND_GTEST_RULES :=
    756 ART_TEST_TARGET_GTEST$(ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
    757 ART_TEST_TARGET_GTEST$(2ND_ART_PHONY_TEST_TARGET_SUFFIX)_RULES :=
    758 ART_TEST_TARGET_GTEST_RULES :=
    759 ART_GTEST_TARGET_ANDROID_ROOT :=
    760 ART_GTEST_class_linker_test_DEX_DEPS :=
    761 ART_GTEST_compiler_driver_test_DEX_DEPS :=
    762 ART_GTEST_dex_file_test_DEX_DEPS :=
    763 ART_GTEST_exception_test_DEX_DEPS :=
    764 ART_GTEST_elf_writer_test_HOST_DEPS :=
    765 ART_GTEST_elf_writer_test_TARGET_DEPS :=
    766 ART_GTEST_jni_compiler_test_DEX_DEPS :=
    767 ART_GTEST_jni_internal_test_DEX_DEPS :=
    768 ART_GTEST_oat_file_assistant_test_DEX_DEPS :=
    769 ART_GTEST_oat_file_assistant_test_HOST_DEPS :=
    770 ART_GTEST_oat_file_assistant_test_TARGET_DEPS :=
    771 ART_GTEST_dex2oat_test_DEX_DEPS :=
    772 ART_GTEST_dex2oat_test_HOST_DEPS :=
    773 ART_GTEST_dex2oat_test_TARGET_DEPS :=
    774 ART_GTEST_object_test_DEX_DEPS :=
    775 ART_GTEST_proxy_test_DEX_DEPS :=
    776 ART_GTEST_reflection_test_DEX_DEPS :=
    777 ART_GTEST_stub_test_DEX_DEPS :=
    778 ART_GTEST_transaction_test_DEX_DEPS :=
    779 ART_GTEST_dex2oat_environment_tests_DEX_DEPS :=
    780 ART_VALGRIND_DEPENDENCIES :=
    781 $(foreach dir,$(GTEST_DEX_DIRECTORIES), $(eval ART_TEST_TARGET_GTEST_$(dir)_DEX :=))
    782 $(foreach dir,$(GTEST_DEX_DIRECTORIES), $(eval ART_TEST_HOST_GTEST_$(dir)_DEX :=))
    783 ART_TEST_HOST_GTEST_MainStripped_DEX :=
    784 ART_TEST_TARGET_GTEST_MainStripped_DEX :=
    785 GTEST_DEX_DIRECTORIES :=
    786 LOCAL_PATH :=
    787