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