• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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