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") 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/ets_compiler_intrinsics.yaml", 40] 41 42if (ark_ets_interop_js) { 43 srcs_compiler += [ 44 "compiler/optimizer/ir_builder/js_interop/js_interop_inst_builder.cpp", 45 "compiler/optimizer/optimizations/interop_js/interop_intrinsic_optimization.cpp", 46 ] 47 48 arkcompiler_deps = 49 [ "$ark_root/plugins/ets/runtime/interop_js:interop_intrinsic_kinds_h" ] 50 51 runtime_yamls += [ "runtime/interop_js/intrinsics/std_js_jsruntime.yaml" ] 52} 53 54option_yaml_path = "ets_plugin_options.yaml" 55 56runtime_option_yaml_path = "runtime_options.yaml" 57 58inst_templates_yaml_path = 59 "compiler/optimizer/ir_builder/ets_inst_templates.yaml" 60 61entrypoints_yaml_path = "runtime/ets_entrypoints.yaml" 62 63irtoc_scripts = [ 64 "irtoc_scripts/to_string_cache.irt", 65] 66 67irtoc_plugins = [ 68 "irtoc_scripts/interpreter_handlers.irt", 69 "irtoc_scripts/interpreter_main_loop.irt", 70 "irtoc_scripts/string_builder.irt", 71 "irtoc_scripts/string.irt", 72] 73 74arkbytecodeopt_deps = 75 [ "$_plugin_dir:isa_gen_ets_bytecodeopt_ets_codegen_intrinsics_gen_inc" ] 76 77arkruntime_deps = [ 78 "$ark_root/assembler:libarktsassembler_frontend_static", 79 "$ark_root/libpandafile:libarktsfile_frontend_static", 80] 81 82srcs_runtime = [ 83 "runtime/ets_annotation.cpp", 84 "runtime/ets_class_linker.cpp", 85 "runtime/ets_class_linker_extension.cpp", 86 "runtime/ets_coroutine.cpp", 87 "runtime/ets_entrypoints.cpp", 88 "runtime/ets_exceptions.cpp", 89 "runtime/ets_itable_builder.cpp", 90 "runtime/ets_language_context.cpp", 91 "runtime/ets_napi_env.cpp", 92 "runtime/ets_native_library.cpp", 93 "runtime/ets_native_library_provider.cpp", 94 "runtime/ets_runtime_interface.cpp", 95 "runtime/ets_stubs.cpp", 96 "runtime/ets_taskpool.cpp", 97 "runtime/ets_vm.cpp", 98 "runtime/ets_vm_api.cpp", # TODO(nsizov): Take into account PR640, if needed 99 "runtime/ets_vtable_builder.cpp", 100 "runtime/intrinsics/escompat_ArrayBuffer.cpp", 101 "runtime/intrinsics/compiler_intrinsics.cpp", 102 "runtime/intrinsics/escompat_Date.cpp", 103 "runtime/intrinsics/escompat_RegExp.cpp", 104 "runtime/intrinsics/escompat_taskpool.cpp", 105 "runtime/intrinsics/std_containers_BlockingQueue.cpp", 106 "runtime/intrinsics/std_core.cpp", 107 "runtime/intrinsics/std_core_Char.cpp", 108 "runtime/intrinsics/std_core_Arrays.cpp", 109 "runtime/intrinsics/std_core_Console.cpp", 110 "runtime/intrinsics/std_core_Double.cpp", 111 "runtime/intrinsics/std_core_Float.cpp", 112 "runtime/intrinsics/std_core_Promise.cpp", 113 "runtime/intrinsics/std_core_StackTrace.cpp", 114 "runtime/intrinsics/escompat_Atomics.cpp", 115 "runtime/intrinsics/std_core_Runtime.cpp", 116 "runtime/intrinsics/std_core_String.cpp", 117 "runtime/intrinsics/std_core_StringBuilder.cpp", 118 "runtime/intrinsics/std_core_Type.cpp", 119 "runtime/intrinsics/std_core_TypeCreator.cpp", 120 "runtime/intrinsics/std_core_Method.cpp", 121 "runtime/intrinsics/std_core_Value.cpp", 122 "runtime/intrinsics/std_core_gc.cpp", 123 "runtime/intrinsics/std_core_finalization_registry.cpp", 124 "runtime/intrinsics/std_math.cpp", 125 "runtime/intrinsics/helpers/dtoa_helper.cpp", 126 "runtime/intrinsics/helpers/ets_intrinsics_helpers.cpp", 127 "runtime/intrinsics/helpers/ets_to_string_cache.cpp", 128 "runtime/mem/ets_reference_processor.cpp", 129 "runtime/napi/ets_napi_helpers.cpp", 130 "runtime/napi/ets_napi_invoke_interface.cpp", 131 "runtime/napi/ets_napi_native_interface.cpp", 132 "runtime/napi/ets_mangle.cpp", 133 "runtime/regexp/regexp_executor.cpp", 134 "runtime/types/ets_class.cpp", 135 "runtime/types/ets_field.cpp", 136 "runtime/types/ets_method.cpp", 137 "runtime/types/ets_promise.cpp", 138 "runtime/types/ets_promise_ref.cpp", 139 "runtime/types/ets_shared_memory.cpp", 140 "runtime/types/ets_object.cpp", 141 "runtime/types/ets_string_builder.cpp", 142 "runtime/types/ets_typeapi_parameter.cpp", 143 "runtime/types/ets_typeapi_method.cpp", 144 "runtime/types/ets_typeapi_field.cpp", 145 "runtime/types/ets_typeapi_create.cpp", 146 "runtime/types/ets_weak_reference.cpp", 147 "runtime//types/ets_finalizable_weak_ref.cpp", 148 "runtime/ets_utils.cpp", 149 "stdlib/native/init_native_methods.cpp", 150 "stdlib/native/escompat/Process.cpp", 151] 152 153if (ark_ets_interop_js) { 154 srcs_runtime += [ 155 "runtime/interop_js/call/call_ets.cpp", 156 "runtime/interop_js/call/call_js.cpp", 157 "runtime/interop_js/ets_proxy/ets_class_wrapper.cpp", 158 "runtime/interop_js/ets_proxy/ets_field_wrapper.cpp", 159 "runtime/interop_js/ets_proxy/ets_method_set.cpp", 160 "runtime/interop_js/ets_proxy/ets_method_wrapper.cpp", 161 "runtime/interop_js/ets_proxy/ets_proxy.cpp", 162 "runtime/interop_js/ets_proxy/shared_reference.cpp", 163 "runtime/interop_js/ets_proxy/shared_reference_storage.cpp", 164 "runtime/interop_js/interop_common.cpp", 165 "runtime/interop_js/interop_context.cpp", 166 "runtime/interop_js/intrinsics/std_js_jsruntime.cpp", 167 "runtime/interop_js/intrinsics_api_impl.cpp", 168 "runtime/interop_js/js_job_queue.cpp", 169 "runtime/interop_js/js_proxy/js_proxy.cpp", 170 "runtime/interop_js/js_refconvert.cpp", 171 "runtime/interop_js/js_refconvert_builtin.cpp", 172 "runtime/interop_js/js_refconvert_function.cpp", 173 "runtime/interop_js/js_value.cpp", 174 "runtime/interop_js/napi_impl/napi_impl.cpp", 175 "runtime/interop_js/ts2ets_copy.cpp", 176 ] 177 178 if (current_cpu == "amd64" || current_cpu == "x64" || 179 current_cpu == "x86_64") { 180 srcs_runtime += [ "runtime/interop_js/arch/amd64/call_bridge_amd64.S" ] 181 } else if (current_cpu == "arm64") { 182 srcs_runtime += [ "runtime/interop_js/arch/arm64/call_bridge_aarch64.S" ] 183 } else if (current_cpu == "arm") { 184 srcs_runtime += [ "runtime/interop_js/arch/arm32/call_bridge_arm32.S" ] 185 } 186} 187 188if (current_cpu == "amd64" || current_cpu == "x64" || current_cpu == "x86_64") { 189 srcs_runtime += [ 190 "runtime/napi/arch/amd64/ets_napi_entry_point_amd64.S", 191 "runtime/napi/arch/amd64/ets_async_entry_point_amd64.S", 192 ] 193} else if (current_cpu == "arm64") { 194 srcs_runtime += [ 195 "runtime/napi/arch/arm64/ets_napi_entry_point_aarch64.S", 196 "runtime/napi/arch/arm64/ets_async_entry_point_aarch64.S", 197 ] 198} else if (current_cpu == "arm") { 199 srcs_runtime += [ 200 "runtime/napi/arch/arm32/ets_napi_entry_point_arm32.S", 201 "runtime/napi/arch/arm32/ets_async_entry_point_arm32.S", 202 ] 203} 204# TODO(nsizov): Support 32-bit ARM 205