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