• 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/ark_config.gni")
15config("arkcompiler_public_config") {
16  include_dirs = [
17    "$ark_root/compiler",
18    "$ark_root/compiler/code_info",
19    "$ark_root/compiler/optimizer/ir",
20    "$target_gen_dir/generated",
21    get_label_info("$ark_root/cross_values:cross_values_getters_generate",
22                   "target_gen_dir"),
23    get_label_info("$ark_root/runtime:plugins_defines_h", "target_gen_dir") +
24        "/asm_defines/generated",
25  ]
26
27  include_dirs += platform_include_dirs
28
29  if (enable_bytecode_optimizer && !ark_standalone_build) {
30    defines = [ "ENABLE_BYTECODE_OPT" ]
31  }
32
33  is_x64 =
34      current_cpu == "amd64" || current_cpu == "x64" || current_cpu == "x86_64"
35
36  cflags_cc = []
37  if (is_x64 || current_cpu == "arm64") {
38    if (!is_mingw) {
39      cflags_cc += [
40        "-DPANDA_COMPILER_TARGET_AARCH64",
41        "-DUSE_VIXL_ARM64",
42      ]
43    }
44  }
45  if (ark_enable_compiler_x64) {
46    cflags_cc += [ "-DPANDA_COMPILER_TARGET_X86_64" ]
47  }
48}
49
50libarkcompiler_sources = [
51  "compiler_logger.cpp",
52  "compiler_options.cpp",
53  "optimizer/analysis/alias_analysis.cpp",
54  "optimizer/analysis/bounds_analysis.cpp",
55  "optimizer/analysis/countable_loop_parser.cpp",
56  "optimizer/analysis/dominators_tree.cpp",
57  "optimizer/analysis/linear_order.cpp",
58  "optimizer/analysis/live_registers.cpp",
59  "optimizer/analysis/liveness_analyzer.cpp",
60  "optimizer/analysis/liveness_use_table.cpp",
61  "optimizer/analysis/loop_analyzer.cpp",
62  "optimizer/analysis/object_type_propagation.cpp",
63  "optimizer/analysis/rpo.cpp",
64  "optimizer/analysis/types_analysis.cpp",
65  "optimizer/ir/analysis.cpp",
66  "optimizer/ir/aot_data.cpp",
67  "optimizer/ir/basicblock.cpp",
68  "optimizer/ir/dump.cpp",
69  "optimizer/ir/graph.cpp",
70  "optimizer/ir/graph_checker.cpp",
71  "optimizer/ir/graph_cloner.cpp",
72  "optimizer/ir/inst.cpp",
73  "optimizer/ir/locations.cpp",
74  "optimizer/ir_builder/inst_builder.cpp",
75  "optimizer/ir_builder/ir_builder.cpp",
76  "optimizer/optimizations/adjust_arefs.cpp",
77  "optimizer/optimizations/balance_expressions.cpp",
78  "optimizer/optimizations/cleanup.cpp",
79  "optimizer/optimizations/code_sink.cpp",
80  "optimizer/optimizations/deoptimize_elimination.cpp",
81  "optimizer/optimizations/if_conversion.cpp",
82  "optimizer/optimizations/loop_peeling.cpp",
83  "optimizer/optimizations/loop_unroll.cpp",
84  "optimizer/optimizations/lowering.cpp",
85  "optimizer/optimizations/memory_barriers.cpp",
86  "optimizer/optimizations/memory_coalescing.cpp",
87  "optimizer/optimizations/move_constants.cpp",
88  "optimizer/optimizations/object_type_check_elimination.cpp",
89  "optimizer/optimizations/redundant_loop_elimination.cpp",
90  "optimizer/optimizations/regalloc/interference_graph.cpp",
91  "optimizer/optimizations/regalloc/reg_alloc.cpp",
92  "optimizer/optimizations/regalloc/reg_alloc_base.cpp",
93  "optimizer/optimizations/regalloc/reg_alloc_graph_coloring.cpp",
94  "optimizer/optimizations/regalloc/reg_alloc_resolver.cpp",
95  "optimizer/optimizations/regalloc/reg_alloc_stat.cpp",
96  "optimizer/optimizations/regalloc/reg_map.cpp",
97  "optimizer/optimizations/regalloc/spill_fills_resolver.cpp",
98  "optimizer/optimizations/regalloc/split_resolver.cpp",
99  "optimizer/optimizations/scheduler.cpp",
100  "optimizer/optimizations/try_catch_resolving.cpp",
101  "optimizer/optimizations/types_resolving.cpp",
102  "optimizer/optimizations/vn.cpp",
103  "optimizer/pass.cpp",
104  "optimizer/pass_manager.cpp",
105  "optimizer/pass_manager_statistics.cpp",
106]
107
108plugin_irts = []
109foreach(plugin, enabled_plugins) {
110  print("add compiler plugin: $plugin")
111  plugin_dir = "$ark_root/plugins/$plugin"
112
113  source_files = read_file("$plugin_dir/subproject_sources.gn", "scope")
114  if (defined(source_files.srcs_compiler_path)) {
115    source_file = "$plugin_dir/${source_files.srcs_compiler_path}"
116    src_scope = read_file(source_file, "scope")
117    if (defined(src_scope.srcs)) {
118      foreach(src, src_scope.srcs) {
119        libarkcompiler_sources += [ "$plugin_dir/compiler/$src" ]
120      }
121    }
122
123    if (defined(source_files.irtoc_plugins)) {
124      scripts = read_file("$plugin_dir/${source_files.irtoc_plugins}", "scope")
125      foreach(script, scripts.srcs) {
126        plugin_irts +=
127            [ rebase_path("$plugin_dir/irtoc_scripts/$script", ark_root) ]
128      }
129    }
130
131    src_scope = {
132    }
133  }
134  source_files = []
135}
136
137libarkcompiler_sources += [ "$target_gen_dir/generated/inst_builder_gen.cpp" ]
138
139libarkcompiler_configs = [
140  sdk_libc_secshared_config,
141  ":arkcompiler_public_config",
142  "$ark_root:ark_config",
143  "$ark_root/libpandabase:arkbase_public_config",
144  "$ark_root/libpandafile:arkfile_public_config",
145  "$ark_root/runtime:arkruntime_public_config",
146]
147
148ohos_shared_library("libarkcompiler") {
149  sources = libarkcompiler_sources
150
151  configs = libarkcompiler_configs
152
153  deps = [
154    ":codegen_language_extensions_h",
155    ":compiler_events_gen_h",
156    ":compiler_interface_extensions_inl_h",
157    ":compiler_logger_components_inc",
158    ":compiler_options_gen_h",
159    ":cpu_features_gen_inc",
160    ":intrinsics_can_encode_inl",
161    ":intrinsics_codegen_ext_inl_h",
162    ":intrinsics_inline_inl",
163    ":intrinsics_ir_build_inl_h",
164    ":intrinsics_ir_build_static_call_inl",
165    ":intrinsics_ir_build_virtual_call_inl",
166    ":intrinsics_stub_inl",
167    ":intrinsics_stub_inl_h",
168    ":intrinsics_types_resolving_inl_h",
169    ":ir_dyn_base_types_h",
170    ":irtoc_builder_cpp",
171    ":irtoc_generate_ir_inline",
172    ":isa_gen_libarkcompiler_inst_builder_gen_cpp",
173    ":libarkcompiler_ecma_intrinsics_enum_inl",
174    ":libarkcompiler_generate_ecma_inl",
175    ":libarkcompiler_intrinsics_gen_inl_can_encode_builtin_inl",
176    ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_graph_inl",
177    ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_inst_inl",
178    ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_inl",
179    ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_names_inl",
180    ":libarkcompiler_intrinsics_gen_inl_intrinsic_codegen_test_inl",
181    ":libarkcompiler_intrinsics_gen_inl_intrinsic_flags_test_inl",
182    ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl",
183    ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl_h",
184    ":libarkcompiler_intrinsics_gen_inl_intrinsics_enum_inl",
185    ":libarkcompiler_intrinsics_gen_inl_intrinsics_flags_inl",
186    ":libarkcompiler_intrinsics_gen_inl_intrinsics_ir_build_inl",
187    ":libarkcompiler_opcodes_h_IR-instructions_md",
188    ":libarkcompiler_opcodes_h_arch_info_gen_h",
189    ":libarkcompiler_opcodes_h_codegen_arm64_gen_inc",
190    ":libarkcompiler_opcodes_h_deoptimize_elimination_call_visitors_inl",
191    ":libarkcompiler_opcodes_h_inst_checker_gen_h",
192    ":libarkcompiler_opcodes_h_opcodes_h",
193    ":source_languages_h",
194    "$ark_root/cross_values:cross_values_getters_generate(${default_toolchain})",
195    "$ark_root/libpandabase:libarkbase",
196    "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction-inl_gen_h",
197    "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction_enum_gen_h",
198    "$ark_root/libpandafile:libarkfile",
199    "$ark_root/libpandafile:libarkfile_type_gen_h",
200    "$ark_root/runtime:arkruntime_gen_entrypoints_compiler_checksum_entrypoints_compiler_checksum_inl",
201    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_compiler_inl",
202    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_gen_S",
203    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_gen_h",
204    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_enum_h",
205    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_gen_h",
206    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_h",
207    "$ark_root/runtime:arkruntime_gen_intrinsics_unimplemented_intrinsics-inl_cpp",
208    "$ark_root/runtime:plugins_entrypoints_gen_h",
209    "$ark_root/runtime/asm_defines:asm_defines_generator",
210    sdk_libc_secshared_dep,
211  ]
212
213  include_dirs = [ "$ark_root/compiler/optimizer" ]
214
215  output_extension = "so"
216  relative_install_dir = "ark"
217  part_name = "runtime_core"
218  subsystem_name = "arkcompiler"
219}
220
221ohos_static_library("libarkcompiler_frontend_static") {
222  sources = libarkcompiler_sources
223
224  configs = libarkcompiler_configs
225
226  deps = [
227    ":codegen_language_extensions_h",
228    ":compiler_events_gen_h",
229    ":compiler_interface_extensions_inl_h",
230    ":compiler_logger_components_inc",
231    ":compiler_options_gen_h",
232    ":cpu_features_gen_inc",
233    ":intrinsics_can_encode_inl",
234    ":intrinsics_codegen_ext_inl_h",
235    ":intrinsics_inline_inl",
236    ":intrinsics_ir_build_inl_h",
237    ":intrinsics_ir_build_static_call_inl",
238    ":intrinsics_ir_build_virtual_call_inl",
239    ":intrinsics_stub_inl",
240    ":intrinsics_stub_inl_h",
241    ":intrinsics_types_resolving_inl_h",
242    ":ir_dyn_base_types_h",
243    ":irtoc_builder_cpp",
244    ":irtoc_generate_ir_inline",
245    ":isa_gen_libarkcompiler_inst_builder_gen_cpp",
246    ":libarkcompiler_ecma_intrinsics_enum_inl",
247    ":libarkcompiler_generate_ecma_inl",
248    ":libarkcompiler_intrinsics_gen_inl_can_encode_builtin_inl",
249    ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_graph_inl",
250    ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_inst_inl",
251    ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_inl",
252    ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_names_inl",
253    ":libarkcompiler_intrinsics_gen_inl_intrinsic_codegen_test_inl",
254    ":libarkcompiler_intrinsics_gen_inl_intrinsic_flags_test_inl",
255    ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl",
256    ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl_h",
257    ":libarkcompiler_intrinsics_gen_inl_intrinsics_enum_inl",
258    ":libarkcompiler_intrinsics_gen_inl_intrinsics_flags_inl",
259    ":libarkcompiler_intrinsics_gen_inl_intrinsics_ir_build_inl",
260    ":libarkcompiler_opcodes_h_IR-instructions_md",
261    ":libarkcompiler_opcodes_h_arch_info_gen_h",
262    ":libarkcompiler_opcodes_h_codegen_arm64_gen_inc",
263    ":libarkcompiler_opcodes_h_deoptimize_elimination_call_visitors_inl",
264    ":libarkcompiler_opcodes_h_inst_checker_gen_h",
265    ":libarkcompiler_opcodes_h_opcodes_h",
266    ":source_languages_h",
267    "$ark_root/cross_values:cross_values_getters_generate(${default_toolchain})",
268    "$ark_root/libpandabase:libarkbase_frontend_static",
269    "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction-inl_gen_h",
270    "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction_enum_gen_h",
271    "$ark_root/libpandafile:libarkfile_frontend_static",
272    "$ark_root/libpandafile:libarkfile_type_gen_h",
273    "$ark_root/runtime:arkruntime_gen_entrypoints_compiler_checksum_entrypoints_compiler_checksum_inl",
274    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_compiler_inl",
275    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_gen_S",
276    "$ark_root/runtime:arkruntime_gen_entrypoints_entrypoints_gen_h",
277    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_enum_h",
278    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_gen_h",
279    "$ark_root/runtime:arkruntime_gen_intrinsics_intrinsics_h",
280    "$ark_root/runtime:arkruntime_gen_intrinsics_unimplemented_intrinsics-inl_cpp",
281    "$ark_root/runtime:plugins_entrypoints_gen_h",
282    "$ark_root/runtime/asm_defines:asm_defines_generator",
283    sdk_libc_secshared_dep,
284  ]
285
286  include_dirs = [ "$ark_root/compiler/optimizer" ]
287}
288
289ark_isa_gen("isa_gen_libarkcompiler") {
290  template_files = [ "inst_builder_gen.cpp.erb" ]
291  sources = "optimizer/templates"
292  destination = "$target_gen_dir/generated"
293}
294
295ark_gen("libarkcompiler_intrinsics_gen_inl") {
296  data = "$target_gen_dir/../runtime/intrinsics.yaml"
297  template_files = [
298    "intrinsics_enum.inl.erb",
299    "get_intrinsics.inl.erb",
300    "entrypoints_bridge_asm_macro.inl.erb",
301    "intrinsics_ir_build.inl.erb",
302    "get_intrinsics_names.inl.erb",
303    "generate_operations_intrinsic_inst.inl.erb",
304    "generate_operations_intrinsic_graph.inl.erb",
305    "intrinsic_codegen_test.inl.erb",
306    "intrinsic_flags_test.inl.erb",
307    "can_encode_builtin.inl.erb",
308    "intrinsics_codegen.inl.h.erb",
309    "intrinsics_codegen.inl.erb",
310    "intrinsics_flags.inl.erb",
311  ]
312  sources = "optimizer/templates/intrinsics"
313  destination = "$target_gen_dir/generated"
314  requires = [
315    "$ark_root/compiler/optimizer/templates/intrinsics/compiler_intrinsics.rb",
316  ]
317  extra_dependencies = [ "$ark_root/runtime:arkruntime_gen_intrinsics_yaml" ]
318}
319
320ark_isa_gen("libarkcompiler") {
321  template_files = [
322    "generate_ecma.inl.erb",
323    "ecma_intrinsics_enum.inl.erb",
324  ]
325  sources = "optimizer/templates"
326  requires = [ "$ark_root//assembler/asm_isapi.rb" ]
327  destination = "$target_gen_dir/generated"
328}
329
330ark_gen("libarkcompiler_opcodes_h") {
331  data = "$ark_root/compiler/optimizer/ir/instructions.yaml"
332  template_files = [
333    "opcodes.h.erb",
334    "arch_info_gen.h.erb",
335    "inst_checker_gen.h.erb",
336    "IR-instructions.md.erb",
337    "codegen_arm64_gen.inc.erb",
338    "deoptimize_elimination_call_visitors.inl.erb",
339  ]
340  sources = "optimizer/templates"
341  destination = "$target_gen_dir/generated"
342  requires = [ "$ark_root/compiler/optimizer/templates/instructions.rb" ]
343}
344
345ark_gen_file("compiler_options_gen_h") {
346  template_file = "$ark_root/templates/options/options.h.erb"
347  data_file = "compiler.yaml"
348  requires = [ "$ark_root/templates/common.rb" ]
349  output_file = "$target_gen_dir/generated/compiler_options_gen.h"
350}
351
352ark_gen_file("cpu_features_gen_inc") {
353  template_file = "$ark_root/templates/cpu_features.inc.erb"
354  data_file = "compiler.yaml"
355  requires = [ "$ark_root/templates/common.rb" ]
356  output_file = "$target_gen_dir/generated/cpu_features.inc"
357}
358
359ark_gen_file("compiler_events_gen_h") {
360  template_file = "$ark_root/templates/events/events.h.erb"
361  data_file = "compiler.yaml"
362  requires = [ "$ark_root/templates/common.rb" ]
363  output_file = "$target_gen_dir/generated/compiler_events_gen.h"
364}
365
366ark_gen_file("compiler_logger_components_inc") {
367  template_file =
368      "$ark_root/templates/logger_components/logger_components.inc.erb"
369  data_file = "compiler.yaml"
370  requires = [ "$ark_root/templates/common.rb" ]
371  output_file = "$target_gen_dir/generated/compiler_logger_components.inc"
372}
373ark_gen_file("intrinsics_stub_inl") {
374  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
375  template_file = "optimizer/templates/intrinsics/intrinsics_stub.inl.erb"
376  data_file = "$target_gen_dir/../plugin_options.yaml"
377  requires = [ "$ark_root/templates/plugin_options.rb" ]
378  output_file = "$target_gen_dir/generated/intrinsics_stub.inl"
379}
380ark_gen_file("intrinsics_stub_inl_h") {
381  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
382  template_file = "optimizer/templates/intrinsics/intrinsics_stub.inl.h.erb"
383  data_file = "$target_gen_dir/../plugin_options.yaml"
384  requires = [ "$ark_root/templates/plugin_options.rb" ]
385  output_file = "$target_gen_dir/generated/intrinsics_stub.inl.h"
386}
387ark_gen_file("intrinsics_codegen_ext_inl_h") {
388  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
389  template_file =
390      "optimizer/templates/intrinsics/intrinsics_codegen_ext.inl.h.erb"
391  data_file = "$target_gen_dir/../plugin_options.yaml"
392  requires = [ "$ark_root/templates/plugin_options.rb" ]
393  output_file = "$target_gen_dir/generated/intrinsics_codegen_ext.inl.h"
394}
395ark_gen_file("intrinsics_inline_inl") {
396  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
397  template_file = "optimizer/templates/intrinsics/intrinsics_inline.inl.erb"
398  data_file = "$target_gen_dir/../plugin_options.yaml"
399  requires = [ "$ark_root/templates/plugin_options.rb" ]
400  output_file = "$target_gen_dir/generated/intrinsics_inline.inl"
401}
402ark_gen_file("intrinsics_types_resolving_inl_h") {
403  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
404  template_file =
405      "optimizer/templates/intrinsics/intrinsics_types_resolving.inl.h.erb"
406  data_file = "$target_gen_dir/../plugin_options.yaml"
407  requires = [ "$ark_root/templates/plugin_options.rb" ]
408  output_file = "$target_gen_dir/generated/intrinsics_types_resolving.inl.h"
409}
410ark_gen_file("intrinsics_ir_build_inl_h") {
411  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
412  template_file = "optimizer/templates/intrinsics/intrinsics_ir_build.inl.h.erb"
413  data_file = "$target_gen_dir/../plugin_options.yaml"
414  requires = [ "$ark_root/templates/plugin_options.rb" ]
415  output_file = "$target_gen_dir/generated/intrinsics_ir_build.inl.h"
416}
417ark_gen_file("intrinsics_ir_build_static_call_inl") {
418  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
419  template_file =
420      "optimizer/templates/intrinsics/intrinsics_ir_build_static_call.inl.erb"
421  data_file = "$target_gen_dir/../plugin_options.yaml"
422  requires = [ "$ark_root/templates/plugin_options.rb" ]
423  output_file = "$target_gen_dir/generated/intrinsics_ir_build_static_call.inl"
424}
425ark_gen_file("intrinsics_ir_build_virtual_call_inl") {
426  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
427  template_file =
428      "optimizer/templates/intrinsics/intrinsics_ir_build_virtual_call.inl.erb"
429  data_file = "$target_gen_dir/../plugin_options.yaml"
430  requires = [ "$ark_root/templates/plugin_options.rb" ]
431  output_file = "$target_gen_dir/generated/intrinsics_ir_build_virtual_call.inl"
432}
433ark_gen_file("intrinsics_can_encode_inl") {
434  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
435  template_file = "optimizer/templates/intrinsics/intrinsics_can_encode.inl.erb"
436  data_file = "$target_gen_dir/../plugin_options.yaml"
437  requires = [ "$ark_root/templates/plugin_options.rb" ]
438  output_file = "$target_gen_dir/generated/intrinsics_can_encode.inl"
439}
440
441ark_gen_file("ir_dyn_base_types_h") {
442  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
443  template_file = "optimizer/templates/ir-dyn-base-types.h.erb"
444  data_file = "$target_gen_dir/../plugin_options.yaml"
445  requires = [ "$ark_root/templates/plugin_options.rb" ]
446  output_file = "$target_gen_dir/generated/ir-dyn-base-types.h"
447}
448
449ark_gen_file("source_languages_h") {
450  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
451  template_file = "optimizer/templates/source_languages.h.erb"
452  data_file = "$target_gen_dir/../plugin_options.yaml"
453  requires = [ "$ark_root/templates/plugin_options.rb" ]
454  output_file = "$target_gen_dir/generated/source_languages.h"
455}
456
457ark_gen_file("codegen_language_extensions_h") {
458  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
459  template_file = "optimizer/templates/codegen_language_extensions.h.erb"
460  data_file = "$target_gen_dir/../plugin_options.yaml"
461  requires = [ "$ark_root/templates/plugin_options.rb" ]
462  output_file = "$target_gen_dir/generated/codegen_language_extensions.h"
463}
464
465ark_gen_file("compiler_interface_extensions_inl_h") {
466  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
467  template_file = "optimizer/templates/compiler_interface_extensions.inl.h.erb"
468  data_file = "$target_gen_dir/../plugin_options.yaml"
469  requires = [ "$ark_root/templates/plugin_options.rb" ]
470  output_file = "$target_gen_dir/generated/compiler_interface_extensions.inl.h"
471}
472
473irtoc_file_plugin = "$root_gen_dir/generated/irtoc_plugin_builder.txt"
474write_file(irtoc_file_plugin, plugin_irts)
475
476action("irtoc_builder_cpp") {
477  script = "$ark_root/irtoc/lang/irtoc.rb"
478  outputs = [ "$target_gen_dir/generated/irtoc_builder.cpp" ]
479  args = [
480    "--input",
481    rebase_path("$ark_root/irtoc/scripts/interpreter.irt", root_build_dir),
482    "--output",
483    rebase_path("$target_gen_dir/generated/irtoc_builder.cpp", root_build_dir),
484    "--ark_source_dir",
485    rebase_path("$ark_root", root_build_dir),
486    "--isa",
487    rebase_path("$root_gen_dir/isa/isa.yaml", root_build_dir),
488    "--definitions",
489    "NDEBUG",
490    "--arch",
491    target_cpu,
492    "--ir-api",
493    "ir-builder",
494    "--plugins",
495    rebase_path(irtoc_file_plugin, root_build_dir),
496  ]
497
498  deps = [
499    "$ark_root/isa:isa_combine",
500    "$ark_root/runtime:plugins_asm_defines_def",
501    "$ark_root/runtime:plugins_defines_h",
502  ]
503}
504
505action("irtoc_generate_ir_inline") {
506  script = "$ark_root/irtoc/lang/irtoc.rb"
507  outputs = [ "$target_gen_dir/generated/irtoc_ir_inline.h" ]
508  args = [
509    "--input",
510    rebase_path("$ark_root/irtoc/scripts/interpreter.irt", root_build_dir),
511    "--output",
512    rebase_path("$target_gen_dir/generated/irtoc_ir_inline.h", root_build_dir),
513    "--ark_source_dir",
514    rebase_path("$ark_root", root_build_dir),
515    "--isa",
516    rebase_path("$root_gen_dir/isa/isa.yaml", root_build_dir),
517    "--definitions",
518    "NDEBUG",
519    "--arch",
520    target_cpu,
521    "--ir-api",
522    "ir-inline",
523    "--plugins",
524    rebase_path(irtoc_file_plugin, root_build_dir),
525  ]
526
527  deps = [
528    "$ark_root/isa:isa_combine",
529    "$ark_root/runtime:plugins_asm_defines_def",
530    "$ark_root/runtime:plugins_defines_h",
531  ]
532}
533