From 6e95dd56e43b3a29fb8360bd94e31cd2eaab1d3d Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 12 Sep 2016 15:37:10 -0700 Subject: [PATCH] Convert art gtests to Android.bp This splits the compilation and running of the art gtests into two separate locations. The tests are now compiled in multiple Android.bp modules in each directory. art.go collects the installed locations of each test and exports it as make variables. art/build/Android.gtest.mk converts the list into the rules to run the tests. This has a few changes in behavior: - The rules to build tests are now always defined, and will build as part of mmma art or make checkbuild. - Host tests are no longer installed into out/host/linux-x86/bin, they are in out/host/linux-x86/nativetest[64]// - Target tests are now in /data/nativetest[64]/art/// Test: mmma -j art Test: m -j test-art-host Test: m -j test-art-target Change-Id: Iabcd99d43890e6b693688422b07a283c3226a496 --- Android.bp | 1 + build/Android.gtest.mk | 376 ++++++++----------------------------------------- build/art.go | 37 ++++- build/codegen.go | 83 ++++++++--- build/makevars.go | 19 ++- cmdline/Android.bp | 23 +++ compiler/Android.bp | 141 +++++++++++++++++++ dex2oat/Android.bp | 8 ++ dexdump/Android.bp | 8 ++ dexlayout/Android.bp | 8 ++ dexlist/Android.bp | 8 ++ imgdiag/Android.bp | 8 ++ oatdump/Android.bp | 7 + profman/Android.bp | 8 ++ runtime/Android.bp | 111 +++++++++++++++ test/Android.bp | 97 +++++++++++++ 16 files changed, 601 insertions(+), 342 deletions(-) create mode 100644 cmdline/Android.bp diff --git a/Android.bp b/Android.bp index e8b608efc..b9f1db5f4 100644 --- a/Android.bp +++ b/Android.bp @@ -20,6 +20,7 @@ art_static_dependencies = [ subdirs = [ "benchmark", "build", + "cmdline", "compiler", "dalvikvm", "dex2oat", diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk index b5bbfef1f..f73f49977 100644 --- a/build/Android.gtest.mk +++ b/build/Android.gtest.mk @@ -181,239 +181,25 @@ ART_GTEST_profile_assistant_test_TARGET_DEPS := \ # The path for which all the source files are relative, not actually the current directory. LOCAL_PATH := art -RUNTIME_GTEST_COMMON_SRC_FILES := \ - cmdline/cmdline_parser_test.cc \ - dexdump/dexdump_test.cc \ - dexlayout/dexlayout_test.cc \ - dexlist/dexlist_test.cc \ - dex2oat/dex2oat_test.cc \ - imgdiag/imgdiag_test.cc \ - oatdump/oatdump_test.cc \ - profman/profile_assistant_test.cc \ - runtime/arch/arch_test.cc \ - runtime/arch/instruction_set_test.cc \ - runtime/arch/instruction_set_features_test.cc \ - runtime/arch/memcmp16_test.cc \ - runtime/arch/stub_test.cc \ - runtime/arch/arm/instruction_set_features_arm_test.cc \ - runtime/arch/arm64/instruction_set_features_arm64_test.cc \ - runtime/arch/mips/instruction_set_features_mips_test.cc \ - runtime/arch/mips64/instruction_set_features_mips64_test.cc \ - runtime/arch/x86/instruction_set_features_x86_test.cc \ - runtime/arch/x86_64/instruction_set_features_x86_64_test.cc \ - runtime/barrier_test.cc \ - runtime/base/arena_allocator_test.cc \ - runtime/base/bit_field_test.cc \ - runtime/base/bit_utils_test.cc \ - runtime/base/bit_vector_test.cc \ - runtime/base/hash_set_test.cc \ - runtime/base/hex_dump_test.cc \ - runtime/base/histogram_test.cc \ - runtime/base/mutex_test.cc \ - runtime/base/scoped_flock_test.cc \ - runtime/base/stringprintf_test.cc \ - runtime/base/time_utils_test.cc \ - runtime/base/timing_logger_test.cc \ - runtime/base/transform_array_ref_test.cc \ - runtime/base/transform_iterator_test.cc \ - runtime/base/variant_map_test.cc \ - runtime/base/unix_file/fd_file_test.cc \ - runtime/class_linker_test.cc \ - runtime/compiler_filter_test.cc \ - runtime/dex_file_test.cc \ - runtime/dex_file_verifier_test.cc \ - runtime/dex_instruction_test.cc \ - runtime/dex_instruction_visitor_test.cc \ - runtime/dex_method_iterator_test.cc \ - runtime/entrypoints/math_entrypoints_test.cc \ - runtime/entrypoints/quick/quick_trampoline_entrypoints_test.cc \ - runtime/entrypoints_order_test.cc \ - runtime/gc/accounting/card_table_test.cc \ - runtime/gc/accounting/mod_union_table_test.cc \ - runtime/gc/accounting/space_bitmap_test.cc \ - runtime/gc/collector/immune_spaces_test.cc \ - runtime/gc/heap_test.cc \ - runtime/gc/reference_queue_test.cc \ - runtime/gc/space/dlmalloc_space_static_test.cc \ - runtime/gc/space/dlmalloc_space_random_test.cc \ - runtime/gc/space/large_object_space_test.cc \ - runtime/gc/space/rosalloc_space_static_test.cc \ - runtime/gc/space/rosalloc_space_random_test.cc \ - runtime/gc/space/space_create_test.cc \ - runtime/gc/system_weak_test.cc \ - runtime/gc/task_processor_test.cc \ - runtime/gtest_test.cc \ - runtime/handle_scope_test.cc \ - runtime/indenter_test.cc \ - runtime/indirect_reference_table_test.cc \ - runtime/instrumentation_test.cc \ - runtime/intern_table_test.cc \ - runtime/interpreter/safe_math_test.cc \ - runtime/interpreter/unstarted_runtime_test.cc \ - runtime/java_vm_ext_test.cc \ - runtime/jit/profile_compilation_info_test.cc \ - runtime/leb128_test.cc \ - runtime/mem_map_test.cc \ - runtime/memory_region_test.cc \ - runtime/mirror/dex_cache_test.cc \ - runtime/mirror/object_test.cc \ - runtime/monitor_pool_test.cc \ - runtime/monitor_test.cc \ - runtime/oat_file_test.cc \ - runtime/oat_file_assistant_test.cc \ - runtime/parsed_options_test.cc \ - runtime/prebuilt_tools_test.cc \ - runtime/reference_table_test.cc \ - runtime/thread_pool_test.cc \ - runtime/transaction_test.cc \ - runtime/type_lookup_table_test.cc \ - runtime/utf_test.cc \ - runtime/utils_test.cc \ - runtime/verifier/method_verifier_test.cc \ - runtime/verifier/reg_type_test.cc \ - runtime/zip_archive_test.cc - -COMPILER_GTEST_COMMON_SRC_FILES := \ - runtime/jni_internal_test.cc \ - runtime/proxy_test.cc \ - runtime/reflection_test.cc \ - compiler/compiled_method_test.cc \ - compiler/debug/dwarf/dwarf_test.cc \ - compiler/driver/compiled_method_storage_test.cc \ - compiler/driver/compiler_driver_test.cc \ - compiler/elf_writer_test.cc \ - compiler/exception_test.cc \ - compiler/image_test.cc \ - compiler/jni/jni_compiler_test.cc \ - compiler/linker/multi_oat_relative_patcher_test.cc \ - compiler/linker/output_stream_test.cc \ - compiler/oat_test.cc \ - compiler/optimizing/bounds_check_elimination_test.cc \ - compiler/optimizing/dominator_test.cc \ - compiler/optimizing/find_loops_test.cc \ - compiler/optimizing/graph_checker_test.cc \ - compiler/optimizing/graph_test.cc \ - compiler/optimizing/gvn_test.cc \ - compiler/optimizing/induction_var_analysis_test.cc \ - compiler/optimizing/induction_var_range_test.cc \ - compiler/optimizing/licm_test.cc \ - compiler/optimizing/live_interval_test.cc \ - compiler/optimizing/nodes_test.cc \ - compiler/optimizing/parallel_move_test.cc \ - compiler/optimizing/pretty_printer_test.cc \ - compiler/optimizing/reference_type_propagation_test.cc \ - compiler/optimizing/side_effects_test.cc \ - compiler/optimizing/ssa_test.cc \ - compiler/optimizing/stack_map_test.cc \ - compiler/optimizing/suspend_check_test.cc \ - compiler/utils/dedupe_set_test.cc \ - compiler/utils/intrusive_forward_list_test.cc \ - compiler/utils/string_reference_test.cc \ - compiler/utils/swap_space_test.cc \ - compiler/utils/test_dex_file_builder_test.cc - -COMPILER_GTEST_COMMON_SRC_FILES_all := \ - compiler/jni/jni_cfi_test.cc \ - compiler/optimizing/codegen_test.cc \ - compiler/optimizing/optimizing_cfi_test.cc \ - -COMPILER_GTEST_COMMON_SRC_FILES_arm := \ - compiler/linker/arm/relative_patcher_thumb2_test.cc \ - compiler/utils/arm/managed_register_arm_test.cc \ - -COMPILER_GTEST_COMMON_SRC_FILES_arm64 := \ - compiler/linker/arm64/relative_patcher_arm64_test.cc \ - compiler/utils/arm64/managed_register_arm64_test.cc \ - -COMPILER_GTEST_COMMON_SRC_FILES_mips := \ - compiler/linker/mips/relative_patcher_mips_test.cc \ - compiler/linker/mips/relative_patcher_mips32r6_test.cc \ - -COMPILER_GTEST_COMMON_SRC_FILES_mips64 := \ - -COMPILER_GTEST_COMMON_SRC_FILES_x86 := \ - compiler/linker/x86/relative_patcher_x86_test.cc \ - compiler/utils/x86/managed_register_x86_test.cc \ - -# These tests are testing architecture-independent functionality, but happen -# to use x86 codegen as part of the test. -COMPILER_GTEST_COMMON_SRC_FILES_x86 += \ - compiler/optimizing/constant_folding_test.cc \ - compiler/optimizing/dead_code_elimination_test.cc \ - compiler/optimizing/linearize_test.cc \ - compiler/optimizing/live_ranges_test.cc \ - compiler/optimizing/liveness_test.cc \ - compiler/optimizing/register_allocator_test.cc \ - -COMPILER_GTEST_COMMON_SRC_FILES_x86_64 := \ - compiler/linker/x86_64/relative_patcher_x86_64_test.cc \ - -RUNTIME_GTEST_TARGET_SRC_FILES := \ - $(RUNTIME_GTEST_COMMON_SRC_FILES) - -RUNTIME_GTEST_HOST_SRC_FILES := \ - $(RUNTIME_GTEST_COMMON_SRC_FILES) - -COMPILER_GTEST_TARGET_SRC_FILES := \ - $(COMPILER_GTEST_COMMON_SRC_FILES) - -COMPILER_GTEST_TARGET_SRC_FILES_all := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_all) \ - -COMPILER_GTEST_TARGET_SRC_FILES_arm := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_arm) \ - -COMPILER_GTEST_TARGET_SRC_FILES_arm64 := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_arm64) \ - -COMPILER_GTEST_TARGET_SRC_FILES_mips := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_mips) \ - -COMPILER_GTEST_TARGET_SRC_FILES_mips64 := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_mips64) \ - -COMPILER_GTEST_TARGET_SRC_FILES_x86 := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_x86) \ - -COMPILER_GTEST_TARGET_SRC_FILES_x86_64 := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_x86_64) \ - -$(foreach arch,$(ART_TARGET_CODEGEN_ARCHS),$(eval COMPILER_GTEST_TARGET_SRC_FILES += $$(COMPILER_GTEST_TARGET_SRC_FILES_$(arch)))) -COMPILER_GTEST_TARGET_SRC_FILES += $(COMPILER_GTEST_TARGET_SRC_FILES_all) - -COMPILER_GTEST_HOST_SRC_FILES := \ - $(COMPILER_GTEST_COMMON_SRC_FILES) \ - -COMPILER_GTEST_HOST_SRC_FILES_all := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_all) \ - -COMPILER_GTEST_HOST_SRC_FILES_arm := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_arm) \ - compiler/utils/arm/assembler_thumb2_test.cc \ - compiler/utils/assembler_thumb_test.cc \ - -COMPILER_GTEST_HOST_SRC_FILES_arm64 := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_arm64) \ - -COMPILER_GTEST_HOST_SRC_FILES_mips := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_mips) \ - compiler/utils/mips/assembler_mips_test.cc \ - compiler/utils/mips/assembler_mips32r6_test.cc \ - -COMPILER_GTEST_HOST_SRC_FILES_mips64 := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_mips64) \ - compiler/utils/mips64/assembler_mips64_test.cc \ - -COMPILER_GTEST_HOST_SRC_FILES_x86 := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_x86) \ - compiler/utils/x86/assembler_x86_test.cc \ - -COMPILER_GTEST_HOST_SRC_FILES_x86_64 := \ - $(COMPILER_GTEST_COMMON_SRC_FILES_x86_64) \ - compiler/utils/x86_64/assembler_x86_64_test.cc - -$(foreach arch,$(ART_HOST_CODEGEN_ARCHS),$(eval COMPILER_GTEST_HOST_SRC_FILES += $$(COMPILER_GTEST_HOST_SRC_FILES_$(arch)))) -COMPILER_GTEST_HOST_SRC_FILES += $(COMPILER_GTEST_HOST_SRC_FILES_all) +ART_TEST_MODULES := \ + art_cmdline_tests \ + art_compiler_tests \ + art_compiler_host_tests \ + art_dex2oat_tests \ + art_dexdump_tests \ + art_dexlayout_tests \ + art_dexlist_tests \ + art_imgdiag_tests \ + art_oatdump_tests \ + art_profman_tests \ + art_runtime_tests \ + art_runtime_compiler_tests \ + +ART_TARGET_GTEST_FILES := $(foreach m,$(ART_TEST_MODULES),\ + $(ART_TEST_LIST_device_$(TARGET_ARCH)_$(m))) + +ART_HOST_GTEST_FILES := $(foreach m,$(ART_TEST_MODULES),\ + $(ART_TEST_LIST_host_$(HOST_ARCH)_$(m))) ART_TEST_CFLAGS := @@ -461,63 +247,70 @@ include $(BUILD_PREBUILT) # Define a make rule for a target device gtest. # $(1): gtest name - the name of the test we're building such as leb128_test. -# $(2): 2ND_ or undefined - used to differentiate between the primary and secondary architecture. -# $(3): LD_LIBRARY_PATH or undefined - used in case libartd.so is not in /system/lib/ +# $(2): path relative to $OUT to the test binary +# $(3): 2ND_ or undefined - used to differentiate between the primary and secondary architecture. +# $(4): LD_LIBRARY_PATH or undefined - used in case libartd.so is not in /system/lib/ define define-art-gtest-rule-target - gtest_rule := test-art-target-gtest-$(1)$$($(2)ART_PHONY_TEST_TARGET_SUFFIX) + gtest_rule := test-art-target-gtest-$(1)$$($(3)ART_PHONY_TEST_TARGET_SUFFIX) + gtest_exe := $(OUT_DIR)/$(2) + gtest_target_exe := $$(patsubst $(PRODUCT_OUT)/%,/%,$$(gtest_exe)) # Add the test dependencies to test-art-target-sync, which will be a prerequisite for the test # to ensure files are pushed to the device. TEST_ART_TARGET_SYNC_DEPS += \ $$(ART_GTEST_$(1)_TARGET_DEPS) \ $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_TARGET_GTEST_$(file)_DEX)) \ - $$(ART_TARGET_NATIVETEST_OUT)/$$(TARGET_$(2)ARCH)/$(1) \ - $$($(2)TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so \ - $$($(2)TARGET_OUT_SHARED_LIBRARIES)/libopenjdkd.so \ + $$(gtest_exe) \ + $$($(3)TARGET_OUT_SHARED_LIBRARIES)/libjavacore.so \ + $$($(3)TARGET_OUT_SHARED_LIBRARIES)/libopenjdkd.so \ $$(TARGET_OUT_JAVA_LIBRARIES)/core-libart-testdex.jar \ $$(TARGET_OUT_JAVA_LIBRARIES)/core-oj-testdex.jar \ $$(ART_TARGET_TEST_OUT)/valgrind-target-suppressions.txt +$$(gtest_rule) valgrind-$$(gtest_rule): PRIVATE_TARGET_EXE := $$(gtest_target_exe) + .PHONY: $$(gtest_rule) $$(gtest_rule): test-art-target-sync - $(hide) adb shell touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID - $(hide) adb shell rm $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID - $(hide) adb shell chmod 755 $(ART_TARGET_NATIVETEST_DIR)/$(TARGET_$(2)ARCH)/$(1) + $(hide) adb shell touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(3)ARCH)/$$@-$$$$PPID + $(hide) adb shell rm $(ART_TARGET_TEST_DIR)/$(TARGET_$(3)ARCH)/$$@-$$$$PPID + $(hide) adb shell chmod 755 $$(PRIVATE_TARGET_EXE) $(hide) $$(call ART_TEST_SKIP,$$@) && \ - (adb shell "$(GCOV_ENV) LD_LIBRARY_PATH=$(3) ANDROID_ROOT=$(ART_GTEST_TARGET_ANDROID_ROOT) \ - $(ART_TARGET_NATIVETEST_DIR)/$(TARGET_$(2)ARCH)/$(1) && touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID" \ - && (adb pull $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID /tmp/ \ + (adb shell "$(GCOV_ENV) LD_LIBRARY_PATH=$(4) ANDROID_ROOT=$(ART_GTEST_TARGET_ANDROID_ROOT) \ + $$(PRIVATE_TARGET_EXE) && touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(3)ARCH)/$$@-$$$$PPID" \ + && (adb pull $(ART_TARGET_TEST_DIR)/$(TARGET_$(3)ARCH)/$$@-$$$$PPID /tmp/ \ && $$(call ART_TEST_PASSED,$$@)) \ || $$(call ART_TEST_FAILED,$$@)) $(hide) rm -f /tmp/$$@-$$$$PPID - ART_TEST_TARGET_GTEST$($(2)ART_PHONY_TEST_TARGET_SUFFIX)_RULES += $$(gtest_rule) + ART_TEST_TARGET_GTEST$($(3)ART_PHONY_TEST_TARGET_SUFFIX)_RULES += $$(gtest_rule) ART_TEST_TARGET_GTEST_RULES += $$(gtest_rule) ART_TEST_TARGET_GTEST_$(1)_RULES += $$(gtest_rule) .PHONY: valgrind-$$(gtest_rule) valgrind-$$(gtest_rule): $(ART_VALGRIND_TARGET_DEPENDENCIES) test-art-target-sync - $(hide) adb shell touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID - $(hide) adb shell rm $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID - $(hide) adb shell chmod 755 $(ART_TARGET_NATIVETEST_DIR)/$(TARGET_$(2)ARCH)/$(1) + $(hide) adb shell touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(3)ARCH)/$$@-$$$$PPID + $(hide) adb shell rm $(ART_TARGET_TEST_DIR)/$(TARGET_$(3)ARCH)/$$@-$$$$PPID + $(hide) adb shell chmod 755 $$(PRIVATE_TARGET_EXE) $(hide) $$(call ART_TEST_SKIP,$$@) && \ - (adb shell "$(GCOV_ENV) LD_LIBRARY_PATH=$(3) ANDROID_ROOT=$(ART_GTEST_TARGET_ANDROID_ROOT) \ + (adb shell "$(GCOV_ENV) LD_LIBRARY_PATH=$(4) ANDROID_ROOT=$(ART_GTEST_TARGET_ANDROID_ROOT) \ valgrind --leak-check=full --error-exitcode=1 --workaround-gcc296-bugs=yes \ --suppressions=$(ART_TARGET_TEST_DIR)/valgrind-target-suppressions.txt \ --num-callers=50 \ - $(ART_TARGET_NATIVETEST_DIR)/$(TARGET_$(2)ARCH)/$(1) && touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID" \ - && (adb pull $(ART_TARGET_TEST_DIR)/$(TARGET_$(2)ARCH)/$$@-$$$$PPID /tmp/ \ + $$(PRIVATE_TARGET_EXE) && touch $(ART_TARGET_TEST_DIR)/$(TARGET_$(3)ARCH)/$$@-$$$$PPID" \ + && (adb pull $(ART_TARGET_TEST_DIR)/$(TARGET_$(3)ARCH)/$$@-$$$$PPID /tmp/ \ && $$(call ART_TEST_PASSED,$$@)) \ || $$(call ART_TEST_FAILED,$$@)) $(hide) rm -f /tmp/$$@-$$$$PPID - ART_TEST_TARGET_VALGRIND_GTEST$$($(2)ART_PHONY_TEST_TARGET_SUFFIX)_RULES += valgrind-$$(gtest_rule) + ART_TEST_TARGET_VALGRIND_GTEST$$($(3)ART_PHONY_TEST_TARGET_SUFFIX)_RULES += valgrind-$$(gtest_rule) ART_TEST_TARGET_VALGRIND_GTEST_RULES += valgrind-$$(gtest_rule) ART_TEST_TARGET_VALGRIND_GTEST_$(1)_RULES += valgrind-$$(gtest_rule) # Clear locally defined variables. valgrind_gtest_rule := gtest_rule := + gtest_exe := + gtest_target_exe := endef # define-art-gtest-rule-target ART_VALGRIND_DEPENDENCIES := \ @@ -532,14 +325,15 @@ ART_VALGRIND_DEPENDENCIES := \ # Define make rules for a host gtests. # $(1): gtest name - the name of the test we're building such as leb128_test. -# $(2): 2ND_ or undefined - used to differentiate between the primary and secondary architecture. +# $(2): path relative to $OUT to the test binary +# $(3): 2ND_ or undefined - used to differentiate between the primary and secondary architecture. define define-art-gtest-rule-host - gtest_rule := test-art-host-gtest-$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX) - gtest_exe := $$(HOST_OUT_EXECUTABLES)/$(1)$$($(2)ART_PHONY_TEST_HOST_SUFFIX) + gtest_rule := test-art-host-gtest-$(1)$$($(3)ART_PHONY_TEST_HOST_SUFFIX) + gtest_exe := $(OUT_DIR)/$(2) # Dependencies for all host gtests. gtest_deps := $$(HOST_CORE_DEX_LOCATIONS) \ - $$($(2)ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$$(ART_HOST_SHLIB_EXTENSION) \ - $$($(2)ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$$(ART_HOST_SHLIB_EXTENSION) \ + $$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$$(ART_HOST_SHLIB_EXTENSION) \ + $$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libopenjdkd$$(ART_HOST_SHLIB_EXTENSION) \ $$(gtest_exe) \ $$(ART_GTEST_$(1)_HOST_DEPS) \ $(foreach file,$(ART_GTEST_$(1)_DEX_DEPS),$(ART_TEST_HOST_GTEST_$(file)_DEX)) @@ -551,7 +345,7 @@ $$(gtest_rule): $$(gtest_exe) $$(gtest_deps) $(hide) ($$(call ART_TEST_SKIP,$$@) && $$< && $$(call ART_TEST_PASSED,$$@)) \ || $$(call ART_TEST_FAILED,$$@) - ART_TEST_HOST_GTEST$$($(2)ART_PHONY_TEST_HOST_SUFFIX)_RULES += $$(gtest_rule) + ART_TEST_HOST_GTEST$$($(3)ART_PHONY_TEST_HOST_SUFFIX)_RULES += $$(gtest_rule) ART_TEST_HOST_GTEST_RULES += $$(gtest_rule) ART_TEST_HOST_GTEST_$(1)_RULES += $$(gtest_rule) @@ -565,7 +359,7 @@ valgrind-$$(gtest_rule): $$(gtest_exe) $$(gtest_deps) $(ART_VALGRIND_DEPENDENCIE $$< && \ $$(call ART_TEST_PASSED,$$@) || $$(call ART_TEST_FAILED,$$@) - ART_TEST_HOST_VALGRIND_GTEST$$($(2)ART_PHONY_TEST_HOST_SUFFIX)_RULES += valgrind-$$(gtest_rule) + ART_TEST_HOST_VALGRIND_GTEST$$($(3)ART_PHONY_TEST_HOST_SUFFIX)_RULES += valgrind-$$(gtest_rule) ART_TEST_HOST_VALGRIND_GTEST_RULES += valgrind-$$(gtest_rule) ART_TEST_HOST_VALGRIND_GTEST_$(1)_RULES += valgrind-$$(gtest_rule) @@ -579,8 +373,6 @@ endef # define-art-gtest-rule-host # Define the rules to build and run host and target gtests. # $(1): target or host # $(2): file name -# $(3): extra C includes -# $(4): extra shared libraries define define-art-gtest ifneq ($(1),target) ifneq ($(1),host) @@ -590,40 +382,11 @@ define define-art-gtest art_target_or_host := $(1) art_gtest_filename := $(2) - art_gtest_extra_c_includes := $(3) - art_gtest_extra_shared_libraries := $(4) include $$(CLEAR_VARS) art_gtest_name := $$(notdir $$(basename $$(art_gtest_filename))) - LOCAL_MODULE := $$(art_gtest_name) - ifeq ($$(art_target_or_host),target) - LOCAL_MODULE_TAGS := tests - endif - LOCAL_CPP_EXTENSION := $$(ART_CPP_EXTENSION) - LOCAL_SRC_FILES := $$(art_gtest_filename) - LOCAL_C_INCLUDES += $$(ART_C_INCLUDES) art/runtime art/cmdline $$(art_gtest_extra_c_includes) - LOCAL_SHARED_LIBRARIES += libartd $$(art_gtest_extra_shared_libraries) libart-gtest libartd-disassembler - LOCAL_WHOLE_STATIC_LIBRARIES += libsigchain - - LOCAL_ADDITIONAL_DEPENDENCIES := art/build/Android.common_build.mk - LOCAL_ADDITIONAL_DEPENDENCIES += art/build/Android.gtest.mk - - # Mac OS linker doesn't understand --export-dynamic. - ifneq ($$(HOST_OS)-$$(art_target_or_host),darwin-host) - # Allow jni_compiler_test to find Java_MyClassNatives_bar within itself using dlopen(NULL, ...). - LOCAL_LDFLAGS := -Wl,--export-dynamic -Wl,-u,Java_MyClassNatives_bar -Wl,-u,Java_MyClassNatives_sbar - endif - LOCAL_CFLAGS := $$(ART_TEST_CFLAGS) ifeq ($$(art_target_or_host),target) - $$(eval LOCAL_CLANG := $$(ART_TARGET_CLANG)) - $$(eval $$(call set-target-local-cflags-vars,debug)) - LOCAL_SHARED_LIBRARIES += libdl libicuuc libicui18n libnativehelper libz libcutils libvixld-arm libvixld-arm64 - LOCAL_MODULE_PATH_32 := $$(ART_TARGET_NATIVETEST_OUT)/$$(ART_TARGET_ARCH_32) - LOCAL_MODULE_PATH_64 := $$(ART_TARGET_NATIVETEST_OUT)/$$(ART_TARGET_ARCH_64) - LOCAL_MULTILIB := both - LOCAL_CFLAGS += -Wno-used-but-marked-unused -Wno-deprecated -Wno-missing-noreturn # gtest issue - include $$(BUILD_EXECUTABLE) library_path := 2nd_library_path := ifneq ($$(ART_TEST_ANDROID_ROOT),) @@ -642,9 +405,9 @@ define define-art-gtest ART_TEST_TARGET_GTEST_$$(art_gtest_name)_RULES := ART_TEST_TARGET_VALGRIND_GTEST_$$(art_gtest_name)_RULES := ifdef TARGET_2ND_ARCH - $$(eval $$(call define-art-gtest-rule-target,$$(art_gtest_name),2ND_,$$(2nd_library_path))) + $$(eval $$(call define-art-gtest-rule-target,$$(art_gtest_name),$$(art_gtest_filename),2ND_,$$(2nd_library_path))) endif - $$(eval $$(call define-art-gtest-rule-target,$$(art_gtest_name),,$$(library_path))) + $$(eval $$(call define-art-gtest-rule-target,$$(art_gtest_name),$$(art_gtest_filename),,$$(library_path))) # A rule to run the different architecture versions of the gtest. .PHONY: test-art-target-gtest-$$(art_gtest_name) @@ -659,24 +422,12 @@ valgrind-test-art-target-gtest-$$(art_gtest_name): $$(ART_TEST_TARGET_VALGRIND_G ART_TEST_TARGET_GTEST_$$(art_gtest_name)_RULES := ART_TEST_TARGET_VALGRIND_GTEST_$$(art_gtest_name)_RULES := else # host - LOCAL_CLANG := $$(ART_HOST_CLANG) - LOCAL_CFLAGS += $$(ART_HOST_CFLAGS) $$(ART_HOST_DEBUG_CFLAGS) - LOCAL_ASFLAGS += $$(ART_HOST_ASFLAGS) $$(ART_HOST_DEBUG_ASFLAGS) - LOCAL_SHARED_LIBRARIES += libicuuc libicui18n libnativehelper libziparchive libz-host libvixld-arm libvixld-arm64 - LOCAL_LDLIBS := -lpthread -ldl - LOCAL_IS_HOST_MODULE := true - LOCAL_MULTILIB := both - LOCAL_MODULE_STEM_32 := $$(art_gtest_name)32 - LOCAL_MODULE_STEM_64 := $$(art_gtest_name)64 - LOCAL_CFLAGS += -Wno-used-but-marked-unused -Wno-deprecated -Wno-missing-noreturn # gtest issue - include $$(BUILD_HOST_EXECUTABLE) - ART_TEST_HOST_GTEST_$$(art_gtest_name)_RULES := ART_TEST_HOST_VALGRIND_GTEST_$$(art_gtest_name)_RULES := ifneq ($$(HOST_PREFER_32_BIT),true) - $$(eval $$(call define-art-gtest-rule-host,$$(art_gtest_name),2ND_)) + $$(eval $$(call define-art-gtest-rule-host,$$(art_gtest_name),$$(art_gtest_filename),2ND_)) endif - $$(eval $$(call define-art-gtest-rule-host,$$(art_gtest_name),)) + $$(eval $$(call define-art-gtest-rule-host,$$(art_gtest_name),$$(art_gtest_filename),)) # Rules to run the different architecture versions of the gtest. .PHONY: test-art-host-gtest-$$(art_gtest_name) @@ -695,8 +446,6 @@ valgrind-test-art-host-gtest-$$(art_gtest_name): $$(ART_TEST_HOST_VALGRIND_GTEST # Clear locally defined variables. art_target_or_host := art_gtest_filename := - art_gtest_extra_c_includes := - art_gtest_extra_shared_libraries := art_gtest_name := library_path := 2nd_library_path := @@ -704,19 +453,16 @@ endef # define-art-gtest ifeq ($(ART_BUILD_TARGET),true) - $(foreach file,$(RUNTIME_GTEST_TARGET_SRC_FILES), $(eval $(call define-art-gtest,target,$(file),,libbacktrace))) - $(foreach file,$(COMPILER_GTEST_TARGET_SRC_FILES), $(eval $(call define-art-gtest,target,$(file),art/compiler,libartd-compiler libbacktrace libnativeloader))) + $(foreach file,$(ART_TARGET_GTEST_FILES), $(eval $(call define-art-gtest,target,$(file)))) endif ifeq ($(ART_BUILD_HOST),true) - $(foreach file,$(RUNTIME_GTEST_HOST_SRC_FILES), $(eval $(call define-art-gtest,host,$(file),,libbacktrace))) - $(foreach file,$(COMPILER_GTEST_HOST_SRC_FILES), $(eval $(call define-art-gtest,host,$(file),art/compiler,libartd-compiler libbacktrace libnativeloader))) + $(foreach file,$(ART_HOST_GTEST_FILES), $(eval $(call define-art-gtest,host,$(file)))) endif # Used outside the art project to get a list of the current tests RUNTIME_TARGET_GTEST_MAKE_TARGETS := -$(foreach file, $(RUNTIME_GTEST_TARGET_SRC_FILES), $(eval RUNTIME_TARGET_GTEST_MAKE_TARGETS += $$(notdir $$(basename $$(file))))) +$(foreach file, $(ART_TARGET_GTEST_FILES), $(eval RUNTIME_TARGET_GTEST_MAKE_TARGETS += $$(notdir $$(basename $$(file))))) COMPILER_TARGET_GTEST_MAKE_TARGETS := -$(foreach file, $(COMPILER_GTEST_TARGET_SRC_FILES), $(eval COMPILER_TARGET_GTEST_MAKE_TARGETS += $$(notdir $$(basename $$(file))))) # Define all the combinations of host/target, valgrind and suffix such as: # test-art-host-gtest or valgrind-test-art-host-gtest64 diff --git a/build/art.go b/build/art.go index ffa927313..f2efbfefd 100644 --- a/build/art.go +++ b/build/art.go @@ -19,6 +19,7 @@ import ( "android/soong/android" "android/soong/cc" "fmt" + "sync" "github.com/google/blueprint" ) @@ -172,6 +173,33 @@ func prefer32Bit(ctx android.LoadHookContext) { } } +func testMap(config android.Config) map[string][]string { + return config.Once("artTests", func() interface{} { + return make(map[string][]string) + }).(map[string][]string) +} + +func testInstall(ctx android.InstallHookContext) { + testMap := testMap(ctx.AConfig()) + + var name string + if ctx.Host() { + name = "host_" + } else { + name = "device_" + } + name += ctx.Arch().ArchType.String() + "_" + ctx.ModuleName() + + artTestMutex.Lock() + defer artTestMutex.Unlock() + + tests := testMap[name] + tests = append(tests, ctx.Path().RelPathString()) + testMap[name] = tests +} + +var artTestMutex sync.Mutex + func init() { soong.RegisterModuleType("art_cc_library", artLibrary) soong.RegisterModuleType("art_cc_binary", artBinary) @@ -190,7 +218,7 @@ func artGlobalDefaultsFactory() (blueprint.Module, []interface{}) { func artDefaultsFactory() (blueprint.Module, []interface{}) { c := &codegenProperties{} module, props := cc.DefaultsFactory(c) - android.AddLoadHook(module, func(ctx android.LoadHookContext) { codegen(ctx, c) }) + android.AddLoadHook(module, func(ctx android.LoadHookContext) { codegen(ctx, c, true) }) return module, props } @@ -199,9 +227,7 @@ func artLibrary() (blueprint.Module, []interface{}) { library, _ := cc.NewLibrary(android.HostAndDeviceSupported, true, true) module, props := library.Init() - c := &codegenProperties{} - android.AddLoadHook(module, func(ctx android.LoadHookContext) { codegen(ctx, c) }) - props = append(props, c) + props = installCodegenCustomizer(module, props, true) return module, props } @@ -219,8 +245,11 @@ func artTest() (blueprint.Module, []interface{}) { test := cc.NewTest(android.HostAndDeviceSupported) module, props := test.Init() + props = installCodegenCustomizer(module, props, false) + android.AddLoadHook(module, customLinker) android.AddLoadHook(module, prefer32Bit) + android.AddInstallHook(module, testInstall) return module, props } diff --git a/build/codegen.go b/build/codegen.go index d98ca4fd4..ba6f2142c 100644 --- a/build/codegen.go +++ b/build/codegen.go @@ -22,9 +22,11 @@ import ( "android/soong/android" "sort" "strings" + + "github.com/google/blueprint" ) -func codegen(ctx android.LoadHookContext, c *codegenProperties) { +func codegen(ctx android.LoadHookContext, c *codegenProperties, library bool) { var hostArches, deviceArches []string e := envDefault(ctx, "ART_HOST_CODEGEN_ARCHS", "") @@ -41,54 +43,77 @@ func codegen(ctx android.LoadHookContext, c *codegenProperties) { deviceArches = strings.Split(e, " ") } - type props struct { - Target struct { - Android *codegenArchProperties - Host *codegenArchProperties + addCodegenArchProperties := func(host bool, archName string) { + type props struct { + Target struct { + Android *CodegenCommonArchProperties + Host *CodegenCommonArchProperties + } } - } - addCodegenArchProperties := func(p *props, hod **codegenArchProperties, arch string) { - switch arch { + type libraryProps struct { + Target struct { + Android *CodegenLibraryArchProperties + Host *CodegenLibraryArchProperties + } + } + + var arch *codegenArchProperties + switch archName { case "arm": - *hod = &c.Codegen.Arm + arch = &c.Codegen.Arm case "arm64": - *hod = &c.Codegen.Arm64 + arch = &c.Codegen.Arm64 case "mips": - *hod = &c.Codegen.Mips + arch = &c.Codegen.Mips case "mips64": - *hod = &c.Codegen.Mips64 + arch = &c.Codegen.Mips64 case "x86": - *hod = &c.Codegen.X86 + arch = &c.Codegen.X86 case "x86_64": - *hod = &c.Codegen.X86_64 + arch = &c.Codegen.X86_64 default: - ctx.ModuleErrorf("Unknown codegen architecture %q", arch) + ctx.ModuleErrorf("Unknown codegen architecture %q", archName) return } + + p := &props{} + l := &libraryProps{} + if host { + p.Target.Host = &arch.CodegenCommonArchProperties + l.Target.Host = &arch.CodegenLibraryArchProperties + } else { + p.Target.Android = &arch.CodegenCommonArchProperties + l.Target.Android = &arch.CodegenLibraryArchProperties + } + ctx.AppendProperties(p) + if library { + ctx.AppendProperties(l) + } } - for _, a := range deviceArches { - p := &props{} - addCodegenArchProperties(p, &p.Target.Android, a) + for _, arch := range deviceArches { + addCodegenArchProperties(false, arch) if ctx.Failed() { return } } - for _, a := range hostArches { - p := &props{} - addCodegenArchProperties(p, &p.Target.Host, a) + for _, arch := range hostArches { + addCodegenArchProperties(true, arch) if ctx.Failed() { return } } } -type codegenArchProperties struct { +type CodegenCommonArchProperties struct { Srcs []string Cflags []string +} + +type CodegenLibraryArchProperties struct { Static struct { Whole_static_libs []string } @@ -97,6 +122,11 @@ type codegenArchProperties struct { } } +type codegenArchProperties struct { + CodegenCommonArchProperties + CodegenLibraryArchProperties +} + type codegenProperties struct { Codegen struct { Arm, Arm64, Mips, Mips64, X86, X86_64 codegenArchProperties @@ -104,6 +134,7 @@ type codegenProperties struct { } type codegenCustomizer struct { + library bool codegenProperties codegenProperties } @@ -127,3 +158,11 @@ func defaultDeviceCodegenArches(ctx android.LoadHookContext) []string { sort.Strings(ret) return ret } + +func installCodegenCustomizer(module blueprint.Module, props []interface{}, library bool) []interface{} { + c := &codegenProperties{} + android.AddLoadHook(module, func(ctx android.LoadHookContext) { codegen(ctx, c, library) }) + props = append(props, c) + + return props +} diff --git a/build/makevars.go b/build/makevars.go index 5655c55a6..1faa0f6f3 100644 --- a/build/makevars.go +++ b/build/makevars.go @@ -14,7 +14,12 @@ package art -import "android/soong/android" +import ( + "sort" + "strings" + + "android/soong/android" +) var ( pctx = android.NewPackageContext("android/soong/art") @@ -27,4 +32,16 @@ func init() { func makeVarsProvider(ctx android.MakeVarsContext) { ctx.Strict("LIBART_IMG_HOST_BASE_ADDRESS", ctx.Config().LibartImgHostBaseAddress()) ctx.Strict("LIBART_IMG_TARGET_BASE_ADDRESS", ctx.Config().LibartImgDeviceBaseAddress()) + + testMap := testMap(ctx.Config()) + var testNames []string + for name := range testMap { + testNames = append(testNames, name) + } + + sort.Strings(testNames) + + for _, name := range testNames { + ctx.Strict("ART_TEST_LIST_"+name, strings.Join(testMap[name], " ")) + } } diff --git a/cmdline/Android.bp b/cmdline/Android.bp new file mode 100644 index 000000000..c9cd9dcfb --- /dev/null +++ b/cmdline/Android.bp @@ -0,0 +1,23 @@ +// +// Copyright (C) 2016 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +art_cc_test { + name: "art_cmdline_tests", + defaults: [ + "art_test_defaults", + ], + srcs: ["cmdline_parser_test.cc"], +} diff --git a/compiler/Android.bp b/compiler/Android.bp index 058141837..4af43ccdc 100644 --- a/compiler/Android.bp +++ b/compiler/Android.bp @@ -286,5 +286,146 @@ art_cc_library { srcs: ["common_compiler_test.cc"], shared_libs: [ "libartd-compiler", + "libart-runtime-gtest", + ], +} + +art_cc_test { + name: "art_compiler_tests", + defaults: [ + "art_test_defaults", + ], + srcs: [ + "compiled_method_test.cc", + "debug/dwarf/dwarf_test.cc", + "driver/compiled_method_storage_test.cc", + "driver/compiler_driver_test.cc", + "elf_writer_test.cc", + "exception_test.cc", + "image_test.cc", + "jni/jni_compiler_test.cc", + "linker/multi_oat_relative_patcher_test.cc", + "linker/output_stream_test.cc", + "oat_test.cc", + "optimizing/bounds_check_elimination_test.cc", + "optimizing/dominator_test.cc", + "optimizing/find_loops_test.cc", + "optimizing/graph_checker_test.cc", + "optimizing/graph_test.cc", + "optimizing/gvn_test.cc", + "optimizing/induction_var_analysis_test.cc", + "optimizing/induction_var_range_test.cc", + "optimizing/licm_test.cc", + "optimizing/live_interval_test.cc", + "optimizing/nodes_test.cc", + "optimizing/parallel_move_test.cc", + "optimizing/pretty_printer_test.cc", + "optimizing/reference_type_propagation_test.cc", + "optimizing/side_effects_test.cc", + "optimizing/ssa_test.cc", + "optimizing/stack_map_test.cc", + "optimizing/suspend_check_test.cc", + "utils/dedupe_set_test.cc", + "utils/intrusive_forward_list_test.cc", + "utils/string_reference_test.cc", + "utils/swap_space_test.cc", + "utils/test_dex_file_builder_test.cc", + + "jni/jni_cfi_test.cc", + "optimizing/codegen_test.cc", + "optimizing/optimizing_cfi_test.cc", + ], + + codegen: { + arm: { + srcs: [ + "linker/arm/relative_patcher_thumb2_test.cc", + "utils/arm/managed_register_arm_test.cc", + ], + }, + arm64: { + srcs: [ + "linker/arm64/relative_patcher_arm64_test.cc", + "utils/arm64/managed_register_arm64_test.cc", + ], + }, + mips: { + srcs: [ + "linker/mips/relative_patcher_mips_test.cc", + "linker/mips/relative_patcher_mips32r6_test.cc", + ], + }, + x86: { + srcs: [ + "linker/x86/relative_patcher_x86_test.cc", + "utils/x86/managed_register_x86_test.cc", + + // These tests are testing architecture-independent + // functionality, but happen to use x86 codegen as part of the + // test. + "optimizing/constant_folding_test.cc", + "optimizing/dead_code_elimination_test.cc", + "optimizing/linearize_test.cc", + "optimizing/live_ranges_test.cc", + "optimizing/liveness_test.cc", + "optimizing/register_allocator_test.cc", + ], + }, + x86_64: { + srcs: [ + "linker/x86_64/relative_patcher_x86_64_test.cc", + ], + }, + }, + + shared_libs: [ + "libartd-compiler", + "libvixld-arm", + "libvixld-arm64", + + "libbacktrace", + "libnativeloader", + ], +} + +art_cc_test { + name: "art_compiler_host_tests", + device_supported: false, + defaults: [ + "art_test_defaults", + ], + codegen: { + arm: { + srcs: [ + "utils/arm/assembler_thumb2_test.cc", + "utils/assembler_thumb_test.cc", + ], + }, + mips: { + srcs: [ + "utils/mips/assembler_mips_test.cc", + "utils/mips/assembler_mips32r6_test.cc", + ], + }, + mips64: { + srcs: [ + "utils/mips64/assembler_mips64_test.cc", + ], + }, + x86: { + srcs: [ + "utils/x86/assembler_x86_test.cc", + ], + }, + x86_64: { + srcs: [ + "utils/x86_64/assembler_x86_64_test.cc", + ], + }, + }, + shared_libs: [ + "libartd-compiler", + "libvixld-arm", + "libvixld-arm64", ], } diff --git a/dex2oat/Android.bp b/dex2oat/Android.bp index 43df6ae6b..d4227345f 100644 --- a/dex2oat/Android.bp +++ b/dex2oat/Android.bp @@ -120,3 +120,11 @@ art_cc_binary { "libvixld-arm64", ] + art_static_dependencies, } + +art_cc_test { + name: "art_dex2oat_tests", + defaults: [ + "art_test_defaults", + ], + srcs: ["dex2oat_test.cc"], +} diff --git a/dexdump/Android.bp b/dexdump/Android.bp index e77f809d4..74f75780f 100644 --- a/dexdump/Android.bp +++ b/dexdump/Android.bp @@ -24,3 +24,11 @@ art_cc_binary { cflags: ["-Wall"], shared_libs: ["libart"], } + +art_cc_test { + name: "art_dexdump_tests", + defaults: [ + "art_test_defaults", + ], + srcs: ["dexdump_test.cc"], +} diff --git a/dexlayout/Android.bp b/dexlayout/Android.bp index 852f6c27a..9c4499f8a 100644 --- a/dexlayout/Android.bp +++ b/dexlayout/Android.bp @@ -23,3 +23,11 @@ art_cc_binary { cflags: ["-Wall"], shared_libs: ["libart"], } + +art_cc_test { + name: "art_dexlayout_tests", + defaults: [ + "art_test_defaults", + ], + srcs: ["dexlayout_test.cc"], +} diff --git a/dexlist/Android.bp b/dexlist/Android.bp index 8e3c91d37..ddf01db38 100644 --- a/dexlist/Android.bp +++ b/dexlist/Android.bp @@ -19,3 +19,11 @@ art_cc_binary { cflags: ["-Wall"], shared_libs: ["libart"], } + +art_cc_test { + name: "art_dexlist_tests", + defaults: [ + "art_test_defaults", + ], + srcs: ["dexlist_test.cc"], +} diff --git a/imgdiag/Android.bp b/imgdiag/Android.bp index 4c0772d9b..639b8e870 100644 --- a/imgdiag/Android.bp +++ b/imgdiag/Android.bp @@ -69,3 +69,11 @@ art_cc_binary { "libartd-compiler", ], } + +art_cc_test { + name: "art_imgdiag_tests", + defaults: [ + "art_test_defaults", + ], + srcs: ["imgdiag_test.cc"], +} diff --git a/oatdump/Android.bp b/oatdump/Android.bp index b01bf51e2..02a51a667 100644 --- a/oatdump/Android.bp +++ b/oatdump/Android.bp @@ -87,3 +87,10 @@ art_cc_binary { ] + art_static_dependencies, } +art_cc_test { + name: "art_oatdump_tests", + defaults: [ + "art_test_defaults", + ], + srcs: ["oatdump_test.cc"], +} diff --git a/profman/Android.bp b/profman/Android.bp index f3b4e1436..cd1aaabda 100644 --- a/profman/Android.bp +++ b/profman/Android.bp @@ -52,3 +52,11 @@ art_cc_binary { "libartd", ], } + +art_cc_test { + name: "art_profman_tests", + defaults: [ + "art_test_defaults", + ], + srcs: ["profile_assistant_test.cc"], +} diff --git a/runtime/Android.bp b/runtime/Android.bp index e4d50ee3d..6acc1d8af 100644 --- a/runtime/Android.bp +++ b/runtime/Android.bp @@ -471,6 +471,117 @@ art_cc_library { ], } +art_cc_test { + name: "art_runtime_tests", + defaults: [ + "art_test_defaults", + ], + srcs: [ + "arch/arch_test.cc", + "arch/instruction_set_test.cc", + "arch/instruction_set_features_test.cc", + "arch/memcmp16_test.cc", + "arch/stub_test.cc", + "arch/arm/instruction_set_features_arm_test.cc", + "arch/arm64/instruction_set_features_arm64_test.cc", + "arch/mips/instruction_set_features_mips_test.cc", + "arch/mips64/instruction_set_features_mips64_test.cc", + "arch/x86/instruction_set_features_x86_test.cc", + "arch/x86_64/instruction_set_features_x86_64_test.cc", + "barrier_test.cc", + "base/arena_allocator_test.cc", + "base/bit_field_test.cc", + "base/bit_utils_test.cc", + "base/bit_vector_test.cc", + "base/hash_set_test.cc", + "base/hex_dump_test.cc", + "base/histogram_test.cc", + "base/mutex_test.cc", + "base/scoped_flock_test.cc", + "base/stringprintf_test.cc", + "base/time_utils_test.cc", + "base/timing_logger_test.cc", + "base/transform_array_ref_test.cc", + "base/transform_iterator_test.cc", + "base/variant_map_test.cc", + "base/unix_file/fd_file_test.cc", + "class_linker_test.cc", + "compiler_filter_test.cc", + "dex_file_test.cc", + "dex_file_verifier_test.cc", + "dex_instruction_test.cc", + "dex_instruction_visitor_test.cc", + "dex_method_iterator_test.cc", + "entrypoints/math_entrypoints_test.cc", + "entrypoints/quick/quick_trampoline_entrypoints_test.cc", + "entrypoints_order_test.cc", + "gc/accounting/card_table_test.cc", + "gc/accounting/mod_union_table_test.cc", + "gc/accounting/space_bitmap_test.cc", + "gc/collector/immune_spaces_test.cc", + "gc/heap_test.cc", + "gc/reference_queue_test.cc", + "gc/space/dlmalloc_space_static_test.cc", + "gc/space/dlmalloc_space_random_test.cc", + "gc/space/large_object_space_test.cc", + "gc/space/rosalloc_space_static_test.cc", + "gc/space/rosalloc_space_random_test.cc", + "gc/space/space_create_test.cc", + "gc/system_weak_test.cc", + "gc/task_processor_test.cc", + "gtest_test.cc", + "handle_scope_test.cc", + "indenter_test.cc", + "indirect_reference_table_test.cc", + "instrumentation_test.cc", + "intern_table_test.cc", + "interpreter/safe_math_test.cc", + "interpreter/unstarted_runtime_test.cc", + "java_vm_ext_test.cc", + "jit/profile_compilation_info_test.cc", + "leb128_test.cc", + "mem_map_test.cc", + "memory_region_test.cc", + "mirror/dex_cache_test.cc", + "mirror/object_test.cc", + "monitor_pool_test.cc", + "monitor_test.cc", + "oat_file_test.cc", + "oat_file_assistant_test.cc", + "parsed_options_test.cc", + "prebuilt_tools_test.cc", + "reference_table_test.cc", + "thread_pool_test.cc", + "transaction_test.cc", + "type_lookup_table_test.cc", + "utf_test.cc", + "utils_test.cc", + "verifier/method_verifier_test.cc", + "verifier/reg_type_test.cc", + "zip_archive_test.cc", + ], + shared_libs: [ + "libbacktrace", + ], +} + +art_cc_test { + name: "art_runtime_compiler_tests", + defaults: [ + "art_test_defaults", + ], + srcs: [ + "jni_internal_test.cc", + "proxy_test.cc", + "reflection_test.cc", + ], + shared_libs: [ + "libartd-compiler", + "libvixld-arm", + "libvixld-arm64", + ], +} + subdirs = [ "openjdkjvm", "openjdkjvmti", diff --git a/test/Android.bp b/test/Android.bp index e2edc1895..46d7c9487 100644 --- a/test/Android.bp +++ b/test/Android.bp @@ -15,6 +15,103 @@ // art_cc_defaults { + name: "art_test_defaults", + host_supported: true, + test_per_src: true, + // These really are gtests, but the gtest library comes from libart-gtest.so + gtest: false, + defaults: [ + "art_defaults", + "art_debug_defaults", + ], + + shared_libs: [ + "libartd", + "libartd-disassembler", + "libvixld-arm", + "libvixld-arm64", + "libart-gtest", + + "libicuuc", + "libicui18n", + "libnativehelper", + ], + whole_static_libs: [ + "libsigchain", + ], + include_dirs: [ + "art", + "art/cmdline", + ], + + target: { + linux: { + ldflags: [ + // Allow jni_compiler_test to find Java_MyClassNatives_bar + // within itself using dlopen(NULL, ...). + // Mac OS linker doesn't understand --export-dynamic. + "-Wl,--export-dynamic", + "-Wl,-u,Java_MyClassNatives_bar", + "-Wl,-u,Java_MyClassNatives_sbar", + ], + shared_libs: [ + "libziparchive", + "libz-host", + ], + host_ldlibs: [ + "-ldl", + "-lpthread", + ], + cflags: [ + // gtest issue + "-Wno-used-but-marked-unused", + "-Wno-deprecated", + "-Wno-missing-noreturn", + ], + }, + android: { + ldflags: [ + // Allow jni_compiler_test to find Java_MyClassNatives_bar + // within itself using dlopen(NULL, ...). + "-Wl,--export-dynamic", + "-Wl,-u,Java_MyClassNatives_bar", + "-Wl,-u,Java_MyClassNatives_sbar", + ], + shared_libs: [ + "libcutils", + "libdl", + "libz", + ], + cflags: [ + // gtest issue + "-Wno-used-but-marked-unused", + "-Wno-deprecated", + "-Wno-missing-noreturn", + ], + }, + + android_arm: { + relative_install_path: "art/arm", + }, + android_arm64: { + relative_install_path: "art/arm64", + }, + android_mips: { + relative_install_path: "art/mips", + }, + android_mips64: { + relative_install_path: "art/mips64", + }, + android_x86: { + relative_install_path: "art/x86", + }, + android_x86_64: { + relative_install_path: "art/x86_64", + }, + }, +} + +art_cc_defaults { name: "libart-gtest-defaults", host_supported: true, defaults: [ -- 2.11.0