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