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