1# Copyright (c) 2021-2023 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_root.gni") 15_plugin_dir = get_path_info(".", "abspath") 16assert(string_replace(_plugin_dir, "//", "") != _plugin_dir) 17 18enable_bytecode_optimizer = true 19 20# TODO(nsizov): Fix after PR480 is merged 21srcs_assembler = [ "assembler/extension/ets_meta.cpp" ] 22 23srcs_compiler = [ 24 "compiler/ir_build_intrinsics_ets.cpp", 25 "compiler/codegen_intrinsics_ets.cpp", 26 "compiler/optimizer/ir_builder/ets_inst_builder.cpp", 27 "compiler/optimizer/ets_codegen_extensions.cpp", 28 "compiler/optimizer/ets_intrinsics_peephole.cpp", 29] 30 31srcs_disassembler = [ "disassembler/disasm_ets_plugin.cpp" ] 32 33srcs_isa = [ "isa/isa.yaml" ] 34 35srcs_verification = [ "verification/ets_plugin.cpp" ] 36 37runtime_yamls = [ 38 "runtime/ets_libbase_runtime.yaml", 39 "runtime/interop_js/intrinsics/std_js_jsruntime.yaml", 40 "runtime/ets_compiler_intrinsics.yaml", 41] 42 43option_yaml_path = "ets_plugin_options.yaml" 44 45runtime_option_yaml_path = "runtime_options.yaml" 46 47inst_templates_yaml_path = 48 "compiler/optimizer/ir_builder/ets_inst_templates.yaml" 49 50entrypoints_yaml_path = "runtime/ets_entrypoints.yaml" 51 52irtoc_plugins = [ 53 "irtoc_scripts/interpreter_handlers.irt", 54 "irtoc_scripts/interpreter_main_loop.irt", 55] 56 57arkbytecodeopt_deps = 58 [ "$_plugin_dir:isa_gen_ets_bytecodeopt_ets_codegen_intrinsics_gen_inc" ] 59 60arkruntime_deps = [ 61 "$ark_root/assembler:libarktsassembler_frontend_static", 62 "$ark_root/libpandafile:libarktsfile_frontend_static", 63] 64 65srcs_runtime = [ 66 "runtime/ets_annotation.cpp", 67 "runtime/ets_class_linker.cpp", 68 "runtime/ets_class_linker_extension.cpp", 69 "runtime/ets_coroutine.cpp", 70 "runtime/ets_entrypoints.cpp", 71 "runtime/ets_exceptions.cpp", 72 "runtime/ets_itable_builder.cpp", 73 "runtime/ets_language_context.cpp", 74 "runtime/ets_napi_env.cpp", 75 "runtime/ets_native_library.cpp", 76 "runtime/ets_native_library_provider.cpp", 77 "runtime/ets_runtime_interface.cpp", 78 "runtime/ets_vm.cpp", 79 "runtime/ets_vm_api.cpp", # TODO(nsizov): Take into account PR640, if needed 80 "runtime/ets_vtable_builder.cpp", 81 "runtime/intrinsics/escompat_ArrayBuffer.cpp", 82 "runtime/intrinsics/compiler_intrinsics.cpp", 83 "runtime/intrinsics/escompat_Date.cpp", 84 "runtime/intrinsics/escompat_RegExp.cpp", 85 "runtime/intrinsics/escompat_JSON.cpp", 86 "runtime/intrinsics/std_core.cpp", 87 "runtime/intrinsics/std_core_Char.cpp", 88 "runtime/intrinsics/std_core_Arrays.cpp", 89 "runtime/intrinsics/std_core_Console.cpp", 90 "runtime/intrinsics/std_core_Double.cpp", 91 "runtime/intrinsics/std_core_Float.cpp", 92 "runtime/intrinsics/std_core_Promise.cpp", 93 "runtime/intrinsics/escompat_Atomics.cpp", 94 "runtime/intrinsics/std_core_Runtime.cpp", 95 "runtime/intrinsics/std_core_String.cpp", 96 "runtime/intrinsics/std_core_StringBuilder.cpp", 97 "runtime/intrinsics/std_core_Type.cpp", 98 "runtime/intrinsics/std_core_TypeCreator.cpp", 99 "runtime/intrinsics/std_core_Method.cpp", 100 "runtime/intrinsics/std_core_Value.cpp", 101 "runtime/intrinsics/std_core_gc.cpp", 102 "runtime/intrinsics/std_core_finalization_queue.cpp", 103 "runtime/intrinsics/std_math.cpp", 104 "runtime/intrinsics/helpers/ets_intrinsics_helpers.cpp", 105 "runtime/mem/ets_reference_processor.cpp", 106 "runtime/napi/ets_napi_helpers.cpp", 107 "runtime/napi/ets_napi_invoke_interface.cpp", 108 "runtime/napi/ets_napi_native_interface.cpp", 109 "runtime/napi/ets_mangle.cpp", 110 "runtime/regexp/regexp_executor.cpp", 111 "runtime/types/ets_class.cpp", 112 "runtime/types/ets_field.cpp", 113 "runtime/types/ets_method.cpp", 114 "runtime/types/ets_promise.cpp", 115 "runtime/types/ets_shared_memory.cpp", 116 "runtime/types/ets_object.cpp", 117 "runtime/types/ets_string_builder.cpp", 118 "runtime/types/ets_typeapi_parameter.cpp", 119 "runtime/types/ets_typeapi_method.cpp", 120 "runtime/types/ets_typeapi_field.cpp", 121 "runtime/types/ets_typeapi_create.cpp", 122 "runtime/lambda_utils.cpp", 123 "runtime/interop_js/intrinsics/std_js_jsruntime.cpp", 124] 125 126if (current_cpu == "amd64" || current_cpu == "x64" || current_cpu == "x86_64") { 127 srcs_runtime += [ 128 "runtime/napi/arch/amd64/ets_napi_entry_point_amd64.S", 129 "runtime/napi/arch/amd64/ets_async_entry_point_amd64.S", 130 ] 131} else if (current_cpu == "arm64") { 132 srcs_runtime += [ 133 "runtime/napi/arch/arm64/ets_napi_entry_point_aarch64.S", 134 "runtime/napi/arch/arm64/ets_async_entry_point_aarch64.S", 135 ] 136} else if (current_cpu == "arm") { 137 srcs_runtime += [ 138 "runtime/napi/arch/arm32/ets_napi_entry_point_arm32.S", 139 "runtime/napi/arch/arm32/ets_async_entry_point_arm32.S", 140 ] 141} 142# TODO(nsizov): Support 32-bit ARM 143