• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2023 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_root.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/interop_js/intrinsics/std_js_jsruntime.yaml",
40  "runtime/ets_compiler_intrinsics.yaml",
41]
42
43option_yaml_path = "ets_plugin_options.yaml"
44
45runtime_option_yaml_path = "runtime_options.yaml"
46
47inst_templates_yaml_path =
48    "compiler/optimizer/ir_builder/ets_inst_templates.yaml"
49
50entrypoints_yaml_path = "runtime/ets_entrypoints.yaml"
51
52irtoc_plugins = [
53  "irtoc_scripts/interpreter_handlers.irt",
54  "irtoc_scripts/interpreter_main_loop.irt",
55]
56
57arkbytecodeopt_deps =
58    [ "$_plugin_dir:isa_gen_ets_bytecodeopt_ets_codegen_intrinsics_gen_inc" ]
59
60arkruntime_deps = [
61  "$ark_root/assembler:libarktsassembler_frontend_static",
62  "$ark_root/libpandafile:libarktsfile_frontend_static",
63]
64
65srcs_runtime = [
66  "runtime/ets_annotation.cpp",
67  "runtime/ets_class_linker.cpp",
68  "runtime/ets_class_linker_extension.cpp",
69  "runtime/ets_coroutine.cpp",
70  "runtime/ets_entrypoints.cpp",
71  "runtime/ets_exceptions.cpp",
72  "runtime/ets_itable_builder.cpp",
73  "runtime/ets_language_context.cpp",
74  "runtime/ets_napi_env.cpp",
75  "runtime/ets_native_library.cpp",
76  "runtime/ets_native_library_provider.cpp",
77  "runtime/ets_runtime_interface.cpp",
78  "runtime/ets_vm.cpp",
79  "runtime/ets_vm_api.cpp",  # TODO(nsizov): Take into account PR640, if needed
80  "runtime/ets_vtable_builder.cpp",
81  "runtime/intrinsics/escompat_ArrayBuffer.cpp",
82  "runtime/intrinsics/compiler_intrinsics.cpp",
83  "runtime/intrinsics/escompat_Date.cpp",
84  "runtime/intrinsics/escompat_RegExp.cpp",
85  "runtime/intrinsics/escompat_JSON.cpp",
86  "runtime/intrinsics/std_core.cpp",
87  "runtime/intrinsics/std_core_Char.cpp",
88  "runtime/intrinsics/std_core_Arrays.cpp",
89  "runtime/intrinsics/std_core_Console.cpp",
90  "runtime/intrinsics/std_core_Double.cpp",
91  "runtime/intrinsics/std_core_Float.cpp",
92  "runtime/intrinsics/std_core_Promise.cpp",
93  "runtime/intrinsics/escompat_Atomics.cpp",
94  "runtime/intrinsics/std_core_Runtime.cpp",
95  "runtime/intrinsics/std_core_String.cpp",
96  "runtime/intrinsics/std_core_StringBuilder.cpp",
97  "runtime/intrinsics/std_core_Type.cpp",
98  "runtime/intrinsics/std_core_TypeCreator.cpp",
99  "runtime/intrinsics/std_core_Method.cpp",
100  "runtime/intrinsics/std_core_Value.cpp",
101  "runtime/intrinsics/std_core_gc.cpp",
102  "runtime/intrinsics/std_core_finalization_queue.cpp",
103  "runtime/intrinsics/std_math.cpp",
104  "runtime/intrinsics/helpers/ets_intrinsics_helpers.cpp",
105  "runtime/mem/ets_reference_processor.cpp",
106  "runtime/napi/ets_napi_helpers.cpp",
107  "runtime/napi/ets_napi_invoke_interface.cpp",
108  "runtime/napi/ets_napi_native_interface.cpp",
109  "runtime/napi/ets_mangle.cpp",
110  "runtime/regexp/regexp_executor.cpp",
111  "runtime/types/ets_class.cpp",
112  "runtime/types/ets_field.cpp",
113  "runtime/types/ets_method.cpp",
114  "runtime/types/ets_promise.cpp",
115  "runtime/types/ets_shared_memory.cpp",
116  "runtime/types/ets_object.cpp",
117  "runtime/types/ets_string_builder.cpp",
118  "runtime/types/ets_typeapi_parameter.cpp",
119  "runtime/types/ets_typeapi_method.cpp",
120  "runtime/types/ets_typeapi_field.cpp",
121  "runtime/types/ets_typeapi_create.cpp",
122  "runtime/lambda_utils.cpp",
123  "runtime/interop_js/intrinsics/std_js_jsruntime.cpp",
124]
125
126if (current_cpu == "amd64" || current_cpu == "x64" || current_cpu == "x86_64") {
127  srcs_runtime += [
128    "runtime/napi/arch/amd64/ets_napi_entry_point_amd64.S",
129    "runtime/napi/arch/amd64/ets_async_entry_point_amd64.S",
130  ]
131} else if (current_cpu == "arm64") {
132  srcs_runtime += [
133    "runtime/napi/arch/arm64/ets_napi_entry_point_aarch64.S",
134    "runtime/napi/arch/arm64/ets_async_entry_point_aarch64.S",
135  ]
136} else if (current_cpu == "arm") {
137  srcs_runtime += [
138    "runtime/napi/arch/arm32/ets_napi_entry_point_arm32.S",
139    "runtime/napi/arch/arm32/ets_async_entry_point_arm32.S",
140  ]
141}
142# TODO(nsizov): Support 32-bit ARM
143