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