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