• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2024-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/ets_frontend/es2panda/es2abc_config.gni")
15import("//arkcompiler/ets_frontend/ets2panda/ets2abc_config.gni")
16import("//arkcompiler/runtime_core/ark_config.gni")
17import("//arkcompiler/runtime_core/libabckit/abckit_config.gni")
18
19template("create_merge_file") {
20  assert(defined(invoker.input_file), "input_file is required!")
21  assert(defined(invoker.output_file), "output_file is required!")
22  assert(defined(invoker.source_lang), "source_lang is required!")
23
24  extra_dependencies = []
25  if (defined(invoker.extra_dependencies)) {
26    extra_dependencies += invoker.extra_dependencies
27  }
28
29  action("$target_name") {
30    script = "./../scripts/create_merge_file.sh"
31
32    args = [
33      rebase_path(target_gen_dir),
34      rebase_path(invoker.input_file),
35      rebase_path(invoker.output_file),
36      invoker.source_lang,
37    ]
38
39    deps = extra_dependencies
40
41    outputs = [ invoker.output_file ]
42  }
43}
44
45abckit_gtests_sources = [
46  "clean_scenarios/c_api/dynamic/add_log/add_log_dynamic_test.cpp",
47  "clean_scenarios/c_api/dynamic/add_try_catch/add_try_catch_test.cpp",
48  "clean_scenarios/c_api/dynamic/api_scanner/api_scanner_test.cpp",
49  "clean_scenarios/c_api/dynamic/branch_eliminator/branch_eliminator_test.cpp",
50  "clean_scenarios/c_api/dynamic/parameter_check/parameter_check_test.cpp",
51  "clean_scenarios/c_api/dynamic/replace_call_site/replace_call_site_test.cpp",
52  "clean_scenarios/c_api/dynamic/router_table/router_table_test.cpp",
53  "clean_scenarios/c_api/dynamic/scan_subclasses/scan_subclasses_test.cpp",
54  "clean_scenarios/c_api/static/add_log/add_log_static_test.cpp",
55  "clean_scenarios/cpp_api/dynamic/add_log/add_log_dynamic_test.cpp",
56  "clean_scenarios/cpp_api/dynamic/add_try_catch/add_try_catch.cpp",
57  "clean_scenarios/cpp_api/dynamic/api_scanner/api_scanner_test.cpp",
58  "clean_scenarios/cpp_api/dynamic/branch_eliminator/branch_eliminator_test.cpp",
59  "clean_scenarios/cpp_api/dynamic/parameter_check/parameter_check_test.cpp",
60  "clean_scenarios/cpp_api/dynamic/replace_call_site/replace_call_site_test.cpp",
61  "clean_scenarios/cpp_api/dynamic/router_table/router_table_test.cpp",
62  "clean_scenarios/cpp_api/dynamic/scan_subclasses/scan_subclasses_test.cpp",
63  "cpp/tests/cpp_test.cpp",
64  "helpers/helpers.cpp",
65  "helpers/helpers_mode.cpp",
66  "helpers/helpers_nullptr.cpp",
67  "helpers/helpers_wrong_ctx.cpp",
68  "helpers/helpers_wrong_imm.cpp",
69  "helpers/visit_helper/visit_helper.cpp",
70  "internal/ICSlotAllocator/ICSlotAllocator.cpp",
71  "internal/implementation_api/abc_stuff.cpp",
72  "internal/implementation_api/graph_stuff.cpp",
73  "internal/mem_manager/several_abc.cpp",
74  "null_args_tests/null_args_tests_ApiImpl_0.cpp",
75  "null_args_tests/null_args_tests_ArktsInspectApiImpl_0.cpp",
76  "null_args_tests/null_args_tests_ArktsModifyApiImpl_0.cpp",
77  "null_args_tests/null_args_tests_GraphApiImpl_0.cpp",
78  "null_args_tests/null_args_tests_InspectApiImpl_0.cpp",
79  "null_args_tests/null_args_tests_IsaApiDynamicImpl_0.cpp",
80  "null_args_tests/null_args_tests_IsaApiDynamicImpl_1.cpp",
81  "null_args_tests/null_args_tests_IsaApiStaticImpl_0.cpp",
82  "null_args_tests/null_args_tests_JsInspectApiImpl_0.cpp",
83  "null_args_tests/null_args_tests_JsModifyApiImpl_0.cpp",
84  "null_args_tests/null_args_tests_ModifyApiImpl_0.cpp",
85  "regression/issue_IB1YEI/c_api/issue_IB1YEI.cpp",
86  "regression/issue_IB1YEI/cpp_api/issue_IB1YEI.cpp",
87  "regression/issue_IB2T4M/c_api/issue_IB2T4M.cpp",
88  "scenarios/add_log/add_log_dynamic_test.cpp",
89  "scenarios/add_log/add_log_static_test.cpp",
90  "scenarios/add_try_catch/dynamic/add_try_catch_test.cpp",
91  "scenarios/api_scanner/dynamic/api_scanner.cpp",
92  "scenarios/api_scanner/dynamic/api_scanner_test.cpp",
93  "scenarios/api_scanner/static/api_scanner_static.cpp",
94  "scenarios/branch_eliminator/dynamic/branch_eliminator.cpp",
95  "scenarios/branch_eliminator/dynamic/branch_eliminator_test.cpp",
96  "scenarios/parameter_check/dynamic/api_modifier.cpp",
97  "scenarios/parameter_check/dynamic/parameter_check_test.cpp",
98  "scenarios/parameter_check/parameter_check_static.cpp",
99  "scenarios/replace_call_site/dynamic/replace_call_site_test.cpp",
100  "scenarios/replace_callsite/replace_callsite_static.cpp",
101  "scenarios/router_table/dynamic/router_table_test.cpp",
102  "scenarios/scan_subclasses/dynamic/scan_subclasses_test.cpp",
103  "scenarios/scan_subclasses/dynamic/subclasses_scanner.cpp",
104  "scenarios/static_branch_elimination/static_branch_elimination.cpp",
105  "ut/extensions/arkts/inspect_api/api_casts/api_casts.cpp",
106  "ut/extensions/arkts/inspect_api/modules/modules_dynamic_test.cpp",
107  "ut/extensions/arkts/inspect_api/namespace/namespace_arkts.cpp",
108  "ut/extensions/arkts/modify_api/annotations/annotations_test.cpp",
109  "ut/extensions/arkts/modify_api/modules/modules_dynamic_modify_test.cpp",
110  "ut/extensions/js/inspect_api/api_casts/api_casts.cpp",
111  "ut/extensions/js/inspect_api/enumerators/enumerators_test.cpp",
112  "ut/extensions/js/inspect_api/modules/modules_dynamic_test.cpp",
113  "ut/extensions/js/modify_api/arrays/array_modify_test.cpp",
114  "ut/extensions/js/modify_api/bigint/load_bigint_test.cpp",
115  "ut/extensions/js/modify_api/copy/copy_modify_test.cpp",
116  "ut/extensions/js/modify_api/modules/modules_dynamic_modify_test.cpp",
117  "ut/extensions/js/modify_api/obj/obj_modify.cpp",
118  "ut/extensions/js/modify_api/patch/patch_modify.cpp",
119  "ut/extensions/js/modify_api/super_this/super_this_modify.cpp",
120  "ut/ir_core/basic_blocks/basic_blocks_dynamic.cpp",
121  "ut/ir_core/basic_blocks/basic_blocks_static.cpp",
122  "ut/ir_core/catchphi/catchphi_dynamic.cpp",
123  "ut/ir_core/catchphi/catchphi_static.cpp",
124  "ut/ir_core/create_constant/create_constant_dynamic.cpp",
125  "ut/ir_core/create_constant/create_constant_static.cpp",
126  "ut/ir_core/get_constant_value/get_constant_value.cpp",
127  "ut/ir_core/graph/graph.cpp",
128  "ut/ir_core/graph_basic_block/graph_basic_block_dynamic.cpp",
129  "ut/ir_core/graph_basic_block/graph_basic_block_static.cpp",
130  "ut/ir_core/graph_verifier/graph_verifier.cpp",
131  "ut/ir_core/insert_try_catch/insert_try_catch_dynamic.cpp",
132  "ut/ir_core/insert_try_catch/insert_try_catch_static.cpp",
133  "ut/ir_core/inst_inputs/inst_inputs_test.cpp",
134  "ut/ir_core/inst_manipulation/inst_manipulation.cpp",
135  "ut/ir_core/loops/loops.cpp",
136  "ut/ir_core/method/method_dynamic.cpp",
137  "ut/ir_core/method/method_static.cpp",
138  "ut/ir_core/phi/phi.cpp",
139  "ut/ir_core/string/string_dynamic.cpp",
140  "ut/ir_core/string/string_static.cpp",
141  "ut/ir_core/types_api/get_type_dynamic.cpp",
142  "ut/ir_core/types_api/get_type_static.cpp",
143  "ut/isa/isa_dynamic/apply/apply_dynamic.cpp",
144  "ut/isa/isa_dynamic/arithmetic/bininst_dynamic.cpp",
145  "ut/isa/isa_dynamic/arithmetic/bininst_logical_dynamic.cpp",
146  "ut/isa/isa_dynamic/arithmetic/bininst_shifts_dynamic.cpp",
147  "ut/isa/isa_dynamic/arithmetic/helpers_arithmetic.cpp",
148  "ut/isa/isa_dynamic/arithmetic/unaryinst_dynamic.cpp",
149  "ut/isa/isa_dynamic/arrays/create_array_dynamic.cpp",
150  "ut/isa/isa_dynamic/async/async_dynamic.cpp",
151  "ut/isa/isa_dynamic/call_runtime/call_runtime_dynamic.cpp",
152  "ut/isa/isa_dynamic/create/createdebugger.cpp",
153  "ut/isa/isa_dynamic/create/createobjectwithbuffer_dynamic.cpp",
154  "ut/isa/isa_dynamic/create/createobjectwithexcludedkeys_dynamic.cpp",
155  "ut/isa/isa_dynamic/create_if/create_if_dynamic.cpp",
156  "ut/isa/isa_dynamic/define/defineclasswithbuffer_dynamic.cpp",
157  "ut/isa/isa_dynamic/define/definefieldbyname_dynamic.cpp",
158  "ut/isa/isa_dynamic/define/definefieldruntime_dynamic.cpp",
159  "ut/isa/isa_dynamic/define/definefunc_dynamic.cpp",
160  "ut/isa/isa_dynamic/define/definegettersetterbyvalue_dynamic.cpp",
161  "ut/isa/isa_dynamic/define/definemethod_dynamic.cpp",
162  "ut/isa/isa_dynamic/dyn_call/call_dynamic.cpp",
163  "ut/isa/isa_dynamic/dyn_call_this/call_this_dynamic.cpp",
164  "ut/isa/isa_dynamic/generators/creategeneratorobj_dynamic.cpp",
165  "ut/isa/isa_dynamic/get_insts/getnextpropname_dynamic.cpp",
166  "ut/isa/isa_dynamic/get_insts/getresumemode_dynamic.cpp",
167  "ut/isa/isa_dynamic/get_insts/gettemplateobject_dynamic.cpp",
168  "ut/isa/isa_dynamic/get_insts/getunmappedargs_dynamic.cpp",
169  "ut/isa/isa_dynamic/immsize/immsize_dynamic.cpp",
170  "ut/isa/isa_dynamic/import/dynamicimport_dynamic.cpp",
171  "ut/isa/isa_dynamic/instanceof/instanceof_dynamic.cpp",
172  "ut/isa/isa_dynamic/isin/isin_dynamic.cpp",
173  "ut/isa/isa_dynamic/iterators/createiterresultobj_dynamic.cpp",
174  "ut/isa/isa_dynamic/iterators/getiterator_dynamic.cpp",
175  "ut/isa/isa_dynamic/iterators/getpropiterator_dynamic.cpp",
176  "ut/isa/isa_dynamic/lexenv/lexenv_dynamic.cpp",
177  "ut/isa/isa_dynamic/load_string/load_string_dynamic.cpp",
178  "ut/isa/isa_dynamic/loadstore/ld_dynamic.cpp",
179  "ut/isa/isa_dynamic/loadstore/loadstore.cpp",
180  "ut/isa/isa_dynamic/modules/isa_dynamic_modules.cpp",
181  "ut/isa/isa_dynamic/objects/objects_dynamic.cpp",
182  "ut/isa/isa_dynamic/return/return_dynamic.cpp",
183  "ut/isa/isa_dynamic/sendable/sendable_dynamic.cpp",
184  "ut/isa/isa_dynamic/supercall/supercall_dynamic.cpp",
185  "ut/isa/isa_dynamic/testin/testin_dynamic.cpp",
186  "ut/isa/isa_dynamic/throw/throw_dynamic.cpp",
187  "ut/isa/isa_static/arithmetic/bininst_imm_static.cpp",
188  "ut/isa/isa_static/arithmetic/bininst_logical_imm_static.cpp",
189  "ut/isa/isa_static/arithmetic/bininst_logical_static.cpp",
190  "ut/isa/isa_static/arithmetic/bininst_shifts_imm_static.cpp",
191  "ut/isa/isa_static/arithmetic/bininst_shifts_static.cpp",
192  "ut/isa/isa_static/arithmetic/bininst_static.cpp",
193  "ut/isa/isa_static/arithmetic/unaryinst_static.cpp",
194  "ut/isa/isa_static/arrays/arrays_static.cpp",
195  "ut/isa/isa_static/call/call_static_static.cpp",
196  "ut/isa/isa_static/call/call_virtual_static.cpp",
197  "ut/isa/isa_static/cast/cast_static.cpp",
198  "ut/isa/isa_static/classes/classes_api.cpp",
199  "ut/isa/isa_static/cmp/create_cmp_static.cpp",
200  "ut/isa/isa_static/create_if/create_if_static.cpp",
201  "ut/isa/isa_static/create_nullptr/create_nullptr_static.cpp",
202  "ut/isa/isa_static/equals/equals_static.cpp",
203  "ut/isa/isa_static/get_opcode/get_opcode_static.cpp",
204  "ut/isa/isa_static/is_instance/is_instance.cpp",
205  "ut/isa/isa_static/is_nullvalue/is_nullvalue.cpp",
206  "ut/isa/isa_static/load_nullvalue/load_nullvalue_static.cpp",
207  "ut/isa/isa_static/load_string/load_string_static.cpp",
208  "ut/isa/isa_static/objects/objects.cpp",
209  "ut/isa/isa_static/return/return_static.cpp",
210  "ut/isa/isa_static/throw/throw_static.cpp",
211  "ut/metadata_core/inspect_api/annotations/annotations_test.cpp",
212  "ut/metadata_core/inspect_api/classes/classes_test.cpp",
213  "ut/metadata_core/inspect_api/enumerators/enumerators_test.cpp",
214  "ut/metadata_core/inspect_api/files/files_test.cpp",
215  "ut/metadata_core/inspect_api/literals/literals_test.cpp",
216  "ut/metadata_core/inspect_api/methods/methods_test.cpp",
217  "ut/metadata_core/inspect_api/modules/modules_dynamic_test.cpp",
218  "ut/metadata_core/inspect_api/namespaces/namespaces_test.cpp",
219  "ut/metadata_core/inspect_api/strings/strings_test.cpp",
220  "ut/metadata_core/inspect_api/types/types_test.cpp",
221  "ut/metadata_core/inspect_api/values/values_test.cpp",
222  "ut/metadata_core/modify_api/literals/literals_test.cpp",
223  "ut/metadata_core/modify_api/strings/strings_test.cpp",
224  "ut/metadata_core/modify_api/types/types_test.cpp",
225  "ut/metadata_core/modify_api/values/values_test.cpp",
226  # "wrong_ctx_tests/wrong_ctx_tests_ArktsInspectApiImpl_0.cpp",
227  # "wrong_ctx_tests/wrong_ctx_tests_ArktsModifyApiImpl_0.cpp",
228  "wrong_ctx_tests/wrong_ctx_tests_GraphApiImpl_0.cpp",
229  "wrong_ctx_tests/wrong_ctx_tests_IsaApiDynamicImpl_0.cpp",
230  "wrong_ctx_tests/wrong_ctx_tests_IsaApiDynamicImpl_1.cpp",
231  "wrong_ctx_tests/wrong_ctx_tests_IsaApiStaticImpl_0.cpp",
232  "wrong_ctx_tests/wrong_ctx_tests_ModifyApiImpl_0.cpp",
233  "wrong_imm_tests/wrong_imm_tests_IsaApiDynamicImpl_0.cpp",
234  "wrong_mode_tests/wrong_mode_tests_IsaApiDynamicImpl_0.cpp",
235  "wrong_mode_tests/wrong_mode_tests_IsaApiDynamicImpl_1.cpp",
236  "wrong_mode_tests/wrong_mode_tests_IsaApiStaticImpl_0.cpp",
237]
238
239clean_scenario_js_from_ets_files = [
240  "clean_scenarios/c_api/dynamic/add_log/add_log_dynamic",
241  "clean_scenarios/c_api/dynamic/scan_subclasses/scan_subclasses",
242  "clean_scenarios/c_api/dynamic/parameter_check/parameter_check",
243  "clean_scenarios/c_api/dynamic/api_scanner/api_scanner",
244  "clean_scenarios/c_api/dynamic/branch_eliminator/branch_eliminator",
245  "clean_scenarios/c_api/dynamic/add_try_catch/add_try_catch",
246  "clean_scenarios/cpp_api/dynamic/add_log/add_log_dynamic",
247  "clean_scenarios/cpp_api/dynamic/branch_eliminator/branch_eliminator",
248  "clean_scenarios/cpp_api/dynamic/api_scanner/api_scanner",
249  "clean_scenarios/cpp_api/dynamic/add_try_catch/add_try_catch",
250  "clean_scenarios/cpp_api/dynamic/parameter_check/parameter_check",
251  "clean_scenarios/cpp_api/dynamic/scan_subclasses/scan_subclasses",
252]
253
254clean_scenario_ts_files = [
255  "clean_scenarios/c_api/dynamic/replace_call_site/replace_call_site",
256  "clean_scenarios/c_api/dynamic/router_table/router_table",
257
258  "clean_scenarios/cpp_api/dynamic/replace_call_site/replace_call_site",
259  "clean_scenarios/cpp_api/dynamic/router_table/router_table",
260]
261
262clean_scenario_ets_files =
263    [ "clean_scenarios/c_api/static/add_log/add_log_static" ]
264
265test_js_path = "//arkcompiler/runtime_core/libabckit/tests/"
266
267test_js_files = [
268  "ut/metadata_core/inspect_api/modules/targets/JS_target",
269  "ut/extensions/js/inspect_api/api_casts/JSapi_casts",
270  "ut/extensions/js/inspect_api/modules/JSmodules_dynamic",
271  "ut/extensions/js/inspect_api/modules/JSmodules_dynamic_external",
272  "ut/extensions/js/inspect_api/enumerators/JSenumerators0_dynamic",
273  "ut/extensions/js/modify_api/modules/JSmodules_dynamic_modify",
274]
275
276test_js_from_ets_files = [
277  "cpp/tests/cpp_test_dynamic_js",
278
279  "ut/metadata_core/inspect_api/classes/classes_dynamic",
280  "ut/metadata_core/inspect_api/classes/classes_empty_dynamic",
281  "ut/metadata_core/inspect_api/literals/literals_dynamic",
282  "ut/metadata_core/inspect_api/values/values_dynamic",
283  "ut/metadata_core/inspect_api/modules/modules_dynamic",
284  "ut/metadata_core/inspect_api/modules/modules_dynamic_external",
285  "ut/metadata_core/inspect_api/types/types_dynamic",
286  "ut/metadata_core/modify_api/strings/strings_dynamic",
287  "ut/metadata_core/modify_api/literals/literals_dynamic",
288  "ut/metadata_core/modify_api/values/values_dynamic",
289  "ut/metadata_core/modify_api/types/types_dynamic",
290  "ut/metadata_core/inspect_api/files/file_dynamic",
291  "ut/extensions/arkts/modify_api/modules/modules_dynamic_modify",
292  "ut/extensions/arkts/inspect_api/modules/modules_dynamic",
293  "ut/extensions/js/modify_api/super_this/store_super",
294  "ut/extensions/js/modify_api/super_this/load_super",
295  "ut/extensions/js/modify_api/super_this/store_this",
296  "ut/extensions/js/modify_api/super_this/load_this",
297  "ut/extensions/js/modify_api/patch/patch_test",
298  "ut/extensions/js/modify_api/obj/newobj",
299  "ut/extensions/js/modify_api/obj/delobjprop",
300  "ut/extensions/js/modify_api/obj/privateprop",
301  "ut/extensions/js/modify_api/obj/callruntime_private",
302  "ut/extensions/js/modify_api/obj/proto",
303  "ut/extensions/js/modify_api/bigint/load_bigint",
304  "ut/isa/isa_dynamic/load_string/load_string_dynamic",
305  "ut/extensions/js/modify_api/arrays/starrayspread",
306  "ut/extensions/js/modify_api/copy/copyrestargs_test",
307  "ut/extensions/js/modify_api/copy/copy_properties_test",
308  "ut/isa/isa_dynamic/modules/isa_dynamic_modules",
309  "ut/isa/isa_dynamic/objects/objects_dynamic",
310  "ut/isa/isa_dynamic/return/return_dynamic",
311  "ut/isa/isa_dynamic/arithmetic/bininst_dynamic",
312  "ut/isa/isa_dynamic/arithmetic/bininst_logical_dynamic",
313  "ut/isa/isa_dynamic/arithmetic/bininst_shifts_dynamic",
314  "ut/isa/isa_dynamic/arithmetic/unaryinst_dynamic",
315  "ut/isa/isa_dynamic/get_insts/getnextpropname_dynamic",
316  "ut/isa/isa_dynamic/get_insts/getresumemode_dynamic",
317  "ut/isa/isa_dynamic/get_insts/gettemplateobject_dynamic",
318  "ut/isa/isa_dynamic/get_insts/getunmappedargs_dynamic",
319  "ut/isa/isa_dynamic/import/dynamicimport_dynamic",
320  "ut/isa/isa_dynamic/loadstore/emptyobj",
321  "ut/isa/isa_dynamic/loadstore/ld_dynamic",
322  "ut/isa/isa_dynamic/loadstore/stownbyindex",
323  "ut/isa/isa_dynamic/loadstore/stobjbyindex",
324  "ut/isa/isa_dynamic/loadstore/ldobjbyvalue",
325  "ut/isa/isa_dynamic/loadstore/ldobjbyname",
326  "ut/isa/isa_dynamic/loadstore/ldobjbyindex",
327  "ut/isa/isa_dynamic/loadstore/ldglobalvar",
328  "ut/isa/isa_dynamic/loadstore/stglobalvar",
329  "ut/isa/isa_dynamic/loadstore/tryldglobalbyname",
330  "ut/isa/isa_dynamic/loadstore/trystglobalbyname",
331  "ut/isa/isa_dynamic/create_if/create_if_dynamic",
332  "ut/isa/isa_dynamic/create/createobjectwithbuffer_dynamic",
333  "ut/isa/isa_dynamic/create/createdebugger_dynamic",
334  "ut/isa/isa_dynamic/create/createobjectwithexcludedkeys_dynamic",
335  "ut/isa/isa_dynamic/define/defineclasswithbuffer_dynamic",
336  "ut/isa/isa_dynamic/define/definefieldbyname_dynamic",
337  "ut/isa/isa_dynamic/define/definefieldruntime_dynamic",
338  "ut/isa/isa_dynamic/define/definefunc_dynamic",
339  "ut/isa/isa_dynamic/define/definemethod_dynamic",
340  "ut/isa/isa_dynamic/define/definegettersetterbyvalue_dynamic",
341  "ut/isa/isa_dynamic/dyn_call/call_dynamic",
342  "ut/isa/isa_dynamic/dyn_call_this/call_this_dynamic",
343  "ut/isa/isa_dynamic/call_runtime/topropertykey_dynamic",
344  "ut/isa/isa_dynamic/call_runtime/callinit_dynamic",
345  "ut/isa/isa_dynamic/throw/throw_dynamic",
346  "ut/isa/isa_dynamic/instanceof/instanceof_dynamic",
347  "ut/isa/isa_dynamic/isin/isin_dynamic",
348  "ut/isa/isa_dynamic/sendable/ldsendableclass_dynamic",
349  "ut/isa/isa_dynamic/sendable/makesendableclass_dynamic",
350  "ut/isa/isa_dynamic/supercall/supercall_dynamic",
351  "ut/isa/isa_dynamic/supercall/supercallarrow_dynamic",
352  "ut/isa/isa_dynamic/supercall/supercallspread_dynamic",
353  "ut/isa/isa_dynamic/testin/testin_dynamic",
354  "ut/isa/isa_dynamic/generators/creategeneratorobj_dynamic",
355  "ut/isa/isa_dynamic/iterators/createiterresultobj_dynamic",
356  "ut/isa/isa_dynamic/iterators/getiterator_dynamic",
357  "ut/isa/isa_dynamic/iterators/getpropiterator_dynamic",
358  "ut/isa/isa_dynamic/lexenv/lexenv_dynamic",
359  "ut/isa/isa_dynamic/lexenv/poplexenv_dynamic",
360  "ut/isa/isa_dynamic/arrays/create_array_dynamic",
361  "ut/isa/isa_dynamic/async/enter_resolve_reject_dynamic",
362  "ut/isa/isa_dynamic/async/awaituncaught_dynamic",
363  "ut/isa/isa_dynamic/async/asyncgenerator_dynamic",
364  "ut/isa/isa_dynamic/async/asyncgeneratorobj_dynamic",
365  "ut/isa/isa_dynamic/async/asyncuseconcurrent_dynamic",
366  "ut/isa/isa_dynamic/async/asynciterator_dynamic",
367  "ut/isa/isa_dynamic/apply/apply_dynamic",
368  "ut/isa/isa_dynamic/apply/newobjapply_dynamic",
369  "ut/isa/isa_dynamic/immsize/immsize_dynamic",
370
371  "ut/ir_core/graph/graph_dynamic",
372  "ut/ir_core/inst_manipulation/inst_manipulation_dynamic",
373  "ut/ir_core/graph_basic_block/graph_basic_block_dynamic",
374  "ut/ir_core/graph_basic_block/graph_basic_block_simple",
375  "ut/ir_core/basic_blocks/basic_blocks_dynamic",
376  "ut/ir_core/basic_blocks/js_src/create_empty_dynamic",
377  "ut/ir_core/basic_blocks/js_src/visit_succ_dynamic",
378  "ut/ir_core/basic_blocks/js_src/try_catch_blocks_dynamic",
379  "ut/ir_core/get_constant_value/get_constant_value_dynamic",
380  "ut/ir_core/create_constant/create_constant_dynamic",
381  "ut/ir_core/inst_inputs/inst_inputs_dynamic",
382  "ut/ir_core/string/string_dynamic",
383  "ut/ir_core/method/method_dynamic",
384  "ut/ir_core/loops/loop_dynamic",
385  "ut/ir_core/types_api/get_type_dynamic",
386  "ut/ir_core/insert_try_catch/insert_try_catch_dynamic",
387  "ut/ir_core/insert_try_catch/insert_try_catch_dynamic_wrapper",
388
389  "scenarios/add_try_catch/dynamic/add_try_catch",
390  "scenarios/add_log/add_log_dynamic",
391  "scenarios/api_scanner/dynamic/api_scanner",
392  "scenarios/branch_eliminator/dynamic/branch_eliminator",
393  "scenarios/scan_subclasses/dynamic/scan_subclasses",
394  "scenarios/parameter_check/dynamic/parameter_check",
395
396  "internal/ICSlotAllocator/ICSlotAllocator",
397  "internal/implementation_api/abc_dynamic",
398  "internal/mem_manager/abc_dynamic_1",
399  "internal/mem_manager/abc_dynamic_2",
400
401  "wrong_mode_tests/mode_test_dynamic",
402  "wrong_imm_tests/wrong_imm_test_dynamic",
403]
404test_js_from_ets_files += clean_scenario_js_from_ets_files
405
406test_ts_files = [
407  "cpp/tests/cpp_test_dynamic",
408
409  "scenarios/router_table/dynamic/router_table",
410  "scenarios/replace_call_site/dynamic/replace_call_site",
411
412  "ut/ir_core/catchphi/catchphi_dynamic",
413
414  "ut/ir_core/phi/phi_dynamic",
415
416  "ut/metadata_core/inspect_api/enumerators/enumerators0_dynamic",
417  "ut/metadata_core/inspect_api/modules/targets/TS_target",
418  "ut/metadata_core/inspect_api/methods/methods_dynamic",
419  "ut/metadata_core/inspect_api/annotations/annotations_inspect_dynamic",
420  "ut/metadata_core/inspect_api/namespaces/namespaces_dynamic",
421
422  "ut/extensions/arkts/inspect_api/api_casts/api_casts",
423  "ut/extensions/arkts/inspect_api/namespace/namespace_arkts_dynamic",
424
425  "regression/issue_IB1YEI/issue_IB1YEI",
426  "regression/issue_IB2T4M/issue_IB2T4M",
427]
428test_ts_files += clean_scenario_ts_files
429
430test_ets_files = [
431  "ut/metadata_core/inspect_api/modules/targets/ArkTS2_target",
432  "ut/metadata_core/inspect_api/classes/classes_static",
433  "ut/metadata_core/inspect_api/classes/classes_empty_static",
434  "ut/metadata_core/inspect_api/methods/methods_static",
435  "ut/metadata_core/inspect_api/methods/native_method",
436  "ut/metadata_core/inspect_api/enumerators/enumerators_static",
437  "ut/metadata_core/inspect_api/files/file_static",
438  "ut/metadata_core/inspect_api/literals/literals_static",
439  "ut/metadata_core/inspect_api/values/values_static",
440  "ut/metadata_core/inspect_api/types/types_static",
441  "ut/metadata_core/modify_api/strings/strings_static",
442  "ut/metadata_core/modify_api/types/types_static",
443  "ut/metadata_core/modify_api/literals/literals_static",
444  "ut/metadata_core/modify_api/values/values_static",
445
446  "ut/isa/isa_static/arithmetic/bininst_imm_static",
447  "ut/isa/isa_static/arithmetic/bininst_logical_static",
448  "ut/isa/isa_static/arithmetic/bininst_logical_imm_static",
449  "ut/isa/isa_static/arithmetic/bininst_shifts_imm_static",
450  "ut/isa/isa_static/arithmetic/bininst_shifts_static",
451  "ut/isa/isa_static/arithmetic/bininst_static",
452  "ut/isa/isa_static/arithmetic/unaryinst_static",
453  "ut/isa/isa_static/arrays/load_array",
454  "ut/isa/isa_static/arrays/load_const_array",
455  "ut/isa/isa_static/arrays/new_array",
456  "ut/isa/isa_static/arrays/store_array",
457  "ut/isa/isa_static/arrays/store_array_wide",
458  "ut/isa/isa_static/arrays/len_array",
459  "ut/isa/isa_static/cast/cast_static",
460  "ut/isa/isa_static/cast/checkcast_static",
461  "ut/isa/isa_static/cast/target_type_static",
462  "ut/isa/isa_static/call/call_static_static",
463  "ut/isa/isa_static/call/call_virtual_static",
464  "ut/isa/isa_static/cmp/create_cmp_static",
465  "ut/isa/isa_static/load_nullvalue/load_nullvalue_static",
466  "ut/isa/isa_static/load_string/load_string_static",
467  "ut/isa/isa_static/equals/equals_static",
468  "ut/isa/isa_static/get_opcode/get_opcode_static",
469  "ut/isa/isa_static/is_instance/is_instance_static",
470  "ut/isa/isa_static/is_nullvalue/is_nullvalue_static",
471  "ut/isa/isa_static/create_if/create_if_static",
472  "ut/isa/isa_static/objects/objects",
473  "ut/isa/isa_static/throw/throw_static",
474  "ut/isa/isa_static/classes/classes_api",
475  "ut/isa/isa_static/return/return_static",
476  "ut/isa/isa_static/create_nullptr/create_nullptr_static",
477
478  "ut/ir_core/catchphi/catchphi_static",
479  "ut/ir_core/graph/graph_static",
480  "ut/ir_core/inst_manipulation/inst_manipulation_static",
481  "ut/ir_core/basic_blocks/basic_blocks_static",
482  "ut/ir_core/graph_basic_block/graph_basic_block",
483  "ut/ir_core/create_constant/create_constant_static",
484  "ut/ir_core/string/string_static",
485  "ut/ir_core/method/method_static",
486  "ut/ir_core/inst_inputs/inst_inputs_static",
487  "ut/ir_core/types_api/get_type_static",
488  "ut/ir_core/get_constant_value/get_constant_value_static",
489  "ut/ir_core/phi/phi_static",
490  "ut/ir_core/loops/loop_static",
491  "ut/ir_core/insert_try_catch/insert_try_catch_static",
492  "ut/ir_core/graph_verifier/graph_verifier",
493  "ut/extensions/arkts/modify_api/modules/modules_static_modify",
494
495  "internal/implementation_api/abc_static",
496  "internal/mem_manager/abc_static_1",
497  "internal/mem_manager/abc_static_2",
498
499  "wrong_mode_tests/mode_test_static",
500
501  "scenarios/add_log/add_log_static",
502  "scenarios/parameter_check/parameter_check_static",
503  "scenarios/replace_callsite/replace_callsite_static",
504  "scenarios/api_scanner/static/api_scanner_static",
505  "scenarios/static_branch_elimination/static_branch_elimination",
506]
507test_ets_files += clean_scenario_ets_files
508
509module_output_path = "arkcompiler/runtime_core/libabckit"
510
511template("gen_merge_abc") {
512  merge_datas = invoker.merge_datas
513
514  merge_file_info = merge_datas[0]
515  anno_test_abc =
516      "$target_out_dir/${merge_file_info[0]}/${merge_file_info[1]}.abc"
517  anno_merge_file =
518      "$target_out_dir/${merge_file_info[0]}/${merge_file_info[1]}_merge.txt"
519  anno_path_prefix = rebase_path("$test_js_path")
520  anno_test_merge_path = rebase_path(anno_merge_file)
521  content = ""
522  foreach(data, merge_datas) {
523    if (defined(invoker.is_ohmurl) && invoker.is_ohmurl == true) {
524      item = "$anno_path_prefix/${data[0]}/${data[1]}.ts;&${data[1]}&;esm;${data[1]}.ts;entry;false;ets"
525    } else {
526      item = "$anno_path_prefix/${data[0]}/${data[1]}.ts;${data[1]};esm;${data[1]}.ts;entry;false;ets"
527    }
528    if (content == "") {
529      content = "${content}echo '$item' > $anno_test_merge_path ; "
530    } else {
531      content = "${content}echo '$item' >> $anno_test_merge_path ; "
532    }
533  }
534  action("${target_name}_gen_anno_merge_file") {
535    script = "/usr/bin/sh"
536    args = [
537      "-c",
538      "$content",
539    ]
540    outputs = [ anno_merge_file ]
541  }
542
543  es2abc_gen_abc("${target_name}") {
544    extra_visibility = [ ":*" ]
545    extra_dependencies = [ ":${target_name}_gen_anno_merge_file" ]
546    src_js = "@" + anno_test_merge_path
547    dst_file = rebase_path(anno_test_abc)
548    extra_args = [
549      "--module",
550      "--merge-abc",
551      "--enable-annotations",
552    ]
553    extension = "ts"
554    in_puts = [ anno_merge_file ]
555    out_puts = [ anno_test_abc ]
556  }
557}
558
559gen_merge_abc("gen_anno_abc") {
560  merge_datas = [
561    [
562      "ut/extensions/arkts/modify_api/annotations",
563      "annotations_dynamic",
564    ],
565    [
566      "ut/extensions/arkts/modify_api/annotations",
567      "annotations_imports",
568    ],
569  ]
570}
571
572gen_merge_abc("gen_router_table_abc") {
573  merge_datas = [
574    [
575      "regression/issue_IC78XV/c_api/router_table_ohmurl",
576      "router_table",
577    ],
578    [
579      "regression/issue_IC78XV/c_api/router_table_ohmurl",
580      "modules/IRouterHandler",
581    ],
582    [
583      "regression/issue_IC78XV/c_api/router_table_ohmurl",
584      "modules/routerMap",
585    ],
586    [
587      "regression/issue_IC78XV/c_api/router_table_ohmurl",
588      "modules/xxxHandler",
589    ],
590  ]
591  is_ohmurl = true
592}
593
594gen_merge_abc("gen_replace_call_site_abc") {
595  merge_datas = [
596    [
597      "regression/issue_IC78XV/c_api/replace_call_site_ohmurl",
598      "replace_call_site",
599    ],
600    [
601      "regression/issue_IC78XV/c_api/replace_call_site_ohmurl",
602      "modules/ApiControl",
603    ],
604    [
605      "regression/issue_IC78XV/c_api/replace_call_site_ohmurl",
606      "modules/layout",
607    ],
608  ]
609  is_ohmurl = true
610}
611
612foreach(file, test_js_files) {
613  test_js = "${test_js_path}${file}.js"
614  test_merge_file = "$target_out_dir/${file}_merge.txt"
615  test_abc = "$target_out_dir/${file}.abc"
616
617  create_merge_file("${file}_merge") {
618    input_file = "$test_js"
619    output_file = "$test_merge_file"
620    source_lang = "js"
621  }
622  es2abc_gen_abc("gen_${file}_abc") {
623    # Only targets in this file can depend on this.
624    extra_visibility = [ ":*" ]
625    extra_dependencies = [ ":${file}_merge" ]
626    src_js = "@" + rebase_path(test_merge_file)
627    dst_file = rebase_path(test_abc)
628    extra_args = [
629      "--module",
630      "--merge-abc",
631    ]
632
633    in_puts = [ test_js ]
634    out_puts = [ test_abc ]
635  }
636}
637
638foreach(file, test_js_from_ets_files) {
639  test_js = "${test_js_path}${file}.js"
640  test_merge_file = "$target_out_dir/${file}_merge.txt"
641  test_abc = "$target_out_dir/${file}.abc"
642
643  create_merge_file("${file}_merge") {
644    input_file = "$test_js"
645    output_file = "$test_merge_file"
646    source_lang = "ets"
647  }
648  es2abc_gen_abc("gen_${file}_abc") {
649    # Only targets in this file can depend on this.
650    extra_visibility = [ ":*" ]
651    extra_dependencies = [ ":${file}_merge" ]
652    src_js = "@" + rebase_path(test_merge_file)
653    dst_file = rebase_path(test_abc)
654    extra_args = [
655      "--module",
656      "--merge-abc",
657    ]
658
659    in_puts = [ test_js ]
660    out_puts = [ test_abc ]
661  }
662}
663
664foreach(file, test_ts_files) {
665  test_ts = "${test_js_path}${file}.ts"
666  test_merge_file = "$target_out_dir/${file}_merge.txt"
667  test_abc = "$target_out_dir/${file}.abc"
668
669  create_merge_file("${file}_merge") {
670    input_file = "$test_ts"
671    output_file = "$test_merge_file"
672    source_lang = "ets"
673  }
674  es2abc_gen_abc("gen_${file}_abc") {
675    # Only targets in this file can depend on this.
676    extra_visibility = [ ":*" ]
677    extra_dependencies = [ ":${file}_merge" ]
678    src_js = "@" + rebase_path(test_merge_file)
679    dst_file = rebase_path(test_abc)
680    extra_args = [
681      "--module",
682      "--merge-abc",
683      "--enable-annotations",
684    ]
685
686    extension = "ts"
687    in_puts = [ test_ts ]
688    out_puts = [ test_abc ]
689  }
690}
691
692template("ark_link_gen") {
693  assert(defined(invoker.src_abc_list), "src_abc_list is required!")
694  assert(defined(invoker.dst_abc), "dst_abc is required!")
695
696  args = [
697    "--strip-unused",
698    "--output",
699    rebase_path(invoker.dst_abc),
700    "--",
701  ]
702  foreach(src, invoker.src_abc_list) {
703    args += [ rebase_path(src) ]
704  }
705
706  action("$target_name") {
707    testonly = true
708    script = "$root_out_dir/arkcompiler/runtime_core/ark_link"
709    inputs = invoker.src_abc_list
710    outputs = []
711    if (defined(invoker.dst_abc)) {
712      # add '.fake' suffix to make sure not conflict with action 'ets2abc_gen_abc'
713      outputs += [ invoker.dst_abc + ".fake" ]
714    }
715    deps = [ "$ark_root_static/static_linker:ark_link(${host_toolchain})" ]
716    if (defined(invoker.extra_dependencies)) {
717      deps += invoker.extra_dependencies
718    }
719  }
720}
721
722foreach(file, test_ets_files) {
723  ets2abc_gen_abc("gen_${file}_abc") {
724    test_ets = "${test_js_path}${file}.ets"
725    test_abc = "$target_out_dir/${file}.abc"
726
727    # Only targets in this file can depend on this.
728    extra_visibility = [ ":*" ]
729    src_ets = rebase_path(test_ets)
730    dst_file = rebase_path(test_abc)
731
732    in_puts = [ test_ets ]
733    out_puts = [ test_abc ]
734  }
735
736  ark_link_gen("ark_link_${file}_abc") {
737    src_abc_list = [ "$target_out_dir/${file}.abc" ]
738    dst_abc = "$target_out_dir/${file}.abc"
739
740    extra_dependencies = [
741      ":abckit_gtests_action",
742      ":gen_${file}_abc",
743    ]
744  }
745}
746
747template("libabckit_host_unittest_action") {
748  _target_name_ = "${target_name}"
749
750  # unittest for phone running
751  ohos_unittest(_target_name_) {
752    forward_variables_from(invoker, "*")
753  }
754
755  _module_out_path_ = invoker.module_out_path
756
757  # unittest for host running
758  action("${_target_name_}_action") {
759    testonly = true
760
761    defines = [ "HOST_UT" ]
762
763    _host_test_target_ = ":${_target_name_}(${host_toolchain})"
764    _root_out_dir_ = get_label_info(_host_test_target_, "root_out_dir")
765
766    deps = [ _host_test_target_ ]
767
768    script = "$abckit_root/scripts/run_script.sh"
769
770    args = [
771      "--script=" + rebase_path(_root_out_dir_) +
772          "/tests/unittest/${_module_out_path_}/${_target_name_}",
773      "--ret-code=0",
774      "--env=LD_LIBRARY_PATH=" + rebase_path(_root_out_dir_) +
775          "/arkcompiler/runtime_core:" + rebase_path(_root_out_dir_) +
776          "/arkcompiler/ets_runtime:" + rebase_path(_root_out_dir_) +
777          "/thirdparty/icu:" + rebase_path(_root_out_dir_) +
778          "/thirdparty/zlib:" + rebase_path(_root_out_dir_) +
779          "/thirdparty/libuv:" + rebase_path(_root_out_dir_) + "/arkui/napi:" +
780          rebase_path(_root_out_dir_) + "/thirdparty/bounds_checking_function:",
781    ]
782
783    if (abckit_with_sanitizers) {
784      args += [ "--env=ASAN_OPTIONS=verify_asan_link_order=0" ]
785      args +=
786          [ "--env=LSAN_OPTIONS=suppressions=" + rebase_path("$abckit_root") +
787            "/tests/sanitizers/ignored_leaks.supp" ]
788    }
789
790    print(script, string_join(" ", args))
791
792    inputs = [
793      "$_root_out_dir_/tests/unittest/${_module_out_path_}/${_target_name_}",
794    ]
795    outputs = [ "$target_out_dir/${_target_name_}/" ]
796  }
797}
798
799libabckit_host_unittest_action("abckit_mock_gtests") {
800  module_out_path = module_output_path
801
802  sources = [
803    # mock infrastructure
804    "mock/abckit_api_mock.cpp",
805    "mock/abckit_values_mock.cpp",
806    "mock/arkts_inspect_api_impl_mock.cpp",
807    "mock/arkts_modify_api_impl_mock.cpp",
808    "mock/check_mock.cpp",
809    "mock/graph_api_impl_mock.cpp",
810    "mock/isa_api_dynamic_impl_mock.cpp",
811    "mock/isa_api_static_impl_mock.cpp",
812    "mock/js_inspect_api_impl_mock.cpp",
813    "mock/js_modify_api_impl_mock.cpp",
814    "mock/metadata_inspect_impl_mock.cpp",
815    "mock/metadata_modify_impl_mock.cpp",
816
817    #mock tests
818    "mock/tests/arkts/cpp_api_annotation.cpp",
819    "mock/tests/arkts/cpp_api_annotation_element.cpp",
820    "mock/tests/arkts/cpp_api_annotation_interface.cpp",
821    "mock/tests/arkts/cpp_api_class.cpp",
822    "mock/tests/arkts/cpp_api_function.cpp",
823    "mock/tests/arkts/cpp_api_module.cpp",
824    "mock/tests/arkts/cpp_api_namespace.cpp",
825    "mock/tests/core/cpp_api_annotation.cpp",
826    "mock/tests/core/cpp_api_annotation_element.cpp",
827    "mock/tests/core/cpp_api_annotation_interface.cpp",
828    "mock/tests/core/cpp_api_annotation_interface_field.cpp",
829    "mock/tests/core/cpp_api_class.cpp",
830    "mock/tests/core/cpp_api_export_descriptor.cpp",
831    "mock/tests/core/cpp_api_function.cpp",
832    "mock/tests/core/cpp_api_import_descriptor.cpp",
833    "mock/tests/core/cpp_api_module.cpp",
834    "mock/tests/core/cpp_api_namespace.cpp",
835    "mock/tests/cpp_api_file.cpp",
836    "mock/tests/cpp_api_literal_array.cpp",
837    "mock/tests/cpp_mock_bb.cpp",
838    "mock/tests/cpp_mock_dyn_isa_0.cpp",
839    "mock/tests/cpp_mock_dyn_isa_1.cpp",
840    "mock/tests/cpp_mock_file.cpp",
841    "mock/tests/cpp_mock_graph.cpp",
842    "mock/tests/cpp_mock_instruction.cpp",
843    "mock/tests/cpp_mock_literal.cpp",
844    "mock/tests/cpp_mock_type.cpp",
845    "mock/tests/cpp_mock_value.cpp",
846  ]
847
848  include_dirs = [
849    "$abckit_root",
850    "$abckit_root/src",
851  ]
852
853  configs = [ "$abckit_root:abckit_mock_config" ]
854
855  deps = [ "$abckit_root/src:libabckit_mock" ]
856}
857
858libabckit_host_unittest_action("abckit_gtests") {
859  module_out_path = module_output_path
860
861  sources = abckit_gtests_sources
862
863  include_dirs = [
864    "$ark_root_dynamic",
865    "$abckit_root",
866    "$abckit_root/include",
867    "$abckit_root/src",
868    "$abckit_root/tests",
869  ]
870
871  configs = [ "$abckit_root:abckit_config" ]
872
873  deps = [
874    ":abckit_ets_vm_helpers",
875    ":abckit_js_vm_helpers",
876    "$abckit_root/src:libabckit",
877  ]
878
879  foreach(file, test_js_files) {
880    deps += [ ":gen_${file}_abc" ]
881  }
882
883  foreach(file, test_js_from_ets_files) {
884    deps += [ ":gen_${file}_abc" ]
885  }
886
887  foreach(file, test_ts_files) {
888    deps += [ ":gen_${file}_abc" ]
889  }
890
891  foreach(file, test_ets_files) {
892    deps += [ ":gen_${file}_abc" ]
893  }
894
895  deps += [
896    ":gen_anno_abc",
897    ":gen_replace_call_site_abc",
898    ":gen_router_table_abc",
899  ]
900
901  if (is_ohos && is_standard_system) {
902    test_abc_dir = "/data/test"
903  } else {
904    test_abc_dir = rebase_path(target_out_dir)
905  }
906
907  test_js_dir = rebase_path(test_js_path)
908
909  defines = [
910    "ABCKIT_ABC_DIR=\"${test_abc_dir}/\"",
911    "ABCKIT_TEST_DIR=\"${test_js_dir}\"",
912  ]
913}
914
915libabckit_host_unittest_action("arklink_strip_unused_code_gtests") {
916  module_out_path = module_output_path
917
918  sources = abckit_gtests_sources
919
920  include_dirs = [
921    "$ark_root_dynamic",
922    "$abckit_root",
923    "$abckit_root/include",
924    "$abckit_root/src",
925    "$abckit_root/tests",
926  ]
927
928  configs = [ "$abckit_root:abckit_config" ]
929
930  deps = [
931    ":abckit_ets_vm_helpers",
932    ":abckit_gtests_action",
933    ":abckit_js_vm_helpers",
934    "$abckit_root/src:libabckit",
935  ]
936
937  foreach(file, test_js_files) {
938    deps += [ ":gen_${file}_abc" ]
939  }
940
941  foreach(file, test_js_from_ets_files) {
942    deps += [ ":gen_${file}_abc" ]
943  }
944
945  foreach(file, test_ts_files) {
946    deps += [ ":gen_${file}_abc" ]
947  }
948
949  foreach(file, test_ets_files) {
950    deps += [ ":ark_link_${file}_abc" ]
951  }
952
953  if (is_ohos && is_standard_system) {
954    test_abc_dir = "/data/test"
955  } else {
956    test_abc_dir = rebase_path(target_out_dir)
957  }
958
959  test_js_dir = rebase_path(test_js_path)
960
961  defines = [
962    "ABCKIT_ABC_DIR=\"${test_abc_dir}/\"",
963    "ABCKIT_TEST_DIR=\"${test_js_dir}\"",
964  ]
965}
966
967libabckit_host_unittest_action("abckit_clean_scenarios") {
968  module_out_path = module_output_path
969
970  sources = [
971    "clean_scenarios/c_api/dynamic/add_log/add_log_dynamic_test.cpp",
972    "clean_scenarios/c_api/dynamic/add_try_catch/add_try_catch_test.cpp",
973    "clean_scenarios/c_api/dynamic/api_scanner/api_scanner_test.cpp",
974    "clean_scenarios/c_api/dynamic/branch_eliminator/branch_eliminator_test.cpp",
975    "clean_scenarios/c_api/dynamic/parameter_check/parameter_check_test.cpp",
976    "clean_scenarios/c_api/dynamic/replace_call_site/replace_call_site_test.cpp",
977    "clean_scenarios/c_api/dynamic/router_table/router_table_test.cpp",
978    "clean_scenarios/c_api/dynamic/scan_subclasses/scan_subclasses_test.cpp",
979    "clean_scenarios/c_api/static/add_log/add_log_static_test.cpp",
980    "clean_scenarios/cpp_api/dynamic/add_log/add_log_dynamic_test.cpp",
981    "clean_scenarios/cpp_api/dynamic/add_try_catch/add_try_catch.cpp",
982    "clean_scenarios/cpp_api/dynamic/api_scanner/api_scanner_test.cpp",
983    "clean_scenarios/cpp_api/dynamic/branch_eliminator/branch_eliminator_test.cpp",
984    "clean_scenarios/cpp_api/dynamic/parameter_check/parameter_check_test.cpp",
985    "clean_scenarios/cpp_api/dynamic/replace_call_site/replace_call_site_test.cpp",
986    "clean_scenarios/cpp_api/dynamic/router_table/router_table_test.cpp",
987    "clean_scenarios/cpp_api/dynamic/scan_subclasses/scan_subclasses_test.cpp",
988    "helpers/helpers.cpp",
989    "helpers/helpers_mode.cpp",
990    "helpers/visit_helper/visit_helper.cpp",
991  ]
992
993  include_dirs = [
994    "$ark_root_dynamic",
995    "$abckit_root",
996    "$abckit_root/include",
997    "$abckit_root/src",
998    "$abckit_root/tests",
999  ]
1000
1001  configs = [ "$abckit_root:abckit_config" ]
1002
1003  deps = [
1004    ":abckit_ets_vm_helpers",
1005    ":abckit_js_vm_helpers",
1006    "$abckit_root/src:libabckit",
1007  ]
1008
1009  foreach(file, clean_scenario_js_from_ets_files) {
1010    deps += [ ":gen_${file}_abc" ]
1011  }
1012
1013  foreach(file, clean_scenario_ts_files) {
1014    deps += [ ":gen_${file}_abc" ]
1015  }
1016
1017  foreach(file, clean_scenario_ets_files) {
1018    deps += [ ":gen_${file}_abc" ]
1019  }
1020
1021  if (is_ohos && is_standard_system) {
1022    test_abc_dir = "/data/test"
1023  } else {
1024    test_abc_dir = rebase_path(target_out_dir)
1025  }
1026
1027  test_js_dir = rebase_path(test_js_path)
1028
1029  defines = [
1030    "ABCKIT_ABC_DIR=\"${test_abc_dir}/\"",
1031    "ABCKIT_TEST_DIR=\"${test_js_dir}\"",
1032  ]
1033}
1034
1035group("abckit_stress_tests_package") {
1036  deps = [
1037    "$abckit_root/abckit:abckit(${host_toolchain})",
1038    "$abckit_root/tests/stress/abckit_plugin:abckit_stress_plugin(${host_toolchain})",
1039    "$ark_root_static/verification/verifier:verifier_bin(${host_toolchain})",
1040  ]
1041}
1042
1043group("abckit_stress_tests_apps") {
1044  testonly = true
1045  if (abckit_enable) {
1046    deps = [
1047      "apps:abckit_test_apps_build",
1048      "apps:abckit_test_apps_run_stress",
1049    ]
1050  }
1051}
1052
1053ohos_source_set("abckit_js_vm_helpers") {
1054  sources = [ "helpers/helpers_js_runtime.cpp" ]
1055
1056  deps = [
1057    "$ark_root_dynamic/assembler:libarkassembler",
1058    "$js_root:libark_jsruntime_test_set",
1059  ]
1060
1061  include_dirs = [
1062    "$ark_root_dynamic",
1063    "$abckit_root/src",
1064  ]
1065
1066  output_extension = "so"
1067  part_name = "runtime_core"
1068  subsystem_name = "arkcompiler"
1069}
1070
1071ohos_source_set("abckit_ets_vm_helpers") {
1072  sources = [ "helpers/helpers_ets_runtime.cpp" ]
1073
1074  include_dirs = [
1075    "$ark_root_dynamic",
1076    "$abckit_root/src",
1077  ]
1078
1079  etsstdlib =
1080      rebase_path(get_label_info("$ark_root_static/plugins/ets:etsstdlib",
1081                                 "target_gen_dir")) + "/etsstdlib.abc"
1082  defines = [ "ABCKIT_ETS_STD_LIB=\"${etsstdlib}\"" ]
1083
1084  deps = [
1085    "$ark_root_static/plugins/ets:etsstdlib",
1086    "$ark_root_static/runtime:libarkruntime",
1087  ]
1088
1089  output_extension = "so"
1090  part_name = "runtime_core"
1091  subsystem_name = "arkcompiler"
1092}
1093