• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
22package {
23    // See: http://go/android-license-faq
24    // A large-scale-change added 'default_applicable_licenses' to import
25    // all of the 'license_kinds' from "art_license"
26    // to get the below license kinds:
27    //   SPDX-license-identifier-Apache-2.0
28    default_applicable_licenses: ["art_license"],
29    default_team: "trendy_team_art_performance",
30}
31
32// Common dependencies for libart-compiler_deps and libartd-compiler_deps.
33cc_defaults {
34    name: "libart-compiler_common_deps",
35    shared_libs: [
36        "libbase",
37        "liblzma", // libelffile(d) dependency; must be repeated here since it's a static lib.
38        "libartpalette",
39    ],
40    header_libs: [
41        "libart_headers",
42        "libart_generated_headers",
43    ],
44}
45
46// Dependencies of libart-compiler, used to propagate libart-compiler deps when static linking.
47art_cc_defaults {
48    name: "libart-compiler_deps",
49    defaults: ["libart-compiler_common_deps"],
50    shared_libs: [
51        "libartbase",
52        "libprofile",
53        "libdexfile#impl",
54    ],
55    static_libs: ["libelffile"],
56    codegen: {
57        arm: {
58            // VIXL assembly support for ARM targets.
59            static_libs: [
60                "libvixl",
61            ],
62        },
63        arm64: {
64            // VIXL assembly support for ARM64 targets.
65            static_libs: [
66                "libvixl",
67            ],
68        },
69    },
70    // In order to save memory on device `art::HGraphVisualizerDisassembler` loads
71    // `libart-disassembler.so` dynamically. Host builds of `libart-compiler` depend on
72    // `libart-disassembler` directly with `shared_libs` or `static_libs`.
73    target: {
74        host: {
75            shared: {
76                shared_libs: [
77                    "libart-disassembler",
78                ],
79            },
80        },
81        android: {
82            runtime_libs: [
83                "libart-disassembler",
84            ],
85        },
86    },
87}
88
89// Dependencies of libartd-compiler, used to propagate libartd-compiler deps when static linking.
90art_cc_defaults {
91    name: "libartd-compiler_deps",
92    defaults: ["libart-compiler_common_deps"],
93    shared_libs: [
94        "libartbased",
95        "libprofiled",
96        "libdexfiled#impl",
97    ],
98    static_libs: ["libelffiled"],
99    codegen: {
100        arm: {
101            // VIXL assembly support for ARM targets.
102            static_libs: [
103                "libvixld",
104            ],
105        },
106        arm64: {
107            // VIXL assembly support for ARM64 targets.
108            static_libs: [
109                "libvixld",
110            ],
111        },
112    },
113    // In order to save memory on device `art::HGraphVisualizerDisassembler` loads
114    // `libartd-disassembler.so` dynamically. Host builds of `libartd-compiler` depend on
115    // `libartd-disassembler` directly with `shared_libs` or `static_libs`.
116    target: {
117        host: {
118            shared: {
119                shared_libs: [
120                    "libartd-disassembler",
121                ],
122            },
123        },
124        android: {
125            runtime_libs: [
126                "libartd-disassembler",
127            ],
128        },
129    },
130}
131
132art_cc_defaults {
133    name: "libart-compiler-defaults",
134    defaults: ["art_defaults"],
135    host_supported: true,
136    srcs: [
137        "debug/elf_debug_writer.cc",
138        "dex/inline_method_analyser.cc",
139        "driver/compiler_options.cc",
140        "driver/dex_compilation_unit.cc",
141        "jit/jit_compiler.cc",
142        "jit/jit_logger.cc",
143        "jni/quick/calling_convention.cc",
144        "jni/quick/jni_compiler.cc",
145        "optimizing/block_builder.cc",
146        "optimizing/block_namer.cc",
147        "optimizing/bounds_check_elimination.cc",
148        "optimizing/builder.cc",
149        "optimizing/cha_guard_optimization.cc",
150        "optimizing/code_generation_data.cc",
151        "optimizing/code_generator.cc",
152        "optimizing/code_generator_utils.cc",
153        "optimizing/code_sinking.cc",
154        "optimizing/constant_folding.cc",
155        "optimizing/constructor_fence_redundancy_elimination.cc",
156        "optimizing/control_flow_simplifier.cc",
157        "optimizing/data_type.cc",
158        "optimizing/dead_code_elimination.cc",
159        "optimizing/escape.cc",
160        "optimizing/graph_checker.cc",
161        "optimizing/graph_visualizer.cc",
162        "optimizing/gvn.cc",
163        "optimizing/handle_cache.cc",
164        "optimizing/induction_var_analysis.cc",
165        "optimizing/induction_var_range.cc",
166        "optimizing/inliner.cc",
167        "optimizing/instruction_builder.cc",
168        "optimizing/instruction_simplifier.cc",
169        "optimizing/intrinsic_objects.cc",
170        "optimizing/intrinsics.cc",
171        "optimizing/licm.cc",
172        "optimizing/linear_order.cc",
173        "optimizing/load_store_analysis.cc",
174        "optimizing/load_store_elimination.cc",
175        "optimizing/locations.cc",
176        "optimizing/loop_analysis.cc",
177        "optimizing/loop_optimization.cc",
178        "optimizing/nodes.cc",
179        "optimizing/nodes_vector.cc",
180        "optimizing/optimization.cc",
181        "optimizing/optimizing_compiler.cc",
182        "optimizing/parallel_move_resolver.cc",
183        "optimizing/prepare_for_register_allocation.cc",
184        "optimizing/profiling_info_builder.cc",
185        "optimizing/reference_type_info.cc",
186        "optimizing/reference_type_propagation.cc",
187        "optimizing/register_allocation_resolver.cc",
188        "optimizing/register_allocator.cc",
189        "optimizing/register_allocator_linear_scan.cc",
190        "optimizing/scheduler.cc",
191        "optimizing/sharpening.cc",
192        "optimizing/side_effects_analysis.cc",
193        "optimizing/ssa_builder.cc",
194        "optimizing/ssa_liveness_analysis.cc",
195        "optimizing/ssa_phi_elimination.cc",
196        "optimizing/stack_map_stream.cc",
197        "optimizing/superblock_cloner.cc",
198        "optimizing/write_barrier_elimination.cc",
199        "trampolines/trampoline_compiler.cc",
200        "utils/assembler.cc",
201        "utils/jni_macro_assembler.cc",
202        "compiler.cc",
203    ],
204
205    codegen: {
206        arm: {
207            srcs: [
208                "jni/quick/arm/calling_convention_arm.cc",
209                "optimizing/code_generator_arm_vixl.cc",
210                "optimizing/code_generator_vector_arm_vixl.cc",
211                "optimizing/critical_native_abi_fixup_arm.cc",
212                "optimizing/instruction_simplifier_arm.cc",
213                "optimizing/instruction_simplifier_shared.cc",
214                "optimizing/intrinsics_arm_vixl.cc",
215                "optimizing/nodes_shared.cc",
216                "optimizing/scheduler_arm.cc",
217                "utils/arm/assembler_arm_vixl.cc",
218                "utils/arm/constants_arm.cc",
219                "utils/arm/jni_macro_assembler_arm_vixl.cc",
220                "utils/arm/managed_register_arm.cc",
221            ],
222        },
223        arm64: {
224            srcs: [
225                "jni/quick/arm64/calling_convention_arm64.cc",
226                "optimizing/code_generator_arm64.cc",
227                "optimizing/code_generator_vector_arm64_neon.cc",
228                "optimizing/code_generator_vector_arm64_sve.cc",
229                "optimizing/jit_patches_arm64.cc",
230                "optimizing/scheduler_arm64.cc",
231                "optimizing/instruction_simplifier_arm64.cc",
232                "optimizing/intrinsics_arm64.cc",
233                "optimizing/fast_compiler_arm64.cc",
234                "utils/arm64/assembler_arm64.cc",
235                "utils/arm64/jni_macro_assembler_arm64.cc",
236                "utils/arm64/managed_register_arm64.cc",
237            ],
238        },
239        riscv64: {
240            srcs: [
241                "jni/quick/riscv64/calling_convention_riscv64.cc",
242                "optimizing/code_generator_riscv64.cc",
243                "optimizing/critical_native_abi_fixup_riscv64.cc",
244                "optimizing/instruction_simplifier_riscv64.cc",
245                "optimizing/intrinsics_riscv64.cc",
246                "utils/riscv64/assembler_riscv64.cc",
247                "utils/riscv64/jni_macro_assembler_riscv64.cc",
248                "utils/riscv64/managed_register_riscv64.cc",
249            ],
250        },
251        x86: {
252            srcs: [
253                "jni/quick/x86/calling_convention_x86.cc",
254                "optimizing/code_generator_x86.cc",
255                "optimizing/code_generator_vector_x86.cc",
256                "optimizing/intrinsics_x86.cc",
257                "optimizing/instruction_simplifier_x86_shared.cc",
258                "optimizing/instruction_simplifier_x86.cc",
259                "optimizing/pc_relative_fixups_x86.cc",
260                "optimizing/x86_memory_gen.cc",
261                "utils/x86/assembler_x86.cc",
262                "utils/x86/jni_macro_assembler_x86.cc",
263                "utils/x86/managed_register_x86.cc",
264            ],
265        },
266        x86_64: {
267            srcs: [
268                "jni/quick/x86_64/calling_convention_x86_64.cc",
269                "optimizing/intrinsics_x86_64.cc",
270                "optimizing/instruction_simplifier_x86_64.cc",
271                "optimizing/code_generator_x86_64.cc",
272                "optimizing/code_generator_vector_x86_64.cc",
273                "utils/x86_64/assembler_x86_64.cc",
274                "utils/x86_64/jni_macro_assembler_x86_64.cc",
275                "utils/x86_64/managed_register_x86_64.cc",
276            ],
277        },
278    },
279    generated_sources: ["art_compiler_operator_srcs"],
280    header_libs: [
281        "art_cmdlineparser_headers", // For compiler_options.
282        "art_disassembler_headers",
283        "libnativehelper_header_only",
284    ],
285
286    export_include_dirs: ["."],
287}
288
289cc_defaults {
290    name: "libart-compiler_static_base_defaults",
291    whole_static_libs: [
292        "libbase",
293    ],
294}
295
296gensrcs {
297    name: "art_compiler_operator_srcs",
298    cmd: "$(location generate_operator_out) art/compiler $(in) > $(out)",
299    tools: ["generate_operator_out"],
300    srcs: [
301        "linker/linker_patch.h",
302        "optimizing/locations.h",
303        "optimizing/nodes.h",
304        "optimizing/optimizing_compiler_stats.h",
305
306        "utils/arm/constants_arm.h",
307    ],
308    output_extension: "operator_out.cc",
309}
310
311art_cc_library_static {
312    name: "libart-compiler",
313    defaults: [
314        "libart-compiler-defaults",
315        "libart-compiler_deps",
316    ],
317    target: {
318        android: {
319            lto: {
320                thin: true,
321            },
322        },
323    },
324    apex_available: [
325        "com.android.art",
326        "com.android.art.debug",
327        "test_broken_com.android.art",
328    ],
329}
330
331// For static linking with gtests. Same as `libart-compiler`, but without LTO.
332// When gtests static link a library with LTO enabled, they are also built with LTO.
333// This makes the build process use a lot of memory. b/277207452
334art_cc_library_static {
335    name: "libart-compiler-for-test",
336    defaults: [
337        "libart-compiler-defaults",
338        "libart-compiler_deps",
339    ],
340}
341
342cc_defaults {
343    name: "libart-compiler_static_defaults",
344    defaults: [
345        "libart-compiler_static_base_defaults",
346        "libart-disassembler_static_defaults",
347        "libartbase_static_defaults",
348        "libdexfile_static_defaults",
349        "libprofile_static_defaults",
350    ],
351    whole_static_libs: ["libart-compiler"],
352}
353
354// libart-compiler_static_defaults for standalone gtests.
355// Uses libart-compiler-for-test instead of libart-compiler.
356cc_defaults {
357    name: "libart-compiler-for-test_static_defaults",
358    defaults: [
359        "libart-compiler_static_base_defaults",
360        "libart-disassembler_static_defaults",
361        "libartbase_static_defaults",
362        "libdexfile_static_defaults",
363        "libprofile_static_defaults",
364    ],
365    whole_static_libs: ["libart-compiler-for-test"],
366}
367
368art_cc_library_static {
369    name: "libartd-compiler",
370    defaults: [
371        "art_debug_defaults",
372        "libart-compiler-defaults",
373        "libartd-compiler_deps",
374    ],
375    apex_available: [
376        "com.android.art.debug",
377    ],
378}
379
380cc_defaults {
381    name: "libartd-compiler_static_defaults",
382    defaults: [
383        "libart-compiler_static_base_defaults",
384        "libartbased_static_defaults",
385        "libartd-disassembler_static_defaults",
386        "libdexfiled_static_defaults",
387        "libprofiled_static_defaults",
388    ],
389    whole_static_libs: ["libartd-compiler"],
390}
391
392// Export headers required by `libart-runtime` to use JIT from `libart-compiler`.
393cc_library_headers {
394    name: "libart-compiler_jit_headers",
395    defaults: ["art_defaults"],
396    host_supported: true,
397    export_include_dirs: ["export"],
398    apex_available: [
399        "com.android.art",
400        "com.android.art.debug",
401        "test_broken_com.android.art",
402    ],
403}
404
405// Properties common to `libart-compiler-gtest` and `libartd-compiler-gtest`.
406art_cc_defaults {
407    name: "libart-compiler-gtest-common",
408    srcs: [
409        "common_compiler_test.cc",
410    ],
411    header_libs: [
412        "libart_headers",
413    ],
414}
415
416art_cc_library_static {
417    name: "libart-compiler-gtest",
418    defaults: [
419        "libart-gtest-defaults",
420        "libart-compiler-gtest-common",
421        "libart-compiler-for-test_static_defaults",
422    ],
423}
424
425art_cc_library_static {
426    name: "libartd-compiler-gtest",
427    defaults: [
428        "art_debug_defaults",
429        "libart-gtest-defaults",
430        "libart-compiler-gtest-common",
431        // Note that `libartd-compiler-for-test` is not required here, because
432        // `libartd-compiler` doesn't use LTO.
433        "libartd-compiler_static_defaults",
434    ],
435}
436
437art_cc_defaults {
438    name: "art_compiler_tests_defaults",
439    device_common_data: [
440        ":art-gtest-jars-ExceptionHandle",
441        ":art-gtest-jars-Main",
442        ":art-gtest-jars-MyClassNatives",
443    ],
444    tidy_timeout_srcs: [
445        "jni/jni_compiler_test.cc",
446        "optimizing/codegen_test.cc",
447        "optimizing/constant_folding_test.cc",
448        "optimizing/induction_var_range_test.cc",
449        "optimizing/load_store_elimination_test.cc",
450        "optimizing/ssa_test.cc",
451    ],
452    srcs: [
453        "compiler_reflection_test.cc",
454        "debug/dwarf/dwarf_test.cc",
455        "debug/src_map_elem_test.cc",
456        "exception_test.cc",
457        "jni/jni_compiler_test.cc",
458        "linker/linker_patch_test.cc",
459        "linker/output_stream_test.cc",
460        "oat/jni_stub_hash_map_test.cc",
461        "optimizing/bounds_check_elimination_test.cc",
462        "optimizing/constant_folding_test.cc",
463        "optimizing/control_flow_simplifier_test.cc",
464        "optimizing/data_type_test.cc",
465        "optimizing/dead_code_elimination_test.cc",
466        "optimizing/dominator_test.cc",
467        "optimizing/find_loops_test.cc",
468        "optimizing/graph_checker_test.cc",
469        "optimizing/graph_test.cc",
470        "optimizing/gvn_test.cc",
471        "optimizing/induction_var_analysis_test.cc",
472        "optimizing/induction_var_range_test.cc",
473        "optimizing/licm_test.cc",
474        "optimizing/linearize_test.cc",
475        "optimizing/live_interval_test.cc",
476        "optimizing/live_ranges_test.cc",
477        "optimizing/liveness_test.cc",
478        "optimizing/loop_optimization_test.cc",
479        "optimizing/nodes_test.cc",
480        "optimizing/nodes_vector_test.cc",
481        "optimizing/parallel_move_test.cc",
482        "optimizing/prepare_for_register_allocation_test.cc",
483        "optimizing/pretty_printer_test.cc",
484        "optimizing/reference_type_propagation_test.cc",
485        "optimizing/side_effects_test.cc",
486        "optimizing/ssa_liveness_analysis_test.cc",
487        "optimizing/ssa_test.cc",
488        "optimizing/stack_map_test.cc",
489        "optimizing/superblock_cloner_test.cc",
490        "optimizing/suspend_check_test.cc",
491
492        "optimizing/codegen_test.cc",
493        "optimizing/instruction_simplifier_test.cc",
494        "optimizing/load_store_analysis_test.cc",
495        "optimizing/load_store_elimination_test.cc",
496        "optimizing/scheduler_test.cc",
497    ],
498
499    codegen: {
500        arm: {
501            srcs: [
502                "utils/arm/managed_register_arm_test.cc",
503            ],
504        },
505        arm64: {
506            srcs: [
507                "utils/arm64/managed_register_arm64_test.cc",
508            ],
509        },
510        riscv64: {
511            srcs: [
512                "optimizing/instruction_simplifier_riscv64_test.cc",
513                "utils/riscv64/managed_register_riscv64_test.cc",
514            ],
515        },
516        x86: {
517            srcs: [
518                "utils/x86/managed_register_x86_test.cc",
519
520                // This test is testing architecture-independent functionality,
521                // but happens to use x86 codegen as part of the test.
522                "optimizing/register_allocator_test.cc",
523            ],
524        },
525        x86_64: {
526            srcs: [
527                // Is this test a bit-rotten copy of the x86 test? b/77951326
528                // "utils/x86_64/managed_register_x86_64_test.cc",
529            ],
530        },
531    },
532
533    header_libs: [
534        "libart_simulator_headers",
535        "libnativehelper_header_only",
536    ],
537
538    target: {
539        host: {
540            shared_libs: [
541                "libartd-simulator",
542            ],
543            required: ["art_boot_images"],
544        },
545    },
546}
547
548// Version of ART gtest `art_compiler_tests` bundled with the ART APEX on target.
549// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
550art_cc_test {
551    name: "art_compiler_tests",
552    defaults: [
553        "art_gtest_defaults",
554        "art_compiler_tests_defaults",
555    ],
556    static_libs: [
557        "libartd-simulator-container",
558    ],
559}
560
561// Standalone version of ART gtest `art_compiler_tests`, not bundled with the ART APEX on target.
562art_cc_test {
563    name: "art_standalone_compiler_tests",
564    defaults: [
565        "art_standalone_gtest_defaults",
566        "art_compiler_tests_defaults",
567    ],
568    data: [":generate-boot-image"],
569    static_libs: [
570        "libart-simulator-container",
571    ],
572    test_config: "art_standalone_compiler_tests.xml",
573}
574
575art_cc_test {
576    name: "art_compiler_host_tests",
577    device_supported: false,
578    defaults: [
579        "art_gtest_defaults",
580    ],
581    srcs: [
582        "jni/jni_cfi_test.cc",
583        "optimizing/optimizing_cfi_test.cc",
584    ],
585    tidy_timeout_srcs: [
586        "utils/x86/assembler_x86_test.cc",
587        "utils/x86_64/assembler_x86_64_test.cc",
588    ],
589    codegen: {
590        arm: {
591            srcs: [
592                "utils/assembler_thumb_test.cc",
593            ],
594        },
595        riscv64: {
596            srcs: [
597                "utils/riscv64/assembler_riscv64_test.cc",
598                "utils/riscv64/jni_macro_assembler_riscv64_test.cc",
599            ],
600        },
601        x86: {
602            srcs: [
603                "utils/x86/assembler_x86_test.cc",
604            ],
605        },
606        x86_64: {
607            srcs: [
608                "utils/x86_64/assembler_x86_64_test.cc",
609            ],
610        },
611    },
612    static_libs: [
613        "libvixld",
614    ],
615}
616