• 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/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