# Copyright (c) 2024 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("//arkcompiler/runtime_core/libabckit/abckit_config.gni") import("//arkcompiler/runtime_core/static_core/ark_config.gni") import("//arkcompiler/runtime_core/static_vm_config.gni") ark_gen("abckit_ark_gen") { data = [ "../abckit_compiler_intrinsics.yaml", "$isa_gen_dir/isa.yaml", ] template_files = [ "insn_selection_static.h.erb", "insn_selection_static.cpp.erb", ] sources = "templates" api = [ "$ark_root_static/compiler/optimizer/templates/intrinsics/compiler_intrinsics.rb", "$ark_root_static/isa/isapi.rb", ] extra_dependencies = [ "$ark_root_static/isa:isa_combine", "$ark_root_static/runtime:arkruntime_gen_intrinsics_yaml", ] requires = [ "$ark_root_static/libpandabase/utils.rb", "codegen_static_isapi.rb", "$ark_root_static/assembler/asm_isapi.rb", ] destination = "$target_gen_dir/generated" } ark_gen_file("codegen_visitors_static_inc") { extra_dependencies = [ "$ark_root_static:concat_plugins_yamls" ] template_file = "templates/codegen_visitors_static.inc.erb" data = [ ark_plugin_options_yaml, "../abckit_compiler_intrinsics.yaml", ] api = [ "$ark_root_static/templates/plugin_options.rb", "$ark_root_static/compiler/optimizer/templates/intrinsics/compiler_intrinsics.rb", ] output_file = "$target_gen_dir/generated/tmp/codegen_visitors_static.inc" } runtime_intrinsics_gen_dir = get_label_info("$ark_root_static/runtime:arkruntime_gen_intrinsics_yaml", "target_gen_dir") ark_gen("abckit_ark_gen") { data = [ "$runtime_intrinsics_gen_dir/abckit_intrinsics.yaml", ark_plugin_options_yaml, ] template_files = [ "codegen_intrinsics_static.cpp.erb" ] sources = "templates" api = [ "$ark_root_static/compiler/optimizer/templates/intrinsics/compiler_intrinsics.rb", "$ark_root_static/templates/plugin_options.rb", ] extra_dependencies = [ "$ark_root_static:concat_plugins_yamls", "$abckit_root/src:abckit_concat_intrinsics_yaml", ] requires = [ "$ark_root_static/libpandabase/utils.rb" ] destination = "$target_gen_dir/generated/tmp" } ets_codegen_visitors_dir = "$ark_root_static/plugins/ets/bytecode_optimizer/visitors" copy("ets_codegen_intrinsics_inc_copy") { sources = [ "$ets_codegen_visitors_dir/ets_codegen_intrinsics.inc" ] outputs = [ "$target_gen_dir/generated/tmp/ets_codegen_intrinsics.inc" ] } copy("ets_codegen_visitors_inc_copy") { sources = [ "$ets_codegen_visitors_dir/codegen_visitors.inc" ] outputs = [ "$target_gen_dir/generated/tmp/codegen_visitors.inc" ] } ets_codegen_intrinsics_gen_target = "$ark_root_static/plugins/ets:isa_gen_ets_bytecodeopt_ets_codegen_intrinsics_gen_inc" ets_codegen_gen_dir = get_label_info("$ets_codegen_intrinsics_gen_target", "target_gen_dir") copy("ets_codegen_intrinsics_gen_copy") { deps = [ "$ets_codegen_intrinsics_gen_target" ] sources = [ "$ets_codegen_gen_dir/ets_codegen_intrinsics_gen.inc" ] outputs = [ "$target_gen_dir/generated/tmp/ets_codegen_intrinsics_gen.inc" ] } action("fix_static_codegen_plugin_files") { deps = [ ":abckit_ark_gen_codegen_intrinsics_static_cpp", ":codegen_visitors_static_inc", ":ets_codegen_intrinsics_gen_copy", ":ets_codegen_intrinsics_inc_copy", ":ets_codegen_visitors_inc_copy", ] script = "./../../scripts/fix_static_codegen_plugin_files.sh" args = [ rebase_path("$target_gen_dir/generated"), rebase_path("$target_gen_dir/generated/tmp/codegen_intrinsics_static.cpp"), rebase_path("$target_gen_dir/generated/tmp/codegen_visitors_static.inc"), rebase_path("$target_gen_dir/generated/tmp/ets_codegen_intrinsics.inc"), rebase_path("$target_gen_dir/generated/tmp/codegen_visitors.inc"), rebase_path("$target_gen_dir/generated/tmp/ets_codegen_intrinsics_gen.inc"), ] outputs = [ "$target_gen_dir/generated/codegen_intrinsics_static.cpp", "$target_gen_dir/generated/codegen_visitors_static.inc", "$target_gen_dir/generated/ets_codegen_intrinsics.inc", "$target_gen_dir/generated/codegen_visitors.inc", "$target_gen_dir/generated/ets_codegen_intrinsics_gen.inc", ] } ark_gen_file("codegen_call_intrinsics_static_inc") { extra_dependencies = [ "$ark_root_static/runtime:arkruntime_gen_intrinsics_yaml", "$ark_root_static:concat_plugins_yamls", "$abckit_root/src:abckit_concat_intrinsics_yaml", ] template_file = "templates/codegen_call_intrinsics_static.inc.erb" data = [ "$runtime_intrinsics_gen_dir/abckit_intrinsics.yaml", ark_plugin_options_yaml, ] api = [ "$ark_root_static/runtime/templates/intrinsics.rb", "$ark_root_static/templates/plugin_options.rb", ] output_file = "$target_gen_dir/generated/codegen_call_intrinsics_static.inc" } group("abckit_codegen_static_source_set_header_deps") { deps = [ ":abckit_ark_gen_insn_selection_static_h", ":codegen_call_intrinsics_static_inc", ":fix_static_codegen_plugin_files", ] } ohos_source_set("abckit_codegen_static_source_set") { sources = [ "codegen_static.cpp" ] bco_gen_dir = get_label_info("$ark_root_static/bytecode_optimizer:libarktsbytecodeopt", "target_gen_dir") ins_create_wrapper_dyn_dir = get_label_info( "$abckit_root/src/wrappers:abckit_isa_gen_ins_create_wrapper_api_inc", "target_gen_dir") include_dirs = [ "$target_gen_dir", "$ins_create_wrapper_dyn_dir", "$ark_root_static", # this target should not include headers from dynamic # runtime, # so static_core must be listed first "$ark_root_static/..", "$bco_gen_dir", ] part_name = "runtime_core" subsystem_name = "arkcompiler" configs = [ "$ark_root_static/:ark_config", "$ark_root_static/assembler:arkassembler_public_config", "$ark_root_static/compiler:arkcompiler_public_config", "$ark_root_static/bytecode_optimizer:bytecodeopt_public_config", "$ark_root_static/libpandafile:arkfile_public_config", "$ark_root_static/libpandabase:arkbase_public_config", "$ark_root_static/runtime:arkruntime_public_config", "$abckit_root:abckit_config", ] deps = [ ":abckit_ark_gen_codegen_intrinsics_static_cpp", ":abckit_ark_gen_insn_selection_static_cpp", ":abckit_codegen_static_source_set_header_deps", "$ark_root_static/compiler:libarktscompiler", "$ark_root_static/libpandabase:libarktsbase", "$ark_root_static/libpandafile:libarktsfile", ] } group("abckit_codegen_dynamic_source_set_header_deps") { deps = [ "../templates/abckit_intrinsics:abckit_ark_gen_abckit_intrinsics_inl", "../templates/dyn_intrinsics:abckit_isa_gen_dyn_intrinsics_enum_inc", "../templates/dyn_intrinsics:abckit_isa_gen_dyn_intrinsics_flags_inc", "../templates/dyn_intrinsics:abckit_isa_gen_get_dyn_intrinsics_names_inc", "templates_dynamic:abckit_isa_gen_check_width_dynamic_h", "templates_dynamic:abckit_isa_gen_generate_ecma_inl", "templates_dynamic:abckit_isa_gen_ic_info_h", "templates_dynamic:abckit_isa_gen_insn_info_h", "templates_dynamic:abckit_isa_gen_insn_selection_dynamic_h", "templates_dynamic:codegen_visitors_dyn_inc", ] } ohos_source_set("abckit_codegen_dynamic_source_set") { sources = [ "codegen_dynamic.cpp", "ic_slot_allocator.cpp", ] intrinsics_gen_dir = get_label_info( "$abckit_root/src/templates/dyn_intrinsics:abckit_isa_gen_dyn_intrinsics_enum_inl", "target_gen_dir") insn_selection_dyn_dir = get_label_info( "$abckit_root/src/codegen/templates_dynamic:abckit_isa_gen_insn_selection_dynamic_h", "target_gen_dir") ins_create_wrapper_dyn_dir = get_label_info( "$abckit_root/src/wrappers:abckit_isa_gen_ins_create_wrapper_api_inc", "target_gen_dir") intrinsics_compiler_gen_dir = get_label_info( "$ark_root_static/compiler:libarkcompiler_intrinsics_gen_inl_get_intrinsics_names_inl", "target_gen_dir") include_dirs = [ "$ark_root_static/compiler", "$ark_root_static/runtime", "$target_gen_dir", "$intrinsics_gen_dir/../generated", "$insn_selection_dyn_dir/..", "$ins_create_wrapper_dyn_dir", "$intrinsics_compiler_gen_dir/generated", "$ark_root_static", "$ark_root_static/..", ] part_name = "runtime_core" subsystem_name = "arkcompiler" configs = [ "$ark_root_static/:ark_config", "$ark_root_static/runtime:arkruntime_public_config", "$ark_root_static/compiler:arkcompiler_public_config", "$ark_root_static/libpandabase:arkbase_public_config", "$ark_root_static/libpandafile:arkfile_public_config", "$abckit_root:abckit_config", ] deps = [ ":abckit_codegen_dynamic_source_set_header_deps", "$ark_root_static/compiler:libarktscompiler", "templates_dynamic:abckit_isa_gen_check_width_dynamic_cpp", "templates_dynamic:abckit_isa_gen_insn_selection_dynamic_cpp", ] }