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