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