• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2022 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//arkcompiler/runtime_core/static_core/ark_config.gni")
15import("//arkcompiler/runtime_core/static_vm_config.gni")
16import("//build/ohos.gni")
17import("$ark_root/irtoc/irtoc.gni")
18import("$ark_root/plugins/plugins.gni")
19
20group("libarktscompiler_package") {
21  deps = []
22  if (enable_static_vm) {
23    deps += [ ":libarktscompiler_frontend_static" ]
24  }
25}
26
27config("arkcompiler_public_config") {
28  include_dirs = [
29    "$ark_root_gen_dir",
30    "$ark_root/compiler",
31    "$ark_root/compiler/code_info",
32    "$ark_root/compiler/optimizer/ir",
33    "$target_gen_dir/generated",
34    get_label_info("$ark_root/cross_values:cross_values_getters_generate",
35                   "target_gen_dir"),
36    get_label_info("$ark_root/runtime:plugins_defines_h", "target_gen_dir") +
37        "/asm_defines/generated",
38    get_label_info(
39        "$ark_root_gen_dir/cross_values:cross_values_getters_generate",
40        "target_gen_dir"),
41  ]
42
43  include_dirs += platform_include_dirs
44
45  defines = []
46  if (enable_bytecode_optimizer && plugin_enable_bytecode_optimizer) {
47    defines += [ "ENABLE_BYTECODE_OPT" ]
48  }
49
50  cflags_cc = []
51  if (target_cpu == "x64" || target_cpu == "x86_64") {
52    defines += [ "PANDA_COMPILER_TARGET_X86_64" ]
53  } else if (target_cpu == "arm64") {
54    defines += [ "PANDA_COMPILER_TARGET_AARCH64" ]
55  } else if (target_cpu == "arm") {
56    defines += [ "PANDA_COMPILER_TARGET_AARCH32" ]
57  }
58  configs = []
59  if (enable_codegen) {
60    configs +=
61        [ "$ark_root/compiler/optimizer/code_generator:arkencoder_config" ]
62  }
63}
64
65libarkcompiler_sources = [
66  "compiler_logger.cpp",
67  "compiler_options.cpp",
68  "optimizer/analysis/alias_analysis.cpp",
69  "optimizer/analysis/bounds_analysis.cpp",
70  "optimizer/analysis/catch_inputs.cpp",
71  "optimizer/analysis/countable_loop_parser.cpp",
72  "optimizer/analysis/dominators_tree.cpp",
73  "optimizer/analysis/linear_order.cpp",
74  "optimizer/analysis/live_registers.cpp",
75  "optimizer/analysis/liveness_analyzer.cpp",
76  "optimizer/analysis/liveness_use_table.cpp",
77  "optimizer/analysis/loop_analyzer.cpp",
78  "optimizer/analysis/monitor_analysis.cpp",
79  "optimizer/analysis/object_type_propagation.cpp",
80  "optimizer/analysis/reg_alloc_verifier.cpp",
81  "optimizer/analysis/rpo.cpp",
82  "optimizer/analysis/types_analysis.cpp",
83  "optimizer/ir/analysis.cpp",
84  "optimizer/ir/aot_data.cpp",
85  "optimizer/ir/basicblock.cpp",
86  "optimizer/ir/dump.cpp",
87  "optimizer/ir/graph.cpp",
88  "optimizer/ir/graph_checker.cpp",
89  "optimizer/ir/graph_cloner.cpp",
90  "optimizer/ir/inst.cpp",
91  "optimizer/ir/locations.cpp",
92  "optimizer/ir/loop_unswitcher.cpp",
93  "optimizer/ir/visualizer_printer.cpp",
94  "optimizer/ir_builder/inst_builder.cpp",
95  "optimizer/ir_builder/ir_builder.cpp",
96  "optimizer/optimizations/adjust_arefs.cpp",
97  "optimizer/optimizations/balance_expressions.cpp",
98  "optimizer/optimizations/branch_elimination.cpp",
99  "optimizer/optimizations/checks_elimination.cpp",
100  "optimizer/optimizations/cleanup.cpp",
101  "optimizer/optimizations/code_sink.cpp",
102  "optimizer/optimizations/condition_chain_cache.cpp",
103  "optimizer/optimizations/condition_chain_manager.cpp",
104  "optimizer/optimizations/const_folding.cpp",
105  "optimizer/optimizations/cse.cpp",
106  "optimizer/optimizations/deoptimize_elimination.cpp",
107  "optimizer/optimizations/escape.cpp",
108  "optimizer/optimizations/if_conversion.cpp",
109  "optimizer/optimizations/if_merging.cpp",
110  "optimizer/optimizations/inline_intrinsics.cpp",
111  "optimizer/optimizations/inlining.cpp",
112  "optimizer/optimizations/licm.cpp",
113  "optimizer/optimizations/licm_conditions.cpp",
114  "optimizer/optimizations/locations_builder.cpp",
115  "optimizer/optimizations/loop_idioms.cpp",
116  "optimizer/optimizations/loop_peeling.cpp",
117  "optimizer/optimizations/loop_unroll.cpp",
118  "optimizer/optimizations/loop_unswitch.cpp",
119  "optimizer/optimizations/lowering.cpp",
120  "optimizer/optimizations/lse.cpp",
121  "optimizer/optimizations/memory_barriers.cpp",
122  "optimizer/optimizations/memory_coalescing.cpp",
123  "optimizer/optimizations/move_constants.cpp",
124  "optimizer/optimizations/object_type_check_elimination.cpp",
125  "optimizer/optimizations/peepholes.cpp",
126  "optimizer/optimizations/phi_type_resolving.cpp",
127  "optimizer/optimizations/redundant_loop_elimination.cpp",
128  "optimizer/optimizations/regalloc/cleanup_empty_blocks.cpp",
129  "optimizer/optimizations/regalloc/interference_graph.cpp",
130  "optimizer/optimizations/regalloc/reg_alloc.cpp",
131  "optimizer/optimizations/regalloc/reg_alloc_base.cpp",
132  "optimizer/optimizations/regalloc/reg_alloc_graph_coloring.cpp",
133  "optimizer/optimizations/regalloc/reg_alloc_linear_scan.cpp",
134  "optimizer/optimizations/regalloc/reg_alloc_resolver.cpp",
135  "optimizer/optimizations/regalloc/reg_alloc_stat.cpp",
136  "optimizer/optimizations/regalloc/reg_map.cpp",
137  "optimizer/optimizations/regalloc/spill_fills_resolver.cpp",
138  "optimizer/optimizations/regalloc/split_resolver.cpp",
139  "optimizer/optimizations/scheduler.cpp",
140  "optimizer/optimizations/simplify_string_builder.cpp",
141  "optimizer/optimizations/try_catch_resolving.cpp",
142  "optimizer/optimizations/vn.cpp",
143  "optimizer/pass.cpp",
144  "optimizer/pass_manager.cpp",
145  "optimizer/pass_manager_statistics.cpp",
146]
147libarkcompiler_sources += plugin_libarkcompiler_sources
148
149if (!is_win && !is_mac && !is_mingw) {
150  libarkcompiler_sources += [
151    "code_info/code_info.cpp",
152    "code_info/code_info_builder.cpp",
153    "compile_method.cpp",
154    "optimizer/code_generator/codegen.cpp",
155    "optimizer/code_generator/codegen_native.cpp",
156    "optimizer/code_generator/disassembly.cpp",
157    "optimizer/code_generator/method_properties.cpp",
158    "optimizer/code_generator/slow_path.cpp",
159    "optimizer/code_generator/spill_fill_encoder.cpp",
160    "optimizer/pipeline.cpp",
161  ]
162}
163
164libarkcompiler_sources += [ "$target_gen_dir/generated/inst_builder_gen.cpp" ]
165
166libarkcompiler_configs = [
167  sdk_libc_secshared_config,
168  ":arkcompiler_public_config",
169  "$ark_root:ark_config",
170  "$ark_root/libpandabase:arkbase_public_config",
171  "$ark_root/libpandafile:arkfile_public_config",
172  "$ark_root/runtime:arkruntime_public_config",
173]
174
175ohos_shared_library("libarktscompiler") {
176  sources = libarkcompiler_sources
177
178  configs = libarkcompiler_configs
179
180  deps = [
181    ":codegen_language_extensions_h",
182    ":compiler_events_gen_h",
183    ":compiler_interface_extensions_inl_h",
184    ":compiler_logger_components_inc",
185    ":compiler_options_gen_h",
186    ":cpu_features_gen_inc",
187    ":inst_builder_extensions_inl_h",
188    ":intrinsics_can_encode_inl",
189    ":intrinsics_codegen_ext_inl_h",
190    ":intrinsics_extensions_inl_h",
191    ":intrinsics_graph_checker_inl",
192    ":intrinsics_inline_inl_h",
193    ":intrinsics_inline_native_method_inl",
194    ":intrinsics_ir_build_inl_h",
195    ":intrinsics_ir_build_static_call_inl",
196    ":intrinsics_ir_build_virtual_call_inl",
197    ":intrinsics_lse_heap_inv_args_inl",
198    ":intrinsics_peephole_inl_h",
199    ":ir_dyn_base_types_h",
200    ":isa_gen_libarkcompiler_inst_builder_gen_cpp",
201    ":libarkcompiler_intrinsics_gen_inl_can_encode_builtin_inl",
202    ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_graph_inl",
203    ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_inst_inl",
204    ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_inl",
205    ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_names_inl",
206    ":libarkcompiler_intrinsics_gen_inl_intrinsic_codegen_test_inl",
207    ":libarkcompiler_intrinsics_gen_inl_intrinsic_flags_test_inl",
208    ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl",
209    ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl_h",
210    ":libarkcompiler_intrinsics_gen_inl_intrinsics_enum_inl",
211    ":libarkcompiler_intrinsics_gen_inl_intrinsics_flags_inl",
212    ":libarkcompiler_intrinsics_gen_inl_intrinsics_inline_inl",
213    ":libarkcompiler_intrinsics_gen_inl_intrinsics_ir_build_inl",
214    ":libarkcompiler_intrinsics_gen_inl_intrinsics_peephole_inl",
215    ":libarkcompiler_opcodes_h_IR-instructions_md",
216    ":libarkcompiler_opcodes_h_arch_info_gen_h",
217    ":libarkcompiler_opcodes_h_codegen_arm64_gen_inc",
218    ":libarkcompiler_opcodes_h_deoptimize_elimination_call_visitors_inl",
219    ":libarkcompiler_opcodes_h_inst_checker_gen_h",
220    ":libarkcompiler_opcodes_h_opcodes_h",
221    ":source_languages_h",
222    "$ark_root/cross_values:cross_values_getters_generate(${default_toolchain})",
223    "$ark_root/libpandabase:libarktsbase",
224    "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction-inl_gen_h",
225    "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction_enum_gen_h",
226    "$ark_root/libpandafile:libarkfile_type_gen_h",
227    "$ark_root/libpandafile:libarktsfile",
228    "$ark_root/runtime:arkruntime_gen_entrypoints_compiler_checksum_entrypoints_compiler_checksum_inl",
229    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_compiler_inl",
230    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_gen_S",
231    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_gen_h",
232    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_enum_h",
233    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_gen_h",
234    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_h",
235    "$ark_root/runtime:arkruntime_gen_intrinsics_unimplemented_intrinsics-inl_cpp",
236    "$ark_root/runtime:plugins_entrypoints_gen_h",
237    "$ark_root/runtime/asm_defines:asm_defines_generator",
238    sdk_libc_secshared_dep,
239  ]
240  if (enable_irtoc) {
241    deps += [
242      ":irtoc_builder_cpp",
243      ":irtoc_generate_ir_inline",
244      ":irtoc_interface_extensions_inl_h",
245    ]
246  }
247  if (enable_codegen) {
248    deps += [ "$ark_root/compiler/optimizer/code_generator:libarkencoder" ]
249  }
250
251  deps += plugin_compiler_deps
252
253  include_dirs = [
254    "$ark_root/compiler/optimizer",
255    "$ark_root/compiler/optimizer/code_generator",
256  ]
257
258  output_extension = "so"
259  part_name = ark_part_name
260  subsystem_name = "$ark_subsystem_name"
261}
262
263ohos_source_set("libarktscompiler_frontend_static") {
264  sources = libarkcompiler_sources
265
266  configs = libarkcompiler_configs
267
268  deps = [
269    ":codegen_language_extensions_h",
270    ":compiler_events_gen_h",
271    ":compiler_interface_extensions_inl_h",
272    ":compiler_logger_components_inc",
273    ":compiler_options_gen_h",
274    ":cpu_features_gen_inc",
275    ":inst_builder_extensions_inl_h",
276    ":intrinsics_can_encode_inl",
277    ":intrinsics_codegen_ext_inl_h",
278    ":intrinsics_extensions_inl_h",
279    ":intrinsics_graph_checker_inl",
280    ":intrinsics_inline_inl_h",
281    ":intrinsics_inline_native_method_inl",
282    ":intrinsics_ir_build_inl_h",
283    ":intrinsics_ir_build_static_call_inl",
284    ":intrinsics_ir_build_virtual_call_inl",
285    ":intrinsics_lse_heap_inv_args_inl",
286    ":intrinsics_peephole_inl_h",
287    ":ir_dyn_base_types_h",
288    ":isa_gen_libarkcompiler_inst_builder_gen_cpp",
289    ":libarkcompiler_intrinsics_gen_inl_can_encode_builtin_inl",
290    ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_graph_inl",
291    ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_inst_inl",
292    ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_inl",
293    ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_names_inl",
294    ":libarkcompiler_intrinsics_gen_inl_intrinsic_codegen_test_inl",
295    ":libarkcompiler_intrinsics_gen_inl_intrinsic_flags_test_inl",
296    ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl",
297    ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl_h",
298    ":libarkcompiler_intrinsics_gen_inl_intrinsics_enum_inl",
299    ":libarkcompiler_intrinsics_gen_inl_intrinsics_flags_inl",
300    ":libarkcompiler_intrinsics_gen_inl_intrinsics_inline_inl",
301    ":libarkcompiler_intrinsics_gen_inl_intrinsics_ir_build_inl",
302    ":libarkcompiler_intrinsics_gen_inl_intrinsics_peephole_inl",
303    ":libarkcompiler_opcodes_h_IR-instructions_md",
304    ":libarkcompiler_opcodes_h_arch_info_gen_h",
305    ":libarkcompiler_opcodes_h_codegen_arm64_gen_inc",
306    ":libarkcompiler_opcodes_h_deoptimize_elimination_call_visitors_inl",
307    ":libarkcompiler_opcodes_h_inst_checker_gen_h",
308    ":libarkcompiler_opcodes_h_opcodes_h",
309    ":source_languages_h",
310    "$ark_root/cross_values:cross_values_getters_generate(${default_toolchain})",
311    "$ark_root/libpandabase:libarktsbase_frontend_static",
312    "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction-inl_gen_h",
313    "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction_enum_gen_h",
314    "$ark_root/libpandafile:libarkfile_type_gen_h",
315    "$ark_root/libpandafile:libarktsfile_frontend_static",
316    "$ark_root/runtime:arkruntime_gen_entrypoints_compiler_checksum_entrypoints_compiler_checksum_inl",
317    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_compiler_inl",
318    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_gen_S",
319    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_gen_h",
320    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_enum_h",
321    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_gen_h",
322    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_h",
323    "$ark_root/runtime:arkruntime_gen_intrinsics_unimplemented_intrinsics-inl_cpp",
324    "$ark_root/runtime:plugins_entrypoints_gen_h",
325    "$ark_root/runtime/asm_defines:asm_defines_generator",
326    sdk_libc_secshared_dep,
327  ]
328  if (enable_irtoc) {
329    deps += [
330      ":irtoc_builder_cpp",
331      ":irtoc_generate_ir_inline",
332      ":irtoc_interface_extensions_inl_h",
333    ]
334  }
335  if (enable_codegen) {
336    deps += [ "$ark_root/compiler/optimizer/code_generator:libarkencoder_frontend_static" ]
337  }
338  deps += plugin_compiler_deps
339
340  include_dirs = [
341    "$ark_root/compiler/optimizer",
342    "$ark_root/compiler/optimizer/code_generator",
343  ]
344  part_name = ark_part_name
345  subsystem_name = ark_subsystem_name
346}
347
348copy("copy_inst_builder_gen_cpp_erb") {
349  sources = [ "optimizer/templates/inst_builder_gen.cpp.erb" ]
350  outputs = [ "$target_gen_dir/generated/inst_builder_gen.cpp.erb" ]
351}
352
353ark_isa_gen("isa_gen_libarkcompiler") {
354  template_files = [ "inst_builder_gen.cpp.erb" ]
355  sources = "$target_gen_dir/generated"
356  destination = "$target_gen_dir/generated"
357  extra_dependencies = [
358    ":copy_inst_builder_gen_cpp_erb",
359    "$ark_root:concat_inst_templates_yamls",
360  ]
361}
362
363ark_gen("libarkcompiler_intrinsics_gen_inl") {
364  data = "$target_gen_dir/../runtime/intrinsics.yaml"
365  template_files = [
366    "intrinsics_enum.inl.erb",
367    "get_intrinsics.inl.erb",
368    "entrypoints_bridge_asm_macro.inl.erb",
369    "intrinsics_ir_build.inl.erb",
370    "get_intrinsics_names.inl.erb",
371    "generate_operations_intrinsic_inst.inl.erb",
372    "generate_operations_intrinsic_graph.inl.erb",
373    "intrinsic_codegen_test.inl.erb",
374    "intrinsic_flags_test.inl.erb",
375    "can_encode_builtin.inl.erb",
376    "intrinsics_codegen.inl.h.erb",
377    "intrinsics_codegen.inl.erb",
378    "intrinsics_flags.inl.erb",
379    "intrinsics_inline.inl.erb",
380    "intrinsics_peephole.inl.erb",
381  ]
382  sources = "optimizer/templates/intrinsics"
383  destination = "$target_gen_dir/generated"
384  requires = [
385    "$ark_root/compiler/optimizer/templates/intrinsics/compiler_intrinsics.rb",
386  ]
387  extra_dependencies = [ "$ark_root/runtime:arkruntime_gen_intrinsics_yaml" ]
388}
389
390ark_gen("libarkcompiler_opcodes_h") {
391  data = "$ark_root/compiler/optimizer/ir/instructions.yaml"
392  template_files = [
393    "opcodes.h.erb",
394    "arch_info_gen.h.erb",
395    "inst_checker_gen.h.erb",
396    "IR-instructions.md.erb",
397    "codegen_arm64_gen.inc.erb",
398    "deoptimize_elimination_call_visitors.inl.erb",
399  ]
400  sources = "optimizer/templates"
401  destination = "$target_gen_dir/generated"
402  requires = [ "$ark_root/compiler/optimizer/templates/instructions.rb" ]
403}
404
405ark_gen_file("compiler_options_gen_h") {
406  template_file = "$ark_root/templates/options/options.h.erb"
407  data_file = "$target_gen_dir/generated/compiler_options.yaml"
408  requires = [ "$ark_root/templates/common.rb" ]
409  output_file = "$target_gen_dir/generated/compiler_options_gen.h"
410  extra_dependencies = [ "$ark_root:merge_compiler_options_yamls" ]
411}
412
413ark_gen_file("cpu_features_gen_inc") {
414  template_file = "$ark_root/templates/cpu_features.inc.erb"
415  data_file = "compiler.yaml"
416  requires = [ "$ark_root/templates/common.rb" ]
417  output_file = "$target_gen_dir/generated/cpu_features.inc"
418}
419
420ark_gen_file("compiler_events_gen_h") {
421  template_file = "$ark_root/templates/events/events.h.erb"
422  data_file = "compiler.yaml"
423  requires = [ "$ark_root/templates/common.rb" ]
424  output_file = "$target_gen_dir/generated/compiler_events_gen.h"
425}
426
427ark_gen_file("compiler_logger_components_inc") {
428  template_file =
429      "$ark_root/templates/logger_components/logger_components.inc.erb"
430  data_file = "compiler.yaml"
431  requires = [ "$ark_root/templates/common.rb" ]
432  output_file = "$target_gen_dir/generated/compiler_logger_components.inc"
433}
434ark_gen_file("intrinsics_codegen_ext_inl_h") {
435  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
436  template_file =
437      "optimizer/templates/intrinsics/intrinsics_codegen_ext.inl.h.erb"
438  data_file = "$ark_plugin_options_yaml"
439  requires = [ "$ark_root/templates/plugin_options.rb" ]
440  output_file = "$target_gen_dir/generated/intrinsics_codegen_ext.inl.h"
441}
442ark_gen_file("intrinsics_inline_inl_h") {
443  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
444  template_file = "optimizer/templates/intrinsics/intrinsics_inline.inl.h.erb"
445  data_file = "$ark_plugin_options_yaml"
446  requires = [ "$ark_root/templates/plugin_options.rb" ]
447  output_file = "$target_gen_dir/generated/intrinsics_inline.inl.h"
448}
449ark_gen_file("intrinsics_inline_native_method_inl") {
450  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
451  template_file =
452      "optimizer/templates/intrinsics/intrinsics_inline_native_method.inl.erb"
453  data_file = "$ark_plugin_options_yaml"
454  requires = [ "$ark_root/templates/plugin_options.rb" ]
455  output_file = "$target_gen_dir/generated/intrinsics_inline_native_method.inl"
456}
457ark_gen_file("intrinsics_peephole_inl_h") {
458  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
459  template_file = "optimizer/templates/intrinsics/intrinsics_peephole.inl.h.erb"
460  data_file = "$ark_plugin_options_yaml"
461  requires = [ "$ark_root/templates/plugin_options.rb" ]
462  output_file = "$target_gen_dir/generated/intrinsics_peephole.inl.h"
463}
464ark_gen_file("intrinsics_graph_checker_inl") {
465  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
466  template_file =
467      "optimizer/templates/intrinsics/intrinsics_graph_checker.inl.erb"
468  data_file = "$ark_plugin_options_yaml"
469  requires = [ "$ark_root/templates/plugin_options.rb" ]
470  output_file = "$target_gen_dir/generated/intrinsics_graph_checker.inl"
471}
472ark_gen_file("intrinsics_ir_build_inl_h") {
473  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
474  template_file = "optimizer/templates/intrinsics/intrinsics_ir_build.inl.h.erb"
475  data_file = "$ark_plugin_options_yaml"
476  requires = [ "$ark_root/templates/plugin_options.rb" ]
477  output_file = "$target_gen_dir/generated/intrinsics_ir_build.inl.h"
478}
479ark_gen_file("intrinsics_ir_build_static_call_inl") {
480  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
481  template_file =
482      "optimizer/templates/intrinsics/intrinsics_ir_build_static_call.inl.erb"
483  data_file = "$ark_plugin_options_yaml"
484  requires = [ "$ark_root/templates/plugin_options.rb" ]
485  output_file = "$target_gen_dir/generated/intrinsics_ir_build_static_call.inl"
486}
487ark_gen_file("intrinsics_ir_build_virtual_call_inl") {
488  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
489  template_file =
490      "optimizer/templates/intrinsics/intrinsics_ir_build_virtual_call.inl.erb"
491  data_file = "$ark_plugin_options_yaml"
492  requires = [ "$ark_root/templates/plugin_options.rb" ]
493  output_file = "$target_gen_dir/generated/intrinsics_ir_build_virtual_call.inl"
494}
495ark_gen_file("intrinsics_can_encode_inl") {
496  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
497  template_file = "optimizer/templates/intrinsics/intrinsics_can_encode.inl.erb"
498  data_file = "$ark_plugin_options_yaml"
499  requires = [ "$ark_root/templates/plugin_options.rb" ]
500  output_file = "$target_gen_dir/generated/intrinsics_can_encode.inl"
501}
502ark_gen_file("intrinsics_lse_heap_inv_args_inl") {
503  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
504  template_file =
505      "optimizer/templates/intrinsics/intrinsics_lse_heap_inv_args.inl.erb"
506  data_file = "$ark_plugin_options_yaml"
507  requires = [ "$ark_root/templates/plugin_options.rb" ]
508  output_file = "$target_gen_dir/generated/intrinsics_lse_heap_inv_args.inl"
509}
510
511ark_gen_file("ir_dyn_base_types_h") {
512  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
513  template_file = "optimizer/templates/ir-dyn-base-types.h.erb"
514  data_file = "$ark_plugin_options_yaml"
515  requires = [ "$ark_root/templates/plugin_options.rb" ]
516  output_file = "$target_gen_dir/generated/ir-dyn-base-types.h"
517}
518
519ark_gen_file("source_languages_h") {
520  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
521  template_file = "optimizer/templates/source_languages.h.erb"
522  data_file = "$ark_plugin_options_yaml"
523  requires = [ "$ark_root/templates/plugin_options.rb" ]
524  output_file = "$target_gen_dir/generated/source_languages.h"
525}
526
527ark_gen_file("codegen_language_extensions_h") {
528  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
529  template_file = "optimizer/templates/codegen_language_extensions.h.erb"
530  data_file = "$ark_plugin_options_yaml"
531  requires = [ "$ark_root/templates/plugin_options.rb" ]
532  output_file = "$target_gen_dir/generated/codegen_language_extensions.h"
533}
534
535ark_gen_file("compiler_interface_extensions_inl_h") {
536  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
537  template_file = "optimizer/templates/compiler_interface_extensions.inl.h.erb"
538  data_file = "$ark_plugin_options_yaml"
539  requires = [ "$ark_root/templates/plugin_options.rb" ]
540  output_file = "$target_gen_dir/generated/compiler_interface_extensions.inl.h"
541}
542
543ark_gen_file("inst_builder_extensions_inl_h") {
544  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
545  template_file = "optimizer/templates/inst_builder_extensions.inl.h.erb"
546  data_file = "$ark_plugin_options_yaml"
547  requires = [ "$ark_root/templates/plugin_options.rb" ]
548  output_file = "$target_gen_dir/generated/inst_builder_extensions.inl.h"
549}
550
551ark_gen_file("intrinsics_extensions_inl_h") {
552  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
553  template_file = "optimizer/templates/intrinsics_extensions.inl.h.erb"
554  data_file = "$ark_plugin_options_yaml"
555  requires = [ "$ark_root/templates/plugin_options.rb" ]
556  output_file = "$target_gen_dir/generated/intrinsics_extensions.inl.h"
557}
558
559if (enable_irtoc) {
560  ark_gen_file("irtoc_interface_extensions_inl_h") {
561    extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
562    template_file = "optimizer/templates/irtoc_interface_extensions.inl.h.erb"
563    data_file = "$ark_plugin_options_yaml"
564    requires = [ "$ark_root/templates/plugin_options.rb" ]
565    output_file = "$target_gen_dir/generated/irtoc_interface_extensions.inl.h"
566  }
567
568  ark_gen_file("irtoc_interface_extensions_includes_inl_h") {
569    extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
570    template_file =
571        "optimizer/templates/irtoc_interface_extensions_includes.inl.h.erb"
572    data_file = "$ark_plugin_options_yaml"
573    requires = [ "$ark_root/templates/plugin_options.rb" ]
574    output_file =
575        "$target_gen_dir/generated/irtoc_interface_extensions_includes.inl.h"
576  }
577
578  action("irtoc_builder_cpp") {
579    script = "$ark_root/irtoc/lang/irtoc.rb"
580    outputs = [ "$target_gen_dir/generated/irtoc_builder.cpp" ]
581    working_dir = "$root_build_dir/irtoc_builder_cpp"
582    args = [
583      "--input",
584      rebase_path("$ark_root/irtoc/scripts/interpreter.irt", working_dir),
585      "--output",
586      rebase_path("$target_gen_dir/generated/irtoc_builder.cpp", working_dir),
587      "--ark_source_dir",
588      rebase_path("$ark_root", working_dir),
589      "--isa",
590      rebase_path("$ark_isa_yaml", working_dir),
591      "--definitions",
592      "NDEBUG",
593      "--arch",
594      target_cpu,
595      "--ir-api",
596      "ir-builder",
597      "--plugins",
598      rebase_path(irtoc_plugins_file, working_dir),
599      "--working-dir",
600      rebase_path(working_dir, root_build_dir),
601    ]
602
603    deps = [
604      "$ark_root/irtoc:irtoc_plugins_file",
605      "$ark_root/isa:isa_combine",
606      "$ark_root/runtime:plugins_asm_defines_def",
607      "$ark_root/runtime:plugins_defines_h",
608    ]
609  }
610
611  action("irtoc_generate_ir_inline") {
612    script = "$ark_root/irtoc/lang/irtoc.rb"
613    outputs = [ "$target_gen_dir/generated/irtoc_ir_inline.h" ]
614    working_dir = "$root_build_dir/irtoc_generate_ir_inline"
615    args = [
616      "--input",
617      rebase_path("$ark_root/irtoc/scripts/interpreter.irt", working_dir),
618      "--output",
619      rebase_path("$target_gen_dir/generated/irtoc_ir_inline.h", working_dir),
620      "--ark_source_dir",
621      rebase_path("$ark_root", working_dir),
622      "--isa",
623      rebase_path("$ark_isa_yaml", working_dir),
624      "--definitions",
625      "NDEBUG",
626      "--arch",
627      target_cpu,
628      "--ir-api",
629      "ir-inline",
630      "--plugins",
631      rebase_path(irtoc_plugins_file, working_dir),
632      "--working-dir",
633      rebase_path(working_dir, root_build_dir),
634    ]
635
636    deps = [
637      "$ark_root/isa:isa_combine",
638      "$ark_root/runtime:plugins_asm_defines_def",
639      "$ark_root/runtime:plugins_defines_h",
640    ]
641  }
642}
643