# Copyright (c) 2021-2022 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/ark_config.gni") config("bytecodeopt_public_config") { include_dirs = [ "$target_gen_dir", "$ark_root/bytecode_optimizer", ] if (enable_bytecode_optimizer && !ark_standalone_build) { defines = [ "ENABLE_BYTECODE_OPT" ] } } libarkbytecodeopt_sources = [ "$ark_root/bytecode_optimizer/codegen.cpp", "$ark_root/bytecode_optimizer/common.cpp", "$ark_root/bytecode_optimizer/optimize_bytecode.cpp", "$ark_root/bytecode_optimizer/reg_acc_alloc.cpp", "$ark_root/bytecode_optimizer/reg_encoder.cpp", ] libarkbytecodeopt_configs = [ sdk_libc_secshared_config, "$ark_root:ark_config", ":bytecodeopt_public_config", "$ark_root/compiler:arkcompiler_public_config", "$ark_root/libpandabase:arkbase_public_config", "$ark_root/libpandafile:arkfile_public_config", "$ark_root/assembler:arkassembler_public_config", "$ark_root/runtime:arkruntime_public_config", ] ohos_shared_library("libarkbytecodeopt") { sources = libarkbytecodeopt_sources configs = libarkbytecodeopt_configs deps = [ ":bytecodeopt_options_gen_h", ":codegen_intrinsics_cpp", ":codegen_visitors_inc", ":isa_gen_arkbytecodeopt_check_width_cpp", ":isa_gen_arkbytecodeopt_check_width_h", ":isa_gen_arkbytecodeopt_insn_selection_cpp", ":isa_gen_arkbytecodeopt_insn_selection_h", ":reg_encoder_visitors_inc", "$ark_root/assembler:libarkassembler", "$ark_root/compiler:libarkcompiler", "$ark_root/libpandabase:libarkbase", "$ark_root/libpandafile:libarkfile", sdk_libc_secshared_dep, ] relative_install_dir = "ark" output_extension = "so" part_name = "runtime_core" subsystem_name = "arkcompiler" } ohos_static_library("libarkbytecodeopt_frontend_static") { sources = libarkbytecodeopt_sources configs = libarkbytecodeopt_configs deps = [ ":bytecodeopt_options_gen_h", ":codegen_intrinsics_cpp", ":codegen_visitors_inc", ":isa_gen_arkbytecodeopt_check_width_cpp", ":isa_gen_arkbytecodeopt_check_width_h", ":isa_gen_arkbytecodeopt_insn_selection_cpp", ":isa_gen_arkbytecodeopt_insn_selection_h", ":reg_encoder_visitors_inc", "$ark_root/assembler:libarkassembler_frontend_static", "$ark_root/compiler:libarkcompiler_frontend_static", "$ark_root/libpandabase:libarkbase_frontend_static", "$ark_root/libpandafile:libarkfile_frontend_static", sdk_libc_secshared_dep, ] } ark_isa_gen("isa_gen_arkbytecodeopt") { template_files = [ "insn_selection.h.erb", "insn_selection.cpp.erb", "check_width.cpp.erb", "check_width.h.erb", ] sources = "templates" destination = "$target_gen_dir/generated" requires = [ "bytecode_optimizer_isapi.rb", "$ark_root/assembler/asm_isapi.rb", ] } ark_gen_file("bytecodeopt_options_gen_h") { template_file = "../templates/options/options.h.erb" data_file = "options.yaml" requires = [ "../templates/common.rb" ] output_file = "$target_gen_dir/generated/bytecodeopt_options_gen.h" } ark_gen_file("reg_encoder_visitors_inc") { extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] template_file = "templates/reg_encoder_visitors.inc.erb" data_file = "$target_gen_dir/../plugin_options.yaml" requires = [ "$ark_root/templates/plugin_options.rb" ] output_file = "$target_gen_dir/generated/reg_encoder_visitors.inc" } ark_gen_file("codegen_visitors_inc") { extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] template_file = "templates/codegen_visitors.inc.erb" data_file = "$target_gen_dir/../plugin_options.yaml" requires = [ "$ark_root/templates/plugin_options.rb" ] output_file = "$target_gen_dir/generated/codegen_visitors.inc" } ark_gen_file("codegen_intrinsics_cpp") { extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] template_file = "templates/codegen_intrinsics.cpp.erb" data_file = "$target_gen_dir/../plugin_options.yaml" requires = [ "$ark_root/templates/plugin_options.rb" ] output_file = "$target_gen_dir/generated/codegen_intrinsics.cpp" }