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