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// Keep the __jit_debug_register_code symbol as a unique symbol during ICF for architectures where 18// we use gold as the linker (arm, x86, x86_64). The symbol is used by the debuggers to detect when 19// new jit code is generated. We don't want it to be called when a different function with the same 20// (empty) body is called. 21JIT_DEBUG_REGISTER_CODE_LDFLAGS = ["-Wl,--keep-unique,__jit_debug_register_code"] 22 23cc_defaults { 24 name: "libart_defaults", 25 defaults: ["art_defaults"], 26 host_supported: true, 27 srcs: [ 28 "art_field.cc", 29 "art_method.cc", 30 "atomic.cc", 31 "barrier.cc", 32 "base/allocator.cc", 33 "base/arena_allocator.cc", 34 "base/arena_bit_vector.cc", 35 "base/bit_vector.cc", 36 "base/file_magic.cc", 37 "base/hex_dump.cc", 38 "base/logging.cc", 39 "base/mutex.cc", 40 "base/safe_copy.cc", 41 "base/scoped_arena_allocator.cc", 42 "base/scoped_flock.cc", 43 "base/stringpiece.cc", 44 "base/time_utils.cc", 45 "base/timing_logger.cc", 46 "base/unix_file/fd_file.cc", 47 "base/unix_file/random_access_file_utils.cc", 48 "cha.cc", 49 "check_jni.cc", 50 "class_linker.cc", 51 "class_table.cc", 52 "code_simulator_container.cc", 53 "common_throws.cc", 54 "compiler_filter.cc", 55 "debugger.cc", 56 "dex_file.cc", 57 "dex_file_annotations.cc", 58 "dex_file_verifier.cc", 59 "dex_instruction.cc", 60 "dex_to_dex_decompiler.cc", 61 "elf_file.cc", 62 "exec_utils.cc", 63 "fault_handler.cc", 64 "gc/allocation_record.cc", 65 "gc/allocator/dlmalloc.cc", 66 "gc/allocator/rosalloc.cc", 67 "gc/accounting/bitmap.cc", 68 "gc/accounting/card_table.cc", 69 "gc/accounting/heap_bitmap.cc", 70 "gc/accounting/mod_union_table.cc", 71 "gc/accounting/remembered_set.cc", 72 "gc/accounting/space_bitmap.cc", 73 "gc/collector/concurrent_copying.cc", 74 "gc/collector/garbage_collector.cc", 75 "gc/collector/immune_region.cc", 76 "gc/collector/immune_spaces.cc", 77 "gc/collector/mark_compact.cc", 78 "gc/collector/mark_sweep.cc", 79 "gc/collector/partial_mark_sweep.cc", 80 "gc/collector/semi_space.cc", 81 "gc/collector/sticky_mark_sweep.cc", 82 "gc/gc_cause.cc", 83 "gc/heap.cc", 84 "gc/reference_processor.cc", 85 "gc/reference_queue.cc", 86 "gc/scoped_gc_critical_section.cc", 87 "gc/space/bump_pointer_space.cc", 88 "gc/space/dlmalloc_space.cc", 89 "gc/space/image_space.cc", 90 "gc/space/large_object_space.cc", 91 "gc/space/malloc_space.cc", 92 "gc/space/region_space.cc", 93 "gc/space/rosalloc_space.cc", 94 "gc/space/space.cc", 95 "gc/space/zygote_space.cc", 96 "gc/task_processor.cc", 97 "gc/verification.cc", 98 "hprof/hprof.cc", 99 "image.cc", 100 "indirect_reference_table.cc", 101 "instrumentation.cc", 102 "intern_table.cc", 103 "interpreter/interpreter.cc", 104 "interpreter/interpreter_common.cc", 105 "interpreter/interpreter_intrinsics.cc", 106 "interpreter/interpreter_switch_impl.cc", 107 "interpreter/unstarted_runtime.cc", 108 "java_vm_ext.cc", 109 "jdwp/jdwp_event.cc", 110 "jdwp/jdwp_expand_buf.cc", 111 "jdwp/jdwp_handler.cc", 112 "jdwp/jdwp_main.cc", 113 "jdwp/jdwp_request.cc", 114 "jdwp/jdwp_socket.cc", 115 "jdwp/object_registry.cc", 116 "jni_env_ext.cc", 117 "jit/debugger_interface.cc", 118 "jit/jit.cc", 119 "jit/jit_code_cache.cc", 120 "jit/profile_compilation_info.cc", 121 "jit/profiling_info.cc", 122 "jit/profile_saver.cc", 123 "jni_internal.cc", 124 "jobject_comparator.cc", 125 "linear_alloc.cc", 126 "mem_map.cc", 127 "memory_region.cc", 128 "method_handles.cc", 129 "mirror/array.cc", 130 "mirror/call_site.cc", 131 "mirror/class.cc", 132 "mirror/class_ext.cc", 133 "mirror/dex_cache.cc", 134 "mirror/emulated_stack_frame.cc", 135 "mirror/executable.cc", 136 "mirror/field.cc", 137 "mirror/method.cc", 138 "mirror/method_handle_impl.cc", 139 "mirror/method_handles_lookup.cc", 140 "mirror/method_type.cc", 141 "mirror/object.cc", 142 "mirror/reference.cc", 143 "mirror/stack_trace_element.cc", 144 "mirror/string.cc", 145 "mirror/throwable.cc", 146 "monitor.cc", 147 "native_bridge_art_interface.cc", 148 "native_stack_dump.cc", 149 "native/dalvik_system_DexFile.cc", 150 "native/dalvik_system_VMDebug.cc", 151 "native/dalvik_system_VMRuntime.cc", 152 "native/dalvik_system_VMStack.cc", 153 "native/dalvik_system_ZygoteHooks.cc", 154 "native/java_lang_Class.cc", 155 "native/java_lang_Object.cc", 156 "native/java_lang_String.cc", 157 "native/java_lang_StringFactory.cc", 158 "native/java_lang_System.cc", 159 "native/java_lang_Thread.cc", 160 "native/java_lang_Throwable.cc", 161 "native/java_lang_VMClassLoader.cc", 162 "native/java_lang_Void.cc", 163 "native/java_lang_invoke_MethodHandleImpl.cc", 164 "native/java_lang_ref_FinalizerReference.cc", 165 "native/java_lang_ref_Reference.cc", 166 "native/java_lang_reflect_Array.cc", 167 "native/java_lang_reflect_Constructor.cc", 168 "native/java_lang_reflect_Executable.cc", 169 "native/java_lang_reflect_Field.cc", 170 "native/java_lang_reflect_Method.cc", 171 "native/java_lang_reflect_Parameter.cc", 172 "native/java_lang_reflect_Proxy.cc", 173 "native/java_util_concurrent_atomic_AtomicLong.cc", 174 "native/libcore_util_CharsetUtils.cc", 175 "native/org_apache_harmony_dalvik_ddmc_DdmServer.cc", 176 "native/org_apache_harmony_dalvik_ddmc_DdmVmInternal.cc", 177 "native/sun_misc_Unsafe.cc", 178 "non_debuggable_classes.cc", 179 "oat.cc", 180 "oat_file.cc", 181 "oat_file_assistant.cc", 182 "oat_file_manager.cc", 183 "oat_quick_method_header.cc", 184 "object_lock.cc", 185 "offsets.cc", 186 "os_linux.cc", 187 "parsed_options.cc", 188 "plugin.cc", 189 "primitive.cc", 190 "quick_exception_handler.cc", 191 "reference_table.cc", 192 "reflection.cc", 193 "runtime.cc", 194 "runtime_callbacks.cc", 195 "runtime_common.cc", 196 "runtime_options.cc", 197 "scoped_thread_state_change.cc", 198 "signal_catcher.cc", 199 "stack.cc", 200 "stack_map.cc", 201 "thread.cc", 202 "thread_list.cc", 203 "thread_pool.cc", 204 "ti/agent.cc", 205 "trace.cc", 206 "transaction.cc", 207 "type_lookup_table.cc", 208 "utf.cc", 209 "utils.cc", 210 "vdex_file.cc", 211 "verifier/instruction_flags.cc", 212 "verifier/method_verifier.cc", 213 "verifier/reg_type.cc", 214 "verifier/reg_type_cache.cc", 215 "verifier/register_line.cc", 216 "verifier/verifier_deps.cc", 217 "verify_object.cc", 218 "well_known_classes.cc", 219 "zip_archive.cc", 220 221 "arch/context.cc", 222 "arch/instruction_set.cc", 223 "arch/instruction_set_features.cc", 224 "arch/memcmp16.cc", 225 "arch/arm/instruction_set_features_arm.cc", 226 "arch/arm/registers_arm.cc", 227 "arch/arm64/instruction_set_features_arm64.cc", 228 "arch/arm64/registers_arm64.cc", 229 "arch/mips/instruction_set_features_mips.cc", 230 "arch/mips/registers_mips.cc", 231 "arch/mips64/instruction_set_features_mips64.cc", 232 "arch/mips64/registers_mips64.cc", 233 "arch/x86/instruction_set_features_x86.cc", 234 "arch/x86/registers_x86.cc", 235 "arch/x86_64/registers_x86_64.cc", 236 "entrypoints/entrypoint_utils.cc", 237 "entrypoints/jni/jni_entrypoints.cc", 238 "entrypoints/math_entrypoints.cc", 239 "entrypoints/quick/quick_alloc_entrypoints.cc", 240 "entrypoints/quick/quick_cast_entrypoints.cc", 241 "entrypoints/quick/quick_deoptimization_entrypoints.cc", 242 "entrypoints/quick/quick_dexcache_entrypoints.cc", 243 "entrypoints/quick/quick_entrypoints_enum.cc", 244 "entrypoints/quick/quick_field_entrypoints.cc", 245 "entrypoints/quick/quick_fillarray_entrypoints.cc", 246 "entrypoints/quick/quick_instrumentation_entrypoints.cc", 247 "entrypoints/quick/quick_jni_entrypoints.cc", 248 "entrypoints/quick/quick_lock_entrypoints.cc", 249 "entrypoints/quick/quick_math_entrypoints.cc", 250 "entrypoints/quick/quick_thread_entrypoints.cc", 251 "entrypoints/quick/quick_throw_entrypoints.cc", 252 "entrypoints/quick/quick_trampoline_entrypoints.cc", 253 ], 254 255 arch: { 256 arm: { 257 clang_asflags: ["-no-integrated-as"], 258 srcs: [ 259 "interpreter/mterp/mterp.cc", 260 "interpreter/mterp/out/mterp_arm.S", 261 "arch/arm/context_arm.cc", 262 "arch/arm/entrypoints_init_arm.cc", 263 "arch/arm/instruction_set_features_assembly_tests.S", 264 "arch/arm/jni_entrypoints_arm.S", 265 "arch/arm/memcmp16_arm.S", 266 "arch/arm/quick_entrypoints_arm.S", 267 "arch/arm/quick_entrypoints_cc_arm.cc", 268 "arch/arm/thread_arm.cc", 269 "arch/arm/fault_handler_arm.cc", 270 ], 271 }, 272 arm64: { 273 srcs: [ 274 "interpreter/mterp/mterp.cc", 275 "interpreter/mterp/out/mterp_arm64.S", 276 "arch/arm64/context_arm64.cc", 277 "arch/arm64/entrypoints_init_arm64.cc", 278 "arch/arm64/jni_entrypoints_arm64.S", 279 "arch/arm64/memcmp16_arm64.S", 280 "arch/arm64/quick_entrypoints_arm64.S", 281 "arch/arm64/thread_arm64.cc", 282 "monitor_pool.cc", 283 "arch/arm64/fault_handler_arm64.cc", 284 ], 285 }, 286 x86: { 287 srcs: [ 288 "interpreter/mterp/mterp.cc", 289 "interpreter/mterp/out/mterp_x86.S", 290 "arch/x86/context_x86.cc", 291 "arch/x86/entrypoints_init_x86.cc", 292 "arch/x86/jni_entrypoints_x86.S", 293 "arch/x86/memcmp16_x86.S", 294 "arch/x86/quick_entrypoints_x86.S", 295 "arch/x86/thread_x86.cc", 296 "arch/x86/fault_handler_x86.cc", 297 ], 298 }, 299 x86_64: { 300 srcs: [ 301 // Note that the fault_handler_x86.cc is not a mistake. This file is 302 // shared between the x86 and x86_64 architectures. 303 "interpreter/mterp/mterp.cc", 304 "interpreter/mterp/out/mterp_x86_64.S", 305 "arch/x86_64/context_x86_64.cc", 306 "arch/x86_64/entrypoints_init_x86_64.cc", 307 "arch/x86_64/jni_entrypoints_x86_64.S", 308 "arch/x86_64/memcmp16_x86_64.S", 309 "arch/x86_64/quick_entrypoints_x86_64.S", 310 "arch/x86_64/thread_x86_64.cc", 311 "monitor_pool.cc", 312 "arch/x86/fault_handler_x86.cc", 313 ], 314 }, 315 mips: { 316 srcs: [ 317 "interpreter/mterp/mterp.cc", 318 "interpreter/mterp/out/mterp_mips.S", 319 "arch/mips/context_mips.cc", 320 "arch/mips/entrypoints_init_mips.cc", 321 "arch/mips/jni_entrypoints_mips.S", 322 "arch/mips/memcmp16_mips.S", 323 "arch/mips/quick_entrypoints_mips.S", 324 "arch/mips/thread_mips.cc", 325 "arch/mips/fault_handler_mips.cc", 326 ], 327 }, 328 mips64: { 329 srcs: [ 330 "interpreter/mterp/mterp.cc", 331 "interpreter/mterp/out/mterp_mips64.S", 332 "arch/mips64/context_mips64.cc", 333 "arch/mips64/entrypoints_init_mips64.cc", 334 "arch/mips64/jni_entrypoints_mips64.S", 335 "arch/mips64/memcmp16_mips64.S", 336 "arch/mips64/quick_entrypoints_mips64.S", 337 "arch/mips64/thread_mips64.cc", 338 "monitor_pool.cc", 339 "arch/mips64/fault_handler_mips64.cc", 340 ], 341 }, 342 }, 343 target: { 344 android: { 345 srcs: [ 346 "jdwp/jdwp_adb.cc", 347 "monitor_android.cc", 348 "runtime_android.cc", 349 "thread_android.cc", 350 ], 351 shared_libs: [ 352 "libdl", 353 // For android::FileMap used by libziparchive. 354 "libutils", 355 ], 356 static_libs: [ 357 // ZipArchive support, the order matters here to get all symbols. 358 "libziparchive", 359 "libz", 360 "libbase", 361 ], 362 }, 363 android_arm: { 364 ldflags: JIT_DEBUG_REGISTER_CODE_LDFLAGS, 365 }, 366 android_arm64: { 367 ldflags: JIT_DEBUG_REGISTER_CODE_LDFLAGS, 368 }, 369 android_x86: { 370 ldflags: JIT_DEBUG_REGISTER_CODE_LDFLAGS, 371 }, 372 android_x86_64: { 373 ldflags: JIT_DEBUG_REGISTER_CODE_LDFLAGS, 374 }, 375 host: { 376 srcs: [ 377 "monitor_linux.cc", 378 "runtime_linux.cc", 379 "thread_linux.cc", 380 ], 381 shared_libs: [ 382 "libziparchive", 383 "libz-host", 384 ], 385 }, 386 }, 387 cflags: ["-DBUILDING_LIBART=1"], 388 generated_sources: ["art_operator_srcs"], 389 // asm_support_gen.h (used by asm_support.h) is generated with cpp-define-generator 390 generated_headers: ["cpp-define-generator-asm-support"], 391 // export our headers so the libart-gtest targets can use it as well. 392 export_generated_headers: ["cpp-define-generator-asm-support"], 393 clang: true, 394 include_dirs: [ 395 "art/cmdline", 396 "art/sigchainlib", 397 "art", 398 ], 399 shared_libs: [ 400 "libnativehelper", 401 "libnativebridge", 402 "libnativeloader", 403 "libbacktrace", 404 "liblz4", 405 "liblog", 406 // For atrace, properties, ashmem, set_sched_policy and socket_peer_is_trusted. 407 "libcutils", 408 // For common macros. 409 "libbase", 410 ], 411 static: { 412 static_libs: ["libsigchain_dummy"], 413 }, 414 shared: { 415 shared_libs: ["libsigchain"], 416 }, 417 export_include_dirs: ["."], 418 // ART's macros.h depends on libbase's macros.h. 419 export_shared_lib_headers: ["libbase"], 420} 421 422gensrcs { 423 name: "art_operator_srcs", 424 cmd: "$(location generate-operator-out.py) art/runtime $(in) > $(out)", 425 tool_files: ["generate-operator-out.py"], 426 srcs: [ 427 "arch/instruction_set.h", 428 "base/allocator.h", 429 "base/enums.h", 430 "base/mutex.h", 431 "debugger.h", 432 "base/unix_file/fd_file.h", 433 "dex_file.h", 434 "dex_instruction.h", 435 "dex_instruction_utils.h", 436 "gc_root.h", 437 "gc/allocator_type.h", 438 "gc/allocator/rosalloc.h", 439 "gc/collector_type.h", 440 "gc/collector/gc_type.h", 441 "gc/heap.h", 442 "gc/space/region_space.h", 443 "gc/space/space.h", 444 "gc/weak_root_state.h", 445 "image.h", 446 "instrumentation.h", 447 "indirect_reference_table.h", 448 "invoke_type.h", 449 "jdwp/jdwp.h", 450 "jdwp/jdwp_constants.h", 451 "lock_word.h", 452 "mirror/class.h", 453 "oat.h", 454 "object_callbacks.h", 455 "process_state.h", 456 "runtime.h", 457 "stack.h", 458 "thread.h", 459 "thread_state.h", 460 "ti/agent.h", 461 "verifier/verifier_enums.h", 462 ], 463 output_extension: "operator_out.cc", 464} 465 466// We always build dex2oat and dependencies, even if the host build is otherwise disabled, since 467// they are used to cross compile for the target. 468 469art_cc_library { 470 name: "libart", 471 defaults: ["libart_defaults"], 472 // Leave the symbols in the shared library so that stack unwinders can 473 // produce meaningful name resolution. 474 strip: { 475 keep_symbols: true, 476 }, 477} 478 479art_cc_library { 480 name: "libartd", 481 defaults: [ 482 "art_debug_defaults", 483 "libart_defaults", 484 ], 485} 486 487art_cc_library { 488 name: "libart-runtime-gtest", 489 defaults: ["libart-gtest-defaults"], 490 srcs: [ 491 "common_runtime_test.cc", 492 "dexopt_test.cc" 493 ], 494 shared_libs: [ 495 "libartd", 496 "libbase", 497 "libbacktrace" 498 ], 499} 500 501art_cc_test { 502 name: "art_runtime_tests", 503 defaults: [ 504 "art_gtest_defaults", 505 ], 506 srcs: [ 507 "arch/arch_test.cc", 508 "arch/instruction_set_test.cc", 509 "arch/instruction_set_features_test.cc", 510 "arch/memcmp16_test.cc", 511 "arch/stub_test.cc", 512 "arch/arm/instruction_set_features_arm_test.cc", 513 "arch/arm64/instruction_set_features_arm64_test.cc", 514 "arch/mips/instruction_set_features_mips_test.cc", 515 "arch/mips64/instruction_set_features_mips64_test.cc", 516 "arch/x86/instruction_set_features_x86_test.cc", 517 "arch/x86_64/instruction_set_features_x86_64_test.cc", 518 "barrier_test.cc", 519 "base/arena_allocator_test.cc", 520 "base/bit_field_test.cc", 521 "base/bit_utils_test.cc", 522 "base/bit_vector_test.cc", 523 "base/hash_set_test.cc", 524 "base/hex_dump_test.cc", 525 "base/histogram_test.cc", 526 "base/mutex_test.cc", 527 "base/safe_copy_test.cc", 528 "base/scoped_flock_test.cc", 529 "base/time_utils_test.cc", 530 "base/timing_logger_test.cc", 531 "base/transform_array_ref_test.cc", 532 "base/transform_iterator_test.cc", 533 "base/variant_map_test.cc", 534 "base/unix_file/fd_file_test.cc", 535 "cha_test.cc", 536 "class_linker_test.cc", 537 "class_table_test.cc", 538 "compiler_filter_test.cc", 539 "dex_file_test.cc", 540 "dex_file_verifier_test.cc", 541 "dex_instruction_test.cc", 542 "dex_instruction_visitor_test.cc", 543 "dex_method_iterator_test.cc", 544 "entrypoints/math_entrypoints_test.cc", 545 "entrypoints/quick/quick_trampoline_entrypoints_test.cc", 546 "entrypoints_order_test.cc", 547 "gc/accounting/card_table_test.cc", 548 "gc/accounting/mod_union_table_test.cc", 549 "gc/accounting/space_bitmap_test.cc", 550 "gc/collector/immune_spaces_test.cc", 551 "gc/heap_test.cc", 552 "gc/heap_verification_test.cc", 553 "gc/reference_queue_test.cc", 554 "gc/space/dlmalloc_space_static_test.cc", 555 "gc/space/dlmalloc_space_random_test.cc", 556 "gc/space/image_space_test.cc", 557 "gc/space/large_object_space_test.cc", 558 "gc/space/rosalloc_space_static_test.cc", 559 "gc/space/rosalloc_space_random_test.cc", 560 "gc/space/space_create_test.cc", 561 "gc/system_weak_test.cc", 562 "gc/task_processor_test.cc", 563 "gtest_test.cc", 564 "handle_scope_test.cc", 565 "imtable_test.cc", 566 "indenter_test.cc", 567 "indirect_reference_table_test.cc", 568 "instrumentation_test.cc", 569 "intern_table_test.cc", 570 "interpreter/safe_math_test.cc", 571 "interpreter/unstarted_runtime_test.cc", 572 "java_vm_ext_test.cc", 573 "jit/profile_compilation_info_test.cc", 574 "leb128_test.cc", 575 "mem_map_test.cc", 576 "memory_region_test.cc", 577 "mirror/dex_cache_test.cc", 578 "mirror/method_type_test.cc", 579 "mirror/object_test.cc", 580 "monitor_pool_test.cc", 581 "monitor_test.cc", 582 "oat_file_test.cc", 583 "oat_file_assistant_test.cc", 584 "parsed_options_test.cc", 585 "prebuilt_tools_test.cc", 586 "reference_table_test.cc", 587 "runtime_callbacks_test.cc", 588 "thread_pool_test.cc", 589 "transaction_test.cc", 590 "type_lookup_table_test.cc", 591 "utf_test.cc", 592 "utils_test.cc", 593 "vdex_file_test.cc", 594 "verifier/method_verifier_test.cc", 595 "verifier/reg_type_test.cc", 596 "zip_archive_test.cc", 597 ], 598 shared_libs: [ 599 "libbacktrace", 600 ], 601} 602 603art_cc_test { 604 name: "art_runtime_compiler_tests", 605 defaults: [ 606 "art_gtest_defaults", 607 ], 608 srcs: [ 609 "jni_internal_test.cc", 610 "proxy_test.cc", 611 "reflection_test.cc", 612 ], 613 shared_libs: [ 614 "libartd-compiler", 615 "libvixld-arm", 616 "libvixld-arm64", 617 ], 618} 619 620subdirs = [ 621 "openjdkjvm", 622 "openjdkjvmti", 623 "simulator", 624] 625