• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2025 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_inlining_expansion.cpp",
28  "compiler/optimizer/ets_intrinsics_peephole.cpp",
29]
30
31srcs_abc2program = [ "abc2program/abc2program_ets_plugin.cpp" ]
32
33srcs_compiler += [ "compiler/codegen_intrinsics_ets.cpp" ]
34
35srcs_disassembler = [ "disassembler/disasm_ets_plugin.cpp" ]
36
37srcs_isa = [ "isa/isa.yaml" ]
38
39srcs_verification = [ "verification/ets_plugin.cpp" ]
40
41runtime_yamls = [
42  "runtime/ets_libbase_runtime.yaml",
43  "runtime/ets_compiler_intrinsics.yaml",
44]
45
46arkcompiler_deps = []
47if (ark_ets_interop_js) {
48  srcs_compiler += [
49    "compiler/optimizer/ir_builder/js_interop/js_interop_inst_builder.cpp",
50    "compiler/optimizer/optimizations/interop_js/interop_intrinsic_optimization.cpp",
51  ]
52
53  arkcompiler_deps +=
54      [ "$ark_root/plugins/ets/runtime/interop_js:interop_intrinsic_kinds_h" ]
55
56  runtime_yamls += [ "runtime/interop_js/intrinsics/std_js_jsruntime.yaml" ]
57}
58
59option_yaml_path = "ets_plugin_options.yaml"
60
61runtime_option_yaml_path = [ "runtime_options.yaml" ]
62
63inst_templates_yaml_path =
64    "compiler/optimizer/ir_builder/ets_inst_templates.yaml"
65
66entrypoints_yaml_path = "runtime/ets_entrypoints.yaml"
67
68irtoc_scripts = [
69  "irtoc_scripts/to_string_cache.irt",
70  "irtoc_scripts/typed_arrays.irt",
71]
72
73irtoc_plugins = [
74  "irtoc_scripts/interpreter_handlers.irt",
75  "irtoc_scripts/interpreter_main_loop.irt",
76  "irtoc_scripts/string_builder.irt",
77  "irtoc_scripts/string.irt",
78  "irtoc_scripts/typed_arrays.irt"
79]
80
81arkbytecodeopt_deps =
82    [ "$_plugin_dir:isa_gen_ets_bytecodeopt_ets_codegen_intrinsics_gen_inc" ]
83
84arkruntime_deps = [
85  "$ark_root/assembler:libarktsassembler_frontend_static",
86  "$ark_root/libpandafile:libarktsfile_frontend_static",
87]
88
89arkcompiler_deps += [ "$_plugin_dir/runtime/interop_js:interop_intrinsic_kinds_h(${default_toolchain})" ]
90
91srcs_runtime = [
92  "runtime/ani/ani_interaction_api.cpp",
93  "runtime/ani/ani_mangle.cpp",
94  "runtime/ani/ani_vm_api.cpp",
95  "runtime/ets_annotation.cpp",
96  "runtime/ets_class_linker.cpp",
97  "runtime/ets_class_linker_context.cpp",
98  "runtime/ets_class_linker_extension.cpp",
99  "runtime/ets_coroutine.cpp",
100  "runtime/ets_entrypoints.cpp",
101  "runtime/ets_exceptions.cpp",
102  "runtime/ets_itable_builder.cpp",
103  "runtime/ets_language_context.cpp",
104  "runtime/ets_napi_env.cpp",
105  "runtime/ets_native_library.cpp",
106  "runtime/ets_native_library_provider.cpp",
107  "runtime/ets_namespace_manager.cpp",
108  "runtime/ets_namespace_manager_impl.cpp",
109  "runtime/ets_object_state_info.cpp",
110  "runtime/ets_object_state_table.cpp",
111  "runtime/ets_platform_types.cpp",
112  "runtime/ets_runtime_interface.cpp",
113  "runtime/ets_stubs.cpp",
114  "runtime/ets_vm.cpp",
115  "runtime/ets_vm_api.cpp",  # TODO(nsizov): Take into account PR640, if needed
116  "runtime/ets_vtable_builder.cpp",
117  "runtime/finalreg/finalization_registry_manager.cpp",
118  "runtime/intrinsics/escompat_Array.cpp",
119  "runtime/integrate/ets_ani_expo.cpp",
120  "runtime/intrinsics/escompat_ArrayBuffer.cpp",
121  "runtime/intrinsics/escompat_TypedArrays.cpp",
122  "runtime/intrinsics/compiler_intrinsics.cpp",
123  "runtime/intrinsics/debugger_api.cpp",
124  "runtime/intrinsics/escompat_Date.cpp",
125  "runtime/intrinsics/escompat_JSON.cpp",
126  "runtime/intrinsics/escompat_RegExp.cpp",
127  "runtime/intrinsics/escompat_taskpool.cpp",
128  "runtime/intrinsics/escompat_Reflect.cpp",
129  "runtime/intrinsics/std_core.cpp",
130  "runtime/intrinsics/std_core_Char.cpp",
131  "runtime/intrinsics/std_core_Arrays.cpp",
132  "runtime/intrinsics/std_core_Job.cpp",
133  "runtime/intrinsics/std_concurrency_Launch.cpp",
134  "runtime/intrinsics/std_core_Class.cpp",
135  "runtime/intrinsics/std_core_AbcFile.cpp",
136  "runtime/intrinsics/std_core_AbcRuntimeLinker.cpp",
137  "runtime/intrinsics/std_core_Console.cpp",
138  "runtime/intrinsics/std_core_Byte.cpp",
139  "runtime/intrinsics/std_core_Short.cpp",
140  "runtime/intrinsics/std_core_Int.cpp",
141  "runtime/intrinsics/std_core_Long.cpp",
142  "runtime/intrinsics/std_core_Double.cpp",
143  "runtime/intrinsics/std_core_ExclusiveLauncher.cpp",
144  "runtime/intrinsics/std_core_Float.cpp",
145  "runtime/intrinsics/std_core_Promise.cpp",
146  "runtime/intrinsics/std_core_StackTrace.cpp",
147  "runtime/intrinsics/escompat_Atomics.cpp",
148  "runtime/intrinsics/gc_task_tracker.cpp",
149  "runtime/intrinsics/std_core_AniHelpers.cpp",
150  "runtime/intrinsics/std_core_Runtime.cpp",
151  "runtime/intrinsics/std_core_SyncPrimitives.cpp",
152  "runtime/intrinsics/std_core_String.cpp",
153  "runtime/intrinsics/std_core_StringBuilder.cpp",
154  "runtime/intrinsics/std_core_Type.cpp",
155  "runtime/intrinsics/std_core_TypeCreator.cpp",
156  "runtime/intrinsics/std_core_Method.cpp",
157  "runtime/intrinsics/std_core_Value.cpp",
158  "runtime/intrinsics/std_core_gc.cpp",
159  "runtime/intrinsics/std_core_finalization_registry.cpp",
160  "runtime/intrinsics/std_math.cpp",
161  "runtime/intrinsics/unsafe_memory.cpp",
162  "runtime/intrinsics/helpers/dtoa_helper.cpp",
163  "runtime/intrinsics/helpers/array_buffer_helper.cpp",
164  "runtime/intrinsics/helpers/ets_intrinsics_helpers.cpp",
165  "runtime/intrinsics/helpers/ets_to_string_cache.cpp",
166  "runtime/intrinsics/helpers/json_helper.cpp",
167  "runtime/mem/ets_reference_processor.cpp",
168  "runtime/napi/ets_napi_helpers.cpp",
169  "runtime/napi/ets_napi_invoke_interface.cpp",
170  "runtime/napi/ets_napi_native_interface.cpp",
171  "runtime/napi/ets_mangle.cpp",
172  "runtime/regexp/regexp.cpp",
173  "runtime/regexp/regexp_16.cpp",
174  "runtime/regexp/regexp_8.cpp",
175  "runtime/regexp/regexp_executor.cpp",
176  "runtime/types/ets_class.cpp",
177  "runtime/types/ets_field.cpp",
178  "runtime/types/ets_method.cpp",
179  "runtime/types/ets_job.cpp",
180  "runtime/types/ets_promise.cpp",
181  "runtime/types/ets_promise_ref.cpp",
182  "runtime/types/ets_object.cpp",
183  "runtime/types/ets_sync_primitives.cpp",
184  "runtime/types/ets_string_builder.cpp",
185  "runtime/types/ets_typeapi_parameter.cpp",
186  "runtime/types/ets_typeapi_method.cpp",
187  "runtime/types/ets_typeapi_field.cpp",
188  "runtime/types/ets_typeapi_create.cpp",
189  "runtime/types/ets_waiters_list.cpp",
190  "runtime/types/ets_weak_reference.cpp",
191  "runtime//types/ets_finalizable_weak_ref.cpp",
192  "runtime/ets_utils.cpp",
193  "stdlib/native/init_native_methods.cpp",
194  "stdlib/native/escompat/Process.cpp",
195  "stdlib/native/core/Intl.cpp",
196  "stdlib/native/core/IntlCommon.cpp",
197  "stdlib/native/core/IntlState.cpp",
198  "stdlib/native/core/IntlNumberFormat.cpp",
199  "stdlib/native/core/IntlNumberFormatters.cpp",
200  "stdlib/native/core/IntlFormattersCache.cpp",
201  "stdlib/native/core/IntlLocale.cpp",
202  "stdlib/native/core/IntlLocaleMatch.cpp",
203  "stdlib/native/core/IntlCollator.cpp",
204  "stdlib/native/core/IntlPluralRules.cpp",
205  "stdlib/native/core/IntlSegmenter.cpp",
206  "stdlib/native/core/IntlDisplayNames.cpp",
207  "stdlib/native/core/stdlib_ani_helpers.cpp",
208  "stdlib/native/etsstdlib.cpp",
209  "stdlib/native/core/IntlDateTimeFormat.cpp",
210  "stdlib/native/core/IntlListFormat.cpp",
211  "stdlib/native/core/IntlRelativeTimeFormat.cpp",
212  "stdlib/native/core/IntlLanguageTag.cpp",
213]
214
215if (ark_hybrid) {
216  srcs_runtime += [
217    "runtime/hybrid/mem/external-gc.cpp",
218    "runtime/hybrid/mem/static_object_operator.cpp",
219  ]
220}
221
222if (is_ohos) {
223  srcs_runtime += [ "runtime/platform/ohos/logger.cpp" ]
224}
225
226configs_runtime = []
227
228if (ark_ets_interop_js) {
229  runtime_option_yaml_path += [ "runtime/interop_js/runtime_options.yaml" ]
230  srcs_runtime += [
231    "runtime/interop_js/call/call_ets.cpp",
232    "runtime/interop_js/call/call_js.cpp",
233    "runtime/interop_js/ets_proxy/ets_class_wrapper.cpp",
234    "runtime/interop_js/ets_proxy/ets_field_wrapper.cpp",
235    "runtime/interop_js/ets_proxy/ets_method_set.cpp",
236    "runtime/interop_js/ets_proxy/ets_method_wrapper.cpp",
237    "runtime/interop_js/ets_proxy/ets_proxy.cpp",
238    "runtime/interop_js/ets_proxy/shared_reference.cpp",
239    "runtime/interop_js/ets_proxy/shared_reference_storage.cpp",
240    "runtime/interop_js/ets_proxy/shared_reference_storage_verifier.cpp",
241    "runtime/interop_js/event_loop_module.cpp",
242    "runtime/interop_js/timer_helper/timer.cpp",
243    "runtime/interop_js/timer_helper/interop_timer_helper.cpp",
244    "runtime/interop_js/interop_common.cpp",
245    "runtime/interop_js/interop_context.cpp",
246    "runtime/interop_js/intrinsics/std_js_jsruntime.cpp",
247    "runtime/interop_js/intrinsics_api_impl.cpp",
248    "runtime/interop_js/js_job_queue.cpp",
249    "runtime/interop_js/js_proxy/js_proxy.cpp",
250    "runtime/interop_js/js_refconvert.cpp",
251    "runtime/interop_js/js_refconvert_builtin.cpp",
252    "runtime/interop_js/js_refconvert_function.cpp",
253    "runtime/interop_js/js_refconvert_record.cpp",
254    "runtime/interop_js/js_value.cpp",
255    "runtime/interop_js/napi_impl/napi_impl.cpp",
256    "runtime/interop_js/native_api/arkts_esvalue.cpp",
257    "runtime/interop_js/stack_info.cpp",
258    "runtime/interop_js/sts_vm_interface_impl.cpp",
259    "runtime/interop_js/timer_module.cpp",
260    "runtime/interop_js/xgc/xgc.cpp",
261    "runtime/interop_js/xgc/xgc_vm_adaptor.cpp",
262  ]
263
264  if (ark_ets_hybrid) {
265    srcs_runtime += [ "runtime/interop_js/handshake.cpp" ]
266  }
267
268  if (current_cpu == "amd64" || current_cpu == "x64" ||
269      current_cpu == "x86_64") {
270    srcs_runtime += [ "runtime/interop_js/arch/amd64/call_bridge_amd64.S" ]
271  } else if (current_cpu == "arm64") {
272    srcs_runtime += [ "runtime/interop_js/arch/arm64/call_bridge_aarch64.S" ]
273  } else if (current_cpu == "arm") {
274    srcs_runtime += [ "runtime/interop_js/arch/arm32/call_bridge_arm32.S" ]
275  }
276
277  configs_runtime += [ "runtime/interop_js:interop_js_public_config" ]
278
279  arkruntime_deps += [ "$arkplatform_root:libarkplatform" ]
280
281  if (ark_standalone_build && ark_ets_hybrid) {
282    arkruntime_deps += [
283      "$ark_third_party_root/libuv:uv",
284      "$arkui_root/napi:ace_napi",
285    ]
286  }
287}
288
289if (current_cpu == "amd64" || current_cpu == "x64" || current_cpu == "x86_64") {
290  srcs_runtime += [
291    "runtime/napi/arch/amd64/ets_napi_entry_point_amd64.S",
292    "runtime/napi/arch/amd64/ets_async_entry_point_amd64.S",
293  ]
294} else if (current_cpu == "arm64") {
295  srcs_runtime += [
296    "runtime/napi/arch/arm64/ets_napi_entry_point_aarch64.S",
297    "runtime/napi/arch/arm64/ets_async_entry_point_aarch64.S",
298  ]
299} else if (current_cpu == "arm") {
300  srcs_runtime += [
301    "runtime/napi/arch/arm32/ets_napi_entry_point_arm32.S",
302    "runtime/napi/arch/arm32/ets_async_entry_point_arm32.S",
303  ]
304}
305# TODO(nsizov): Support 32-bit ARM
306