Home | History | Annotate | Download | only in compiler
      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