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 22 art_cc_defaults { 23 name: "libart-compiler-defaults", 24 defaults: ["art_defaults"], 25 host_supported: true, 26 clang: true, 27 srcs: [ 28 "compiled_method.cc", 29 "debug/elf_debug_writer.cc", 30 "dex/dex_to_dex_compiler.cc", 31 "dex/inline_method_analyser.cc", 32 "dex/verified_method.cc", 33 "dex/verification_results.cc", 34 "dex/quick_compiler_callbacks.cc", 35 "driver/compiled_method_storage.cc", 36 "driver/compiler_driver.cc", 37 "driver/compiler_options.cc", 38 "driver/dex_compilation_unit.cc", 39 "linker/buffered_output_stream.cc", 40 "linker/file_output_stream.cc", 41 "linker/multi_oat_relative_patcher.cc", 42 "linker/output_stream.cc", 43 "linker/vector_output_stream.cc", 44 "linker/relative_patcher.cc", 45 "jit/jit_compiler.cc", 46 "jit/jit_logger.cc", 47 "jni/quick/calling_convention.cc", 48 "jni/quick/jni_compiler.cc", 49 "optimizing/block_builder.cc", 50 "optimizing/bounds_check_elimination.cc", 51 "optimizing/builder.cc", 52 "optimizing/cha_guard_optimization.cc", 53 "optimizing/code_generator.cc", 54 "optimizing/code_generator_utils.cc", 55 "optimizing/code_sinking.cc", 56 "optimizing/constant_folding.cc", 57 "optimizing/dead_code_elimination.cc", 58 "optimizing/escape.cc", 59 "optimizing/graph_checker.cc", 60 "optimizing/graph_visualizer.cc", 61 "optimizing/gvn.cc", 62 "optimizing/induction_var_analysis.cc", 63 "optimizing/induction_var_range.cc", 64 "optimizing/inliner.cc", 65 "optimizing/instruction_builder.cc", 66 "optimizing/instruction_simplifier.cc", 67 "optimizing/intrinsics.cc", 68 "optimizing/licm.cc", 69 "optimizing/linear_order.cc", 70 "optimizing/load_store_analysis.cc", 71 "optimizing/load_store_elimination.cc", 72 "optimizing/locations.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 "trampolines/trampoline_compiler.cc", 93 "utils/assembler.cc", 94 "utils/jni_macro_assembler.cc", 95 "utils/swap_space.cc", 96 "compiler.cc", 97 "elf_writer.cc", 98 "elf_writer_quick.cc", 99 "image_writer.cc", 100 "oat_writer.cc", 101 ], 102 103 codegen: { 104 arm: { 105 srcs: [ 106 "jni/quick/arm/calling_convention_arm.cc", 107 "linker/arm/relative_patcher_arm_base.cc", 108 "linker/arm/relative_patcher_thumb2.cc", 109 "optimizing/code_generator_arm_vixl.cc", 110 "optimizing/code_generator_vector_arm_vixl.cc", 111 "optimizing/instruction_simplifier_arm.cc", 112 "optimizing/instruction_simplifier_shared.cc", 113 "optimizing/intrinsics_arm_vixl.cc", 114 "optimizing/nodes_shared.cc", 115 "optimizing/scheduler_arm.cc", 116 "utils/arm/assembler_arm_vixl.cc", 117 "utils/arm/constants_arm.cc", 118 "utils/arm/jni_macro_assembler_arm_vixl.cc", 119 "utils/arm/managed_register_arm.cc", 120 ], 121 }, 122 arm64: { 123 srcs: [ 124 "jni/quick/arm64/calling_convention_arm64.cc", 125 "linker/arm64/relative_patcher_arm64.cc", 126 "optimizing/code_generator_arm64.cc", 127 "optimizing/code_generator_vector_arm64.cc", 128 "optimizing/scheduler_arm64.cc", 129 "optimizing/instruction_simplifier_arm64.cc", 130 "optimizing/intrinsics_arm64.cc", 131 "utils/arm64/assembler_arm64.cc", 132 "utils/arm64/jni_macro_assembler_arm64.cc", 133 "utils/arm64/managed_register_arm64.cc", 134 ], 135 }, 136 mips: { 137 srcs: [ 138 "jni/quick/mips/calling_convention_mips.cc", 139 "linker/mips/relative_patcher_mips.cc", 140 "optimizing/code_generator_mips.cc", 141 "optimizing/code_generator_vector_mips.cc", 142 "optimizing/intrinsics_mips.cc", 143 "optimizing/pc_relative_fixups_mips.cc", 144 "utils/mips/assembler_mips.cc", 145 "utils/mips/managed_register_mips.cc", 146 ], 147 }, 148 mips64: { 149 srcs: [ 150 "jni/quick/mips64/calling_convention_mips64.cc", 151 "linker/mips64/relative_patcher_mips64.cc", 152 "optimizing/code_generator_mips64.cc", 153 "optimizing/code_generator_vector_mips64.cc", 154 "optimizing/intrinsics_mips64.cc", 155 "utils/mips64/assembler_mips64.cc", 156 "utils/mips64/managed_register_mips64.cc", 157 ], 158 }, 159 x86: { 160 srcs: [ 161 "jni/quick/x86/calling_convention_x86.cc", 162 "linker/x86/relative_patcher_x86.cc", 163 "linker/x86/relative_patcher_x86_base.cc", 164 "optimizing/code_generator_x86.cc", 165 "optimizing/code_generator_vector_x86.cc", 166 "optimizing/intrinsics_x86.cc", 167 "optimizing/pc_relative_fixups_x86.cc", 168 "optimizing/x86_memory_gen.cc", 169 "utils/x86/assembler_x86.cc", 170 "utils/x86/jni_macro_assembler_x86.cc", 171 "utils/x86/managed_register_x86.cc", 172 ], 173 }, 174 x86_64: { 175 srcs: [ 176 "jni/quick/x86_64/calling_convention_x86_64.cc", 177 "linker/x86_64/relative_patcher_x86_64.cc", 178 "optimizing/intrinsics_x86_64.cc", 179 "optimizing/code_generator_x86_64.cc", 180 "optimizing/code_generator_vector_x86_64.cc", 181 "utils/x86_64/assembler_x86_64.cc", 182 "utils/x86_64/jni_macro_assembler_x86_64.cc", 183 "utils/x86_64/managed_register_x86_64.cc", 184 ], 185 }, 186 }, 187 target: { 188 host: { 189 // For compiler driver TLS. 190 host_ldlibs: ["-lpthread"], 191 }, 192 android: { 193 // For atrace. 194 shared_libs: ["libcutils"], 195 }, 196 }, 197 generated_sources: ["art_compiler_operator_srcs"], 198 shared_libs: [ 199 "libbase", 200 "liblz4", 201 "liblzma", 202 ], 203 include_dirs: ["art/disassembler"], 204 export_include_dirs: ["."], 205 206 // For SHA-1 checksumming of build ID 207 static: { 208 whole_static_libs: ["libcrypto"], 209 }, 210 shared: { 211 shared_libs: ["libcrypto"], 212 }, 213 } 214 215 gensrcs { 216 name: "art_compiler_operator_srcs", 217 cmd: "$(location generate-operator-out.py) art/compiler $(in) > $(out)", 218 tool_files: ["generate-operator-out.py"], 219 srcs: [ 220 "compiled_method.h", 221 "dex/dex_to_dex_compiler.h", 222 "driver/compiler_driver.h", 223 "driver/compiler_options.h", 224 "image_writer.h", 225 "optimizing/locations.h", 226 227 "utils/arm/constants_arm.h", 228 "utils/mips/assembler_mips.h", 229 "utils/mips64/assembler_mips64.h", 230 ], 231 output_extension: "operator_out.cc", 232 } 233 234 art_cc_library { 235 name: "libart-compiler", 236 defaults: ["libart-compiler-defaults"], 237 codegen: { 238 arm: { 239 // VIXL assembly support for ARM targets. 240 static: { 241 whole_static_libs: [ 242 "libvixl-arm", 243 ], 244 }, 245 shared: { 246 shared_libs: [ 247 "libvixl-arm", 248 ], 249 }, 250 }, 251 arm64: { 252 // VIXL assembly support for ARM64 targets. 253 static: { 254 whole_static_libs: [ 255 "libvixl-arm64", 256 ], 257 }, 258 shared: { 259 shared_libs: [ 260 "libvixl-arm64", 261 ], 262 }, 263 }, 264 }, 265 shared_libs: [ 266 "libart", 267 "libart-dexlayout", 268 ], 269 } 270 271 art_cc_library { 272 name: "libartd-compiler", 273 defaults: [ 274 "art_debug_defaults", 275 "libart-compiler-defaults", 276 ], 277 codegen: { 278 arm: { 279 // VIXL assembly support for ARM targets. 280 static: { 281 whole_static_libs: [ 282 "libvixld-arm", 283 ], 284 }, 285 shared: { 286 shared_libs: [ 287 "libvixld-arm", 288 ], 289 }, 290 }, 291 arm64: { 292 // VIXL assembly support for ARM64 targets. 293 static: { 294 whole_static_libs: [ 295 "libvixld-arm64", 296 ], 297 }, 298 shared: { 299 shared_libs: [ 300 "libvixld-arm64", 301 ], 302 }, 303 }, 304 }, 305 shared_libs: [ 306 "libartd", 307 "libartd-dexlayout" 308 ], 309 } 310 311 art_cc_library { 312 name: "libart-compiler-gtest", 313 defaults: ["libart-gtest-defaults"], 314 srcs: ["common_compiler_test.cc"], 315 shared_libs: [ 316 "libartd-compiler", 317 "libart-runtime-gtest", 318 "libbase", 319 ], 320 } 321 322 art_cc_test { 323 name: "art_compiler_tests", 324 defaults: [ 325 "art_gtest_defaults", 326 ], 327 srcs: [ 328 "compiled_method_test.cc", 329 "debug/dwarf/dwarf_test.cc", 330 "dex/dex_to_dex_decompiler_test.cc", 331 "driver/compiled_method_storage_test.cc", 332 "driver/compiler_driver_test.cc", 333 "elf_writer_test.cc", 334 "exception_test.cc", 335 "image_test.cc", 336 "image_write_read_test.cc", 337 "jni/jni_compiler_test.cc", 338 "linker/method_bss_mapping_encoder_test.cc", 339 "linker/multi_oat_relative_patcher_test.cc", 340 "linker/output_stream_test.cc", 341 "oat_test.cc", 342 "optimizing/bounds_check_elimination_test.cc", 343 "optimizing/dominator_test.cc", 344 "optimizing/find_loops_test.cc", 345 "optimizing/graph_checker_test.cc", 346 "optimizing/graph_test.cc", 347 "optimizing/gvn_test.cc", 348 "optimizing/induction_var_analysis_test.cc", 349 "optimizing/induction_var_range_test.cc", 350 "optimizing/licm_test.cc", 351 "optimizing/live_interval_test.cc", 352 "optimizing/loop_optimization_test.cc", 353 "optimizing/nodes_test.cc", 354 "optimizing/nodes_vector_test.cc", 355 "optimizing/parallel_move_test.cc", 356 "optimizing/pretty_printer_test.cc", 357 "optimizing/reference_type_propagation_test.cc", 358 "optimizing/side_effects_test.cc", 359 "optimizing/ssa_liveness_analysis_test.cc", 360 "optimizing/ssa_test.cc", 361 "optimizing/stack_map_test.cc", 362 "optimizing/suspend_check_test.cc", 363 "utils/atomic_dex_ref_map_test.cc", 364 "utils/dedupe_set_test.cc", 365 "utils/intrusive_forward_list_test.cc", 366 "utils/string_reference_test.cc", 367 "utils/swap_space_test.cc", 368 "utils/test_dex_file_builder_test.cc", 369 "verifier_deps_test.cc", 370 371 "jni/jni_cfi_test.cc", 372 "optimizing/codegen_test.cc", 373 "optimizing/load_store_analysis_test.cc", 374 "optimizing/optimizing_cfi_test.cc", 375 "optimizing/scheduler_test.cc", 376 ], 377 378 codegen: { 379 arm: { 380 srcs: [ 381 "linker/arm/relative_patcher_thumb2_test.cc", 382 "utils/arm/managed_register_arm_test.cc", 383 ], 384 }, 385 arm64: { 386 srcs: [ 387 "linker/arm64/relative_patcher_arm64_test.cc", 388 "utils/arm64/managed_register_arm64_test.cc", 389 ], 390 }, 391 mips: { 392 srcs: [ 393 "linker/mips/relative_patcher_mips_test.cc", 394 "linker/mips/relative_patcher_mips32r6_test.cc", 395 ], 396 }, 397 mips64: { 398 srcs: [ 399 "linker/mips64/relative_patcher_mips64_test.cc", 400 "utils/mips64/managed_register_mips64_test.cc", 401 ], 402 }, 403 x86: { 404 srcs: [ 405 "linker/x86/relative_patcher_x86_test.cc", 406 "utils/x86/managed_register_x86_test.cc", 407 408 // These tests are testing architecture-independent 409 // functionality, but happen to use x86 codegen as part of the 410 // test. 411 "optimizing/constant_folding_test.cc", 412 "optimizing/dead_code_elimination_test.cc", 413 "optimizing/linearize_test.cc", 414 "optimizing/live_ranges_test.cc", 415 "optimizing/liveness_test.cc", 416 "optimizing/register_allocator_test.cc", 417 ], 418 }, 419 x86_64: { 420 srcs: [ 421 "linker/x86_64/relative_patcher_x86_64_test.cc", 422 ], 423 }, 424 }, 425 426 shared_libs: [ 427 "libartd-compiler", 428 "libvixld-arm", 429 "libvixld-arm64", 430 431 "libbacktrace", 432 "libnativeloader", 433 ], 434 435 target: { 436 host: { 437 shared_libs: [ 438 "libartd-simulator", 439 ], 440 }, 441 }, 442 } 443 444 art_cc_test { 445 name: "art_compiler_host_tests", 446 device_supported: false, 447 defaults: [ 448 "art_gtest_defaults", 449 ], 450 codegen: { 451 arm: { 452 srcs: [ 453 "utils/assembler_thumb_test.cc", 454 ], 455 }, 456 mips: { 457 srcs: [ 458 "optimizing/emit_swap_mips_test.cc", 459 "utils/mips/assembler_mips_test.cc", 460 "utils/mips/assembler_mips32r5_test.cc", 461 "utils/mips/assembler_mips32r6_test.cc", 462 ], 463 }, 464 mips64: { 465 srcs: [ 466 "utils/mips64/assembler_mips64_test.cc", 467 ], 468 }, 469 x86: { 470 srcs: [ 471 "utils/x86/assembler_x86_test.cc", 472 ], 473 }, 474 x86_64: { 475 srcs: [ 476 "utils/x86_64/assembler_x86_64_test.cc", 477 ], 478 }, 479 }, 480 shared_libs: [ 481 "libartd-compiler", 482 "libvixld-arm", 483 "libvixld-arm64", 484 ], 485 } 486