• 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
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