1// 2// Copyright (C) 2012 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// TODO We should really separate out those files that are actually needed for both variants of an 18// architecture into its own category. Currently we just include all of the 32bit variant in the 19// 64bit variant. It also might be good to allow one to compile only the 64bit variant without the 20// 32bit one. 21 22art_cc_defaults { 23 name: "libart-compiler-defaults", 24 defaults: ["art_defaults"], 25 visibility: [ 26 // Visibility for prebuilt binaries from the prebuilt of this module. 27 // TODO(b/155921753): Restrict this when prebuilts are in their proper 28 // locations. 29 "//prebuilts:__subpackages__", 30 ], 31 host_supported: true, 32 srcs: [ 33 "compiled_method.cc", 34 "debug/elf_debug_writer.cc", 35 "dex/inline_method_analyser.cc", 36 "dex/verified_method.cc", 37 "dex/verification_results.cc", 38 "driver/compiled_method_storage.cc", 39 "driver/compiler_options.cc", 40 "driver/dex_compilation_unit.cc", 41 "jit/jit_compiler.cc", 42 "jit/jit_logger.cc", 43 "jni/quick/calling_convention.cc", 44 "jni/quick/jni_compiler.cc", 45 "optimizing/block_builder.cc", 46 "optimizing/bounds_check_elimination.cc", 47 "optimizing/builder.cc", 48 "optimizing/cha_guard_optimization.cc", 49 "optimizing/code_generator.cc", 50 "optimizing/code_generator_utils.cc", 51 "optimizing/code_sinking.cc", 52 "optimizing/constant_folding.cc", 53 "optimizing/constructor_fence_redundancy_elimination.cc", 54 "optimizing/data_type.cc", 55 "optimizing/dead_code_elimination.cc", 56 "optimizing/escape.cc", 57 "optimizing/graph_checker.cc", 58 "optimizing/graph_visualizer.cc", 59 "optimizing/gvn.cc", 60 "optimizing/induction_var_analysis.cc", 61 "optimizing/induction_var_range.cc", 62 "optimizing/inliner.cc", 63 "optimizing/instruction_builder.cc", 64 "optimizing/instruction_simplifier.cc", 65 "optimizing/intrinsic_objects.cc", 66 "optimizing/intrinsics.cc", 67 "optimizing/licm.cc", 68 "optimizing/linear_order.cc", 69 "optimizing/load_store_analysis.cc", 70 "optimizing/load_store_elimination.cc", 71 "optimizing/locations.cc", 72 "optimizing/loop_analysis.cc", 73 "optimizing/loop_optimization.cc", 74 "optimizing/nodes.cc", 75 "optimizing/optimization.cc", 76 "optimizing/optimizing_compiler.cc", 77 "optimizing/parallel_move_resolver.cc", 78 "optimizing/prepare_for_register_allocation.cc", 79 "optimizing/reference_type_propagation.cc", 80 "optimizing/register_allocation_resolver.cc", 81 "optimizing/register_allocator.cc", 82 "optimizing/register_allocator_graph_color.cc", 83 "optimizing/register_allocator_linear_scan.cc", 84 "optimizing/select_generator.cc", 85 "optimizing/scheduler.cc", 86 "optimizing/sharpening.cc", 87 "optimizing/side_effects_analysis.cc", 88 "optimizing/ssa_builder.cc", 89 "optimizing/ssa_liveness_analysis.cc", 90 "optimizing/ssa_phi_elimination.cc", 91 "optimizing/stack_map_stream.cc", 92 "optimizing/superblock_cloner.cc", 93 "trampolines/trampoline_compiler.cc", 94 "utils/assembler.cc", 95 "utils/jni_macro_assembler.cc", 96 "utils/swap_space.cc", 97 "compiler.cc", 98 ], 99 100 codegen: { 101 arm: { 102 srcs: [ 103 "jni/quick/arm/calling_convention_arm.cc", 104 "optimizing/code_generator_arm_vixl.cc", 105 "optimizing/code_generator_vector_arm_vixl.cc", 106 "optimizing/instruction_simplifier_arm.cc", 107 "optimizing/instruction_simplifier_shared.cc", 108 "optimizing/intrinsics_arm_vixl.cc", 109 "optimizing/nodes_shared.cc", 110 "optimizing/scheduler_arm.cc", 111 "utils/arm/assembler_arm_vixl.cc", 112 "utils/arm/constants_arm.cc", 113 "utils/arm/jni_macro_assembler_arm_vixl.cc", 114 "utils/arm/managed_register_arm.cc", 115 ], 116 }, 117 arm64: { 118 srcs: [ 119 "jni/quick/arm64/calling_convention_arm64.cc", 120 "optimizing/code_generator_arm64.cc", 121 "optimizing/code_generator_vector_arm64_neon.cc", 122 "optimizing/code_generator_vector_arm64_sve.cc", 123 "optimizing/scheduler_arm64.cc", 124 "optimizing/instruction_simplifier_arm64.cc", 125 "optimizing/intrinsics_arm64.cc", 126 "utils/arm64/assembler_arm64.cc", 127 "utils/arm64/jni_macro_assembler_arm64.cc", 128 "utils/arm64/managed_register_arm64.cc", 129 ], 130 }, 131 x86: { 132 srcs: [ 133 "jni/quick/x86/calling_convention_x86.cc", 134 "optimizing/code_generator_x86.cc", 135 "optimizing/code_generator_vector_x86.cc", 136 "optimizing/intrinsics_x86.cc", 137 "optimizing/instruction_simplifier_x86_shared.cc", 138 "optimizing/instruction_simplifier_x86.cc", 139 "optimizing/pc_relative_fixups_x86.cc", 140 "optimizing/x86_memory_gen.cc", 141 "utils/x86/assembler_x86.cc", 142 "utils/x86/jni_macro_assembler_x86.cc", 143 "utils/x86/managed_register_x86.cc", 144 ], 145 }, 146 x86_64: { 147 srcs: [ 148 "jni/quick/x86_64/calling_convention_x86_64.cc", 149 "optimizing/intrinsics_x86_64.cc", 150 "optimizing/instruction_simplifier_x86_64.cc", 151 "optimizing/code_generator_x86_64.cc", 152 "optimizing/code_generator_vector_x86_64.cc", 153 "utils/x86_64/assembler_x86_64.cc", 154 "utils/x86_64/jni_macro_assembler_x86_64.cc", 155 "utils/x86_64/managed_register_x86_64.cc", 156 ], 157 }, 158 }, 159 generated_sources: ["art_compiler_operator_srcs"], 160 shared_libs: [ 161 "libbase", 162 ], 163 header_libs: [ 164 "art_cmdlineparser_headers", // For compiler_options. 165 "art_disassembler_headers", 166 "libnativehelper_header_only", 167 ], 168 169 export_include_dirs: ["."], 170} 171 172cc_defaults { 173 name: "libart-compiler_static_base_defaults", 174 static_libs: [ 175 "libbase", 176 ], 177} 178 179gensrcs { 180 name: "art_compiler_operator_srcs", 181 cmd: "$(location generate_operator_out) art/compiler $(in) > $(out)", 182 tools: ["generate_operator_out"], 183 srcs: [ 184 "linker/linker_patch.h", 185 "optimizing/locations.h", 186 "optimizing/nodes.h", 187 "optimizing/optimizing_compiler_stats.h", 188 189 "utils/arm/constants_arm.h", 190 ], 191 output_extension: "operator_out.cc", 192} 193 194art_cc_library { 195 name: "libart-compiler", 196 defaults: [ 197 "libart-compiler-defaults", 198 "dex2oat-pgo-defaults", 199 ], 200 codegen: { 201 arm: { 202 // VIXL assembly support for ARM targets. 203 static: { 204 whole_static_libs: [ 205 "libvixl", 206 ], 207 }, 208 shared: { 209 shared_libs: [ 210 "libvixl", 211 ], 212 // Export vixl headers as they are included in this library's exported headers. 213 export_shared_lib_headers: [ 214 "libvixl", 215 ], 216 }, 217 }, 218 arm64: { 219 // VIXL assembly support for ARM64 targets. 220 static: { 221 whole_static_libs: [ 222 "libvixl", 223 ], 224 }, 225 shared: { 226 shared_libs: [ 227 "libvixl", 228 ], 229 // Export vixl headers as they are included in this library's exported headers. 230 export_shared_lib_headers: [ 231 "libvixl", 232 ], 233 }, 234 }, 235 }, 236 shared_libs: [ 237 "libart", 238 "libartbase", 239 "libartpalette", 240 "libprofile", 241 "libdexfile", 242 ], 243 whole_static_libs: ["libelffile"], 244 runtime_libs: [ 245 // `art::HGraphVisualizerDisassembler::HGraphVisualizerDisassembler` may dynamically load 246 // `libart-disassembler.so`. 247 "libart-disassembler", 248 ], 249 250 target: { 251 android: { 252 lto: { 253 thin: true, 254 }, 255 }, 256 }, 257 apex_available: [ 258 "com.android.art.release", 259 "com.android.art.debug", 260 ], 261} 262 263cc_defaults { 264 name: "libart-compiler_static_defaults", 265 defaults: [ 266 "libart-compiler_static_base_defaults", 267 "libart_static_defaults", 268 "libartbase_static_defaults", 269 "libdexfile_static_defaults", 270 "libprofile_static_defaults", 271 ], 272 static_libs: ["libart-compiler"], 273} 274 275art_cc_library { 276 name: "libartd-compiler", 277 defaults: [ 278 "art_debug_defaults", 279 "libart-compiler-defaults", 280 ], 281 codegen: { 282 arm: { 283 // VIXL assembly support for ARM targets. 284 static: { 285 whole_static_libs: [ 286 "libvixld", 287 ], 288 }, 289 shared: { 290 shared_libs: [ 291 "libvixld", 292 ], 293 // Export vixl headers as they are included in this library's exported headers. 294 export_shared_lib_headers: [ 295 "libvixld", 296 ], 297 }, 298 }, 299 arm64: { 300 // VIXL assembly support for ARM64 targets. 301 static: { 302 whole_static_libs: [ 303 "libvixld", 304 ], 305 }, 306 shared: { 307 shared_libs: [ 308 "libvixld", 309 ], 310 // Export vixl headers as they are included in this library's exported headers. 311 export_shared_lib_headers: [ 312 "libvixld", 313 ], 314 }, 315 }, 316 }, 317 shared_libs: [ 318 "libartbased", 319 "libartd", 320 "libartpalette", 321 "libprofiled", 322 "libdexfiled", 323 ], 324 whole_static_libs: ["libelffiled"], 325 runtime_libs: [ 326 // `art::HGraphVisualizerDisassembler::HGraphVisualizerDisassembler` may dynamically load 327 // `libartd-disassembler.so`. 328 "libartd-disassembler", 329 ], 330 331 apex_available: [ 332 "com.android.art.debug", 333 ], 334} 335 336cc_defaults { 337 name: "libartd-compiler_static_defaults", 338 defaults: [ 339 "libart-compiler_static_base_defaults", 340 "libartd_static_defaults", 341 "libartbased_static_defaults", 342 "libdexfiled_static_defaults", 343 "libprofiled_static_defaults", 344 ], 345 static_libs: ["libartd-compiler"], 346} 347 348art_cc_library { 349 name: "libart-compiler-gtest", 350 defaults: ["libart-gtest-defaults"], 351 srcs: [ 352 "common_compiler_test.cc", 353 ], 354 shared_libs: [ 355 "libartd-compiler", 356 "libartd-disassembler", 357 "libartbase-art-gtest", 358 "libart-runtime-gtest", 359 "libbase", 360 ], 361} 362 363art_cc_test { 364 name: "art_compiler_tests", 365 defaults: [ 366 "art_gtest_defaults", 367 ], 368 data: [ 369 ":art-gtest-jars-ExceptionHandle", 370 ":art-gtest-jars-Interfaces", 371 ":art-gtest-jars-MyClassNatives", 372 ], 373 srcs: [ 374 "debug/dwarf/dwarf_test.cc", 375 "debug/src_map_elem_test.cc", 376 "driver/compiled_method_storage_test.cc", 377 "exception_test.cc", 378 "jni/jni_compiler_test.cc", 379 "linker/linker_patch_test.cc", 380 "linker/output_stream_test.cc", 381 "optimizing/bounds_check_elimination_test.cc", 382 "optimizing/constant_folding_test.cc", 383 "optimizing/data_type_test.cc", 384 "optimizing/dead_code_elimination_test.cc", 385 "optimizing/dominator_test.cc", 386 "optimizing/find_loops_test.cc", 387 "optimizing/graph_checker_test.cc", 388 "optimizing/graph_test.cc", 389 "optimizing/gvn_test.cc", 390 "optimizing/induction_var_analysis_test.cc", 391 "optimizing/induction_var_range_test.cc", 392 "optimizing/licm_test.cc", 393 "optimizing/linearize_test.cc", 394 "optimizing/live_interval_test.cc", 395 "optimizing/live_ranges_test.cc", 396 "optimizing/liveness_test.cc", 397 "optimizing/loop_optimization_test.cc", 398 "optimizing/nodes_test.cc", 399 "optimizing/nodes_vector_test.cc", 400 "optimizing/parallel_move_test.cc", 401 "optimizing/pretty_printer_test.cc", 402 "optimizing/reference_type_propagation_test.cc", 403 "optimizing/select_generator_test.cc", 404 "optimizing/side_effects_test.cc", 405 "optimizing/ssa_liveness_analysis_test.cc", 406 "optimizing/ssa_test.cc", 407 "optimizing/stack_map_test.cc", 408 "optimizing/superblock_cloner_test.cc", 409 "optimizing/suspend_check_test.cc", 410 "utils/atomic_dex_ref_map_test.cc", 411 "utils/dedupe_set_test.cc", 412 "utils/swap_space_test.cc", 413 414 "jni/jni_cfi_test.cc", 415 "optimizing/codegen_test.cc", 416 "optimizing/load_store_analysis_test.cc", 417 "optimizing/load_store_elimination_test.cc", 418 "optimizing/optimizing_cfi_test.cc", 419 "optimizing/scheduler_test.cc", 420 ], 421 422 codegen: { 423 arm: { 424 srcs: [ 425 "utils/arm/managed_register_arm_test.cc", 426 ], 427 }, 428 arm64: { 429 srcs: [ 430 "utils/arm64/managed_register_arm64_test.cc", 431 ], 432 }, 433 x86: { 434 srcs: [ 435 "utils/x86/managed_register_x86_test.cc", 436 437 // This test is testing architecture-independent functionality, 438 // but happens to use x86 codegen as part of the test. 439 "optimizing/register_allocator_test.cc", 440 ], 441 }, 442 x86_64: { 443 srcs: [ 444 // Is this test a bit-rotten copy of the x86 test? b/77951326 445 // "utils/x86_64/managed_register_x86_64_test.cc", 446 ], 447 }, 448 }, 449 450 header_libs: [ 451 "libart_simulator_headers", 452 "libnativehelper_header_only", 453 ], 454 455 shared_libs: [ 456 "libprofiled", 457 "libartd-compiler", 458 "libartd-simulator-container", 459 "libvixld", 460 461 "libbacktrace", 462 "libnativeloader", 463 ], 464 465 target: { 466 host: { 467 shared_libs: [ 468 "libartd-simulator", 469 ], 470 }, 471 }, 472} 473 474art_cc_test { 475 name: "art_compiler_host_tests", 476 device_supported: false, 477 defaults: [ 478 "art_gtest_defaults", 479 ], 480 codegen: { 481 arm: { 482 srcs: [ 483 "utils/assembler_thumb_test.cc", 484 ], 485 }, 486 x86: { 487 srcs: [ 488 "utils/x86/assembler_x86_test.cc", 489 ], 490 }, 491 x86_64: { 492 srcs: [ 493 "utils/x86_64/assembler_x86_64_test.cc", 494 ], 495 }, 496 }, 497 shared_libs: [ 498 "libartd-compiler", 499 "libvixld", 500 ], 501} 502