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