• 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/ets_frontend/es2panda/es2abc_config.gni")
15import("//arkcompiler/ets_runtime/js_runtime_config.gni")
16import("$build_root/config/sanitizers/sanitizers.gni")
17import("$build_root/toolchain/toolchain.gni")
18
19group("ark_js_packages") {
20  deps = []
21
22  deps += [
23    ":js_type_metadata",
24    ":libark_jsruntime",
25    "ecmascript/compiler:stub.an",
26    "ecmascript/dfx/hprof:ark_js_heap_snapshot_tool",
27    "ecmascript/dfx/hprof/rawheap_translate:rawheap_translator",
28    "ecmascript/js_vm:ark_js_vm",
29    "ecmascript/quick_fix:quick_fix",
30  ]
31  if (is_clang && clang_version != "9.0.3" && current_cpu == "arm64" &&
32      is_ohos) {
33    deps += [
34      "ecmascript/compiler:ark_aot_compiler",
35      "ecmascript/compiler:libark_jsoptimizer",
36    ]
37  }
38}
39
40group("ap_viewer_all_host_tools_packages") {
41  if (host_os != "mac" && target_os != "android") {
42    deps = [
43      "tools/ap_file_viewer/native:apViewer($build_root/toolchain/mingw:mingw_x86_64)",
44      "tools/ap_file_viewer/native:apViewer(${host_toolchain})",
45    ]
46  }
47}
48
49group("ark_js_host_windows_tools_packages") {
50  deps = []
51  if (host_os != "mac" && target_os != "android") {
52    deps += [
53      "ecmascript/compiler:ark_aot_compiler($build_root/toolchain/mingw:mingw_x86_64)",
54      "ecmascript/js_vm:ark_js_vm($build_root/toolchain/mingw:mingw_x86_64)",
55      "ecmascript/pgo_profiler/prof_dump:profdump($build_root/toolchain/mingw:mingw_x86_64)",
56    ]
57  }
58}
59
60group("ark_js_host_mac_tools_packages") {
61  deps = []
62  if (host_os == "mac") {
63    if (host_cpu == "arm64") {
64      deps += [
65        "ecmascript/compiler:ark_aot_compiler($build_root/toolchain/mac:clang_arm64)",
66        "ecmascript/js_vm:ark_js_vm($build_root/toolchain/mac:clang_arm64)",
67        "ecmascript/pgo_profiler/prof_dump:profdump($build_root/toolchain/mac:clang_arm64)",
68      ]
69    } else {
70      deps += [
71        "ecmascript/compiler:ark_aot_compiler($build_root/toolchain/mac:clang_x64)",
72        "ecmascript/js_vm:ark_js_vm($build_root/toolchain/mac:clang_x64)",
73        "ecmascript/pgo_profiler/prof_dump:profdump($build_root/toolchain/mac:clang_x64)",
74      ]
75    }
76  }
77}
78
79group("ark_js_host_linux_tools_packages") {
80  deps = []
81
82  deps += [
83    "ecmascript/dfx/hprof:ark_js_heap_snapshot_tool(${host_toolchain})",
84    "ecmascript/js_vm:ark_js_vm(${host_toolchain})",
85    "ecmascript/quick_fix:quick_fix(${host_toolchain})",
86  ]
87  if (is_standard_system) {
88    deps += [
89      "ecmascript/compiler:ark_aot_compiler(${host_toolchain})",
90      "ecmascript/compiler:ark_stub_compiler(${host_toolchain})",
91      "ecmascript/compiler:libark_jsoptimizer(${host_toolchain})",
92      "ecmascript/pgo_profiler/prof_dump:profdump(${host_toolchain})",
93    ]
94  }
95}
96
97group("ark_js_unittest") {
98  testonly = true
99  deps = []
100
101  deps += [
102    "ecmascript/base/tests:unittest",
103    "ecmascript/builtins/tests:unittest",
104    "ecmascript/containers/tests:unittest",
105    "ecmascript/debugger/tests:unittest",
106    "ecmascript/dfx/hprof/tests:unittest",
107    "ecmascript/ic/tests:unittest",
108    "ecmascript/jobs/tests:unittest",
109    "ecmascript/jspandafile/tests:unittest",
110    "ecmascript/module/tests:unittest",
111    "ecmascript/napi/test:unittest",
112    "ecmascript/napi/test:workload_test",
113    "ecmascript/regexp/tests:unittest",
114    "ecmascript/require/tests:unittest",
115    "ecmascript/serializer/tests:unittest",
116    "ecmascript/snapshot/tests:unittest",
117    "ecmascript/tests:unittest",
118  ]
119  if (is_ohos && is_standard_system) {
120    deps += [ "test/fuzztest:fuzztest" ]
121  }
122  if (current_cpu == "arm64") {
123    deps += [ "ecmascript/pgo_profiler/tests:unittest" ]
124  }
125}
126
127group("ark_js_perform") {
128  testonly = true
129  deps = []
130  deps += [ "//arkcompiler/ets_runtime/test/perform:perform" ]
131}
132
133group("ark_unittest") {
134  testonly = true
135  deps = []
136
137  # js unittest
138  deps += [
139    "ecmascript/base/tests:host_unittest",
140    "ecmascript/builtins/tests:host_unittest",
141    "ecmascript/containers/tests:host_unittest",
142    "ecmascript/dfx/hprof/tests:host_unittest",
143    "ecmascript/ic/tests:host_unittest",
144    "ecmascript/jobs/tests:host_unittest",
145    "ecmascript/jspandafile/tests:host_unittest",
146    "ecmascript/module/tests:host_unittest",
147    "ecmascript/napi/test:host_unittest",
148    "ecmascript/pgo_profiler/tests:host_unittest",
149    "ecmascript/regexp/tests:host_unittest",
150    "ecmascript/require/tests:host_unittest",
151    "ecmascript/serializer/tests:host_unittest",
152    "ecmascript/snapshot/tests:host_unittest",
153    "ecmascript/tests:host_unittest",
154  ]
155  if (!run_with_asan) {
156    if (!(ark_standalone_build && current_os == "ohos")) {
157      deps += [
158        "ecmascript/compiler/tests:host_unittest",
159        "ecmascript/ohos/tests:host_unittest",
160      ]
161    }
162  }
163}
164
165group("ark_runtime_host_unittest") {
166  testonly = true
167  deps = []
168
169  # js unittest
170  deps += [
171    ":ark_unittest",
172    "$js_root/test/pgotypeinfer:ark_pgotypeinfer_test",
173  ]
174
175  # js bytecode test
176  deps += [ "$js_root/test/moduletest:ark_js_moduletest" ]
177
178  # quickfix test
179  deps += [ "$js_root/test/quickfix:ark_quickfix_test" ]
180  if (!ark_standalone_build && run_regress_test) {
181    deps += [ "$js_root/test/regresstest:ark_regress_test" ]
182  }
183
184  # execution test
185  deps += [ "$js_root/test/executiontest:ark_execution_test" ]
186
187  # jit test
188  deps += [ "$js_root/test/jittest:ark_jit_test" ]
189
190  # ts aot test and asm test
191  if (!run_with_asan) {
192    deps += [
193      "$js_root/test/aottest:ark_aot_test",
194
195      #"$js_root/test/moduletest:ark_asm_single_step_test",
196      "$js_root/test/deopttest:ark_deopt_test",
197      "$js_root/test/moduletest:ark_asm_test",
198    ]
199
200    if (is_mac) {
201      deps -= [ "$js_root/test/moduletest:ark_asm_test" ]
202    }
203  }
204}
205
206config("ark_jsruntime_public_config") {
207  configs = [
208    "$ark_root/libpandabase:arkbase_public_config",
209    "$ark_root/libpandafile:arkfile_public_config",
210    "$ark_third_party_root/icu/icu4c:icu_config",
211    sdk_libc_secshared_config,
212  ]
213
214  include_dirs = [
215    "$js_root",
216    "$js_root/ecmascript/napi/include",
217  ]
218}
219
220intl_sources = []
221
222if (enable_ark_intl) {
223  intl_sources += [
224    "ecmascript/builtins/builtins_collator.cpp",
225    "ecmascript/builtins/builtins_date_time_format.cpp",
226    "ecmascript/builtins/builtins_displaynames.cpp",
227    "ecmascript/builtins/builtins_intl.cpp",
228    "ecmascript/builtins/builtins_list_format.cpp",
229    "ecmascript/builtins/builtins_locale.cpp",
230    "ecmascript/builtins/builtins_number_format.cpp",
231    "ecmascript/builtins/builtins_plural_rules.cpp",
232    "ecmascript/builtins/builtins_relative_time_format.cpp",
233    "ecmascript/builtins/builtins_segment_iterator.cpp",
234    "ecmascript/builtins/builtins_segmenter.cpp",
235    "ecmascript/builtins/builtins_segments.cpp",
236    "ecmascript/js_collator.cpp",
237    "ecmascript/js_date_time_format.cpp",
238    "ecmascript/js_displaynames.cpp",
239    "ecmascript/js_list_format.cpp",
240    "ecmascript/js_locale.cpp",
241    "ecmascript/js_number_format.cpp",
242    "ecmascript/js_plural_rules.cpp",
243    "ecmascript/js_relative_time_format.cpp",
244    "ecmascript/js_segment_iterator.cpp",
245    "ecmascript/js_segmenter.cpp",
246    "ecmascript/js_segments.cpp",
247  ]
248} else {
249  if (target_os != "android" && target_os != "ios") {
250    intl_sources += [ "ecmascript/intl/global_intl_helper.cpp" ]
251  }
252}
253
254config("ark_jsruntime_compiler_config") {
255  configs = [ "$js_root:ark_jsruntime_common_config" ]
256}
257
258config("hiviewdfx_config") {
259  defines = []
260  if (enable_dump_in_faultlog) {
261    defines += [ "ENABLE_DUMP_IN_FAULTLOG" ]
262  }
263  if (enable_bytrace) {
264    defines += [ "ENABLE_BYTRACE" ]
265    cflags_cc = [ "-Wno-gnu-zero-variadic-macro-arguments" ]
266  }
267  if (enable_hitrace) {
268    defines += [ "ENABLE_HITRACE" ]
269  }
270  if (enable_hilog) {
271    defines += [ "ENABLE_HILOG" ]
272  }
273  if (enable_hisysevent) {
274    defines += [ "ENABLE_HISYSEVENT" ]
275  }
276  if (enable_unwinder) {
277    defines += [ "ENABLE_UNWINDER" ]
278  }
279
280  include_dirs = [ "$hilog_root/include" ]
281}
282
283config("ark_jsruntime_common_config") {
284  configs = [ ":hiviewdfx_config" ]
285
286  defines = [ "PANDA_ENABLE_LTO" ]
287
288  if (ark_standalone_build) {
289    defines += [ "STANDALONE_MODE" ]
290  }
291
292  cflags_cc = [
293    "-Wall",
294    "-Wshadow",
295    "-Werror",
296    "-Wextra",
297    "-pedantic",
298    "-Wno-invalid-offsetof",
299    "-Wno-gnu-statement-expression",
300    "-pipe",
301    "-Wdate-time",
302    "-funwind-tables",
303    "-fno-rtti",
304    "-fasynchronous-unwind-tables",
305    "-Wformat=2",
306    "-std=c++17",
307    "-Wno-unused-but-set-variable",
308  ]
309
310  cflags_c = []
311
312  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
313    if (ets_runtime_feature_enable_pgo) {
314      cflags = [
315        "-fprofile-use=" + rebase_path(
316                "${ets_runtime_feature_pgo_path}/libark_jsruntime.profdata",
317                root_build_dir),
318        "-Wno-error=backend-plugin",
319        "-Wno-profile-instr-out-of-date",
320        "-Wno-profile-instr-unprofiled",
321      ]
322    }
323  }
324
325  if (use_musl) {
326    defines += [ "PANDA_USE_MUSL" ]
327  }
328
329  if (build_public_version) {
330    defines += [ "IS_PUBLIC_VERSION" ]
331  }
332
333  if (is_arkui_x) {
334    defines += [ "CROSS_PLATFORM" ]
335  }
336
337  if (target_os == "android") {
338    defines += [ "ANDROID_PLATFORM" ]
339  }
340
341  if (ark_compile_mode != "release") {
342    ark_profiler_features = [
343      "ECMASCRIPT_SUPPORT_CPUPROFILER",
344      "ECMASCRIPT_SUPPORT_HEAPPROFILER",
345      "ECMASCRIPT_SUPPORT_HEAPSAMPLING",
346      "ECMASCRIPT_SUPPORT_SNAPSHOT",
347      "ECMASCRIPT_SUPPORT_TRACING",
348    ]
349    defines += [ "ECMASCRIPT_SUPPORT_DEBUGGER" ]
350    defines += ark_profiler_features
351  }
352
353  ldflags = []
354  if (is_linux) {
355    defines += [
356      "PANDA_TARGET_PREVIEW",
357      "PANDA_TARGET_UNIX",
358      "PANDA_TARGET_LINUX",
359      "PANDA_USE_FUTEX",
360    ]
361  } else if (is_mingw) {
362    cflags_cc += [
363      "-std=c++17",
364      "-Wno-ignored-attributes",
365    ]
366    defines += [
367      "PANDA_TARGET_PREVIEW",
368      "PANDA_TARGET_WINDOWS",
369      "_CRTBLD",
370      "__LIBMSVCRT__",
371    ]
372
373    ldflags += [ "-lshlwapi" ]
374
375    # not support profiler on Windows yet
376    if (ark_compile_mode != "release") {
377      defines -= ark_profiler_features
378    }
379  } else if (is_mac) {
380    cflags_cc += [ "-std=c++17" ]
381    defines += [
382      "PANDA_TARGET_PREVIEW",
383      "PANDA_TARGET_UNIX",
384      "PANDA_TARGET_MACOS",
385    ]
386
387    # not support profiler on MacOS yet
388    if (ark_compile_mode != "release") {
389      defines -= ark_profiler_features
390    }
391  } else if (target_os == "android") {
392    defines += [
393      "PANDA_TARGET_ANDROID",
394      "PANDA_TARGET_UNIX",
395      "PANDA_USE_FUTEX",
396    ]
397    if (current_cpu == "arm64") {
398      defines += [ "EXCLUDE_C_INTERPRETER" ]
399    }
400    if (!ark_standalone_build) {
401      defines += [ "ENABLE_ANLOG" ]
402    }
403  } else if (target_os == "ios") {
404    defines += [
405      "PANDA_TARGET_IOS",
406      "PANDA_TARGET_UNIX",
407    ]
408
409    # not support profiler on iOS yet
410    if (ark_compile_mode != "release") {
411      defines -= ark_profiler_features
412    }
413  } else {
414    defines += [
415      "PANDA_TARGET_UNIX",
416      "PANDA_USE_FUTEX",
417    ]
418    if (!is_standard_system && (current_cpu != "arm" || is_wearable_product)) {
419      defines += [ "PANDA_TARGET_MOBILE" ]
420    }
421  }
422
423  if (is_ohos) {
424    defines += [ "PANDA_TARGET_OHOS" ]
425  }
426
427  if (!is_mac && target_os != "ios" && !use_libfuzzer && !enable_lto_O0) {
428    cflags_cc += [ "-flto=thin" ]
429    ldflags += [ "-flto=thin" ]
430  }
431
432  if (use_libfuzzer) {
433    defines += [ "FUZZ_TEST" ]
434  }
435
436  if (is_fastverify) {
437    cflags_cc += [
438      "-O3",
439      "-ggdb3",
440      "-fno-omit-frame-pointer",
441      "-D_GLIBCXX_ASSERTIONS",
442    ]
443    cflags_c += [
444      "-O3",
445      "-ggdb3",
446      "-fno-omit-frame-pointer",
447      "-D_GLIBCXX_ASSERTIONS",
448    ]
449  } else if (is_debug) {
450    cflags_cc += [
451      "-O0",
452      "-ggdb3",
453    ]
454  } else {
455    defines += [ "NDEBUG" ]
456  }
457
458  if (enable_asm_assert) {
459    defines += [ "ENABLE_ASM_ASSERT" ]
460  }
461
462  if (run_with_asan) {
463    defines += [ "RUN_WITH_ASAN" ]
464  }
465
466  if (enable_cow_array) {
467    defines += [ "ENABLE_COW_ARRAY" ]
468  }
469
470  if (run_with_asan && is_linux &&
471      (current_cpu == "x86" || current_cpu == "x64")) {
472    cflags_cc += [
473      "-fno-inline-functions",
474      "-fno-inline",
475      "-fsanitize=address",
476      "-fsanitize-address-use-after-scope",
477      "-fno-omit-frame-pointer",
478      "-fsanitize=leak",
479    ]
480
481    if (!use_musl) {
482      libs = [ "$clang_base_path/lib64/clang/$clang_version/lib/linux/libclang_rt.asan-x86_64.a" ]
483    } else {
484      libs = [ "$clang_base_path/lib/clang/$clang_version/lib/x86_64-linux-ohos/libclang_rt.asan.a" ]
485    }
486  }
487
488  if (current_cpu == "arm") {
489    defines += [
490      "PANDA_TARGET_ARM32_ABI_SOFT=1",
491      "PANDA_TARGET_ARM32",
492      "PANDA_TARGET_32",
493    ]
494  } else if (current_cpu == "arm64") {
495    defines += [
496      "PANDA_TARGET_ARM64",
497      "PANDA_TARGET_64",
498      "PANDA_ENABLE_GLOBAL_REGISTER_VARIABLES",
499      "PANDA_USE_32_BIT_POINTER",
500    ]
501  } else if (current_cpu == "x86") {
502    defines += [ "PANDA_TARGET_X86" ]
503  } else if (current_cpu == "amd64" || current_cpu == "x64" ||
504             current_cpu == "x86_64") {
505    defines += [
506      "PANDA_TARGET_64",
507      "PANDA_TARGET_AMD64",
508      "PANDA_USE_32_BIT_POINTER",
509    ]
510  }
511  if (enable_ark_intl) {
512    defines += [ "ARK_SUPPORT_INTL" ]
513  } else {
514    if (target_os == "android" || target_os == "ios") {
515      defines += [ "ARK_NOT_SUPPORT_INTL_GLOBAL" ]
516    } else {
517      configs += [ "$global_root/frameworks/intl:intl_util_config" ]
518    }
519  }
520
521  if (enable_leak_check || enable_gc_dfx_options || is_asan) {
522    defines += [ "ECMASCRIPT_ENABLE_HANDLE_LEAK_CHECK" ]
523  }
524
525  if (is_ohos && is_standard_system) {
526    defines += [ "ENABLE_EXCEPTION_BACKTRACE" ]
527
528    if (use_musl && (current_cpu == "arm" || current_cpu == "arm64") &&
529        !is_mac && !is_mingw && target_os != "ios" && !is_asan) {
530      defines += [ "HOOK_ENABLE" ]
531    }
532  }
533
534  # is_asan: skynet config; run_with_asan: est_runtime enable asan config
535  if (is_asan) {
536    defines += [
537      "ECMASCRIPT_ENABLE_ASAN_DFX_CONFIG",
538      "ECMASCRIPT_ENABLE_ASAN_THREAD_CHECK",
539    ]
540  }
541
542  code_encrypto_enable = true
543  if (defined(global_parts_info) &&
544      !defined(global_parts_info.security_code_crypto_metadata_process)) {
545    code_encrypto_enable = false
546  }
547  if (is_mingw && ark_standalone_build) {
548    code_encrypto_enable = false
549  }
550  if (code_encrypto_enable) {
551    defines += [ "CODE_ENCRYPTION_ENABLE" ]
552  }
553}
554
555# ecmascript unit testcase config
556config("ecma_test_config") {
557  visibility = [
558    "./ecmascript/*",
559    "./test/executiontest/*",
560    "./test/fuzztest/*",
561    "./tools/ap_file_viewer/*",
562  ]
563
564  configs = [
565    "$js_root:ark_jsruntime_public_config",
566    "$js_root:ark_jsruntime_common_config",
567  ]
568
569  if (enable_leak_check || is_asan) {
570    defines = [ "ECMASCRIPT_ENABLE_HANDLE_LEAK_CHECK" ]
571  }
572  if (!is_mac) {
573    ldflags = [ "-Wl,-rpath=\$ORIGIN/" ]
574  } else {
575    ldflags = [ "-Wl" ]
576  }
577
578  if (!ark_standalone_build) {
579    ldflags += [ "-Wl,--lto-O0" ]
580  }
581}
582
583# ecmascript icu path for testcase config
584config("icu_path_test_config") {
585  icu_data_path = rebase_path("//third_party/icu/ohos_icu4j/data")
586  defines = [ "ICU_PATH=\"${icu_data_path}\"" ]
587}
588
589# asm interpreter enable config
590config("asm_interp_enable_config") {
591  if ((current_cpu == "amd64" || current_cpu == "x64" ||
592       current_cpu == "x86_64" || current_cpu == "arm64") && !is_mingw &&
593      !is_mac && target_os != "ios") {
594    defines = [ "SUPPORT_ENABLE_ASM_INTERP" ]
595  }
596}
597
598ecma_source = [
599  "ecmascript/base/array_helper.cpp",
600  "ecmascript/base/atomic_helper.cpp",
601  "ecmascript/base/builtins_base.cpp",
602  "ecmascript/base/dtoa_helper.cpp",
603  "ecmascript/base/error_helper.cpp",
604  "ecmascript/base/fast_json_stringifier.cpp",
605  "ecmascript/base/json_helper.cpp",
606  "ecmascript/base/json_parser.cpp",
607  "ecmascript/base/json_stringifier.cpp",
608  "ecmascript/base/number_helper.cpp",
609  "ecmascript/base/path_helper.cpp",
610  "ecmascript/base/sort_helper.cpp",
611  "ecmascript/base/string_helper.cpp",
612  "ecmascript/base/typed_array_helper.cpp",
613  "ecmascript/base/utf_helper.cpp",
614  "ecmascript/builtins/builtins.cpp",
615  "ecmascript/builtins/builtins_ark_tools.cpp",
616  "ecmascript/builtins/builtins_array.cpp",
617  "ecmascript/builtins/builtins_shared_array.cpp",
618  "ecmascript/builtins/builtins_sendable_arraybuffer.cpp",
619  "ecmascript/builtins/builtins_arraybuffer.cpp",
620  "ecmascript/builtins/builtins_async_from_sync_iterator.cpp",
621  "ecmascript/builtins/builtins_async_function.cpp",
622  "ecmascript/builtins/builtins_shared_async_function.cpp",
623  "ecmascript/builtins/builtins_async_generator.cpp",
624  "ecmascript/builtins/builtins_atomics.cpp",
625  "ecmascript/builtins/builtins_bigint.cpp",
626  "ecmascript/builtins/builtins_boolean.cpp",
627  "ecmascript/builtins/builtins_dataview.cpp",
628  "ecmascript/builtins/builtins_date.cpp",
629  "ecmascript/builtins/builtins_errors.cpp",
630  "ecmascript/builtins/builtins_finalization_registry.cpp",
631  "ecmascript/builtins/builtins_function.cpp",
632  "ecmascript/builtins/builtins_gc.cpp",
633  "ecmascript/builtins/builtins_generator.cpp",
634  "ecmascript/builtins/builtins_global.cpp",
635  "ecmascript/builtins/builtins_iterator.cpp",
636  "ecmascript/builtins/builtins_async_iterator.cpp",
637  "ecmascript/builtins/builtins_json.cpp",
638  "ecmascript/builtins/builtins_lazy_callback.cpp",
639  "ecmascript/builtins/builtins_map.cpp",
640  "ecmascript/builtins/builtins_math.cpp",
641  "ecmascript/builtins/builtins_number.cpp",
642  "ecmascript/builtins/builtins_object.cpp",
643  "ecmascript/builtins/builtins_promise.cpp",
644  "ecmascript/builtins/builtins_promise_handler.cpp",
645  "ecmascript/builtins/builtins_promise_job.cpp",
646  "ecmascript/builtins/builtins_proxy.cpp",
647  "ecmascript/builtins/builtins_reflect.cpp",
648  "ecmascript/builtins/builtins_regexp.cpp",
649  "ecmascript/builtins/builtins_set.cpp",
650  "ecmascript/builtins/builtins_sharedarraybuffer.cpp",
651  "ecmascript/builtins/builtins_string.cpp",
652  "ecmascript/builtins/builtins_shared_function.cpp",
653  "ecmascript/builtins/builtins_string_iterator.cpp",
654  "ecmascript/builtins/builtins_shared_object.cpp",
655  "ecmascript/builtins/builtins_shared_set.cpp",
656  "ecmascript/builtins/builtins_shared_map.cpp",
657  "ecmascript/builtins/builtins_shared_typedarray.cpp",
658  "ecmascript/builtins/builtins_symbol.cpp",
659  "ecmascript/builtins/builtins_typedarray.cpp",
660  "ecmascript/builtins/builtins_weak_map.cpp",
661  "ecmascript/builtins/builtins_weak_ref.cpp",
662  "ecmascript/builtins/builtins_weak_set.cpp",
663  "ecmascript/builtins/shared_builtins.cpp",
664  "ecmascript/byte_array.cpp",
665  "ecmascript/ohos/code_decrypt.cpp",
666  "ecmascript/ohos/enable_aot_list_helper.cpp",
667  "ecmascript/compiler/aot_file/elf_builder.cpp",
668  "ecmascript/compiler/aot_file/elf_reader.cpp",
669  "ecmascript/compiler/aot_file/elf_checker.cpp",
670  "ecmascript/compiler/aot_file/an_file_data_manager.cpp",
671  "ecmascript/compiler/aot_file/an_file_info.cpp",
672  "ecmascript/compiler/aot_file/aot_file_info.cpp",
673  "ecmascript/compiler/aot_file/stub_file_info.cpp",
674  "ecmascript/compiler/aot_file/gdb_jit.cpp",
675  "ecmascript/compiler/aot_file/binary_buffer_parser.cpp",
676  "ecmascript/compiler/aot_file/module_section_des.cpp",
677  "ecmascript/compiler/aot_file/aot_file_manager.cpp",
678  "ecmascript/compiler/aot_file/aot_version.cpp",
679  "ecmascript/compiler/aot_snapshot/aot_snapshot.cpp",
680  "ecmascript/compiler/aot_snapshot/snapshot_constantpool_data.cpp",
681  "ecmascript/compiler/aot_snapshot/snapshot_global_data.cpp",
682  "ecmascript/compiler/pgo_bc_info.cpp",
683  "ecmascript/compiler/pgo_type/pgo_hclass_generator.cpp",
684  "ecmascript/compiler/pgo_type/pgo_type_manager.cpp",
685  "ecmascript/compiler/pgo_type/pgo_type_parser.cpp",
686  "ecmascript/compiler/pgo_type/pgo_type_recorder.cpp",
687  "ecmascript/compiler/pgo_type/pgo_type_location.cpp",
688  "ecmascript/containers/containers_arraylist.cpp",
689  "ecmascript/containers/containers_bitvector.cpp",
690  "ecmascript/containers/containers_deque.cpp",
691  "ecmascript/containers/containers_errors.cpp",
692  "ecmascript/containers/containers_hashmap.cpp",
693  "ecmascript/containers/containers_hashset.cpp",
694  "ecmascript/containers/containers_lightweightmap.cpp",
695  "ecmascript/containers/containers_lightweightset.cpp",
696  "ecmascript/containers/containers_linked_list.cpp",
697  "ecmascript/containers/containers_list.cpp",
698  "ecmascript/containers/containers_plainarray.cpp",
699  "ecmascript/containers/containers_private.cpp",
700  "ecmascript/containers/containers_queue.cpp",
701  "ecmascript/containers/containers_stack.cpp",
702  "ecmascript/containers/containers_treemap.cpp",
703  "ecmascript/containers/containers_treeset.cpp",
704  "ecmascript/containers/containers_vector.cpp",
705  "ecmascript/date_parse.cpp",
706  "ecmascript/debugger/js_debugger_manager.cpp",
707  "ecmascript/deoptimizer/calleeReg.cpp",
708  "ecmascript/deoptimizer/deoptimizer.cpp",
709  "ecmascript/dfx/dump_code/jit_dump_elf.cpp",
710  "ecmascript/dfx/native_module_failure_info.cpp",
711  "ecmascript/dfx/stackinfo/js_stackinfo.cpp",
712  "ecmascript/dfx/vmstat/caller_stat.cpp",
713  "ecmascript/dfx/vmstat/function_call_timer.cpp",
714  "ecmascript/dfx/vmstat/opt_code_profiler.cpp",
715  "ecmascript/dfx/vmstat/runtime_stat.cpp",
716  "ecmascript/dfx/vm_thread_control.cpp",
717  "ecmascript/dump.cpp",
718  "ecmascript/ecma_context.cpp",
719  "ecmascript/ecma_handle_scope.cpp",
720  "ecmascript/ecma_string.cpp",
721  "ecmascript/ecma_string_table.cpp",
722  "ecmascript/ecma_vm.cpp",
723  "ecmascript/element_accessor.cpp",
724  "ecmascript/elements.cpp",
725  "ecmascript/extractortool/src/source_map.cpp",
726  "ecmascript/frames.cpp",
727  "ecmascript/free_object.cpp",
728  "ecmascript/generator_helper.cpp",
729  "ecmascript/async_generator_helper.cpp",
730  "ecmascript/global_env.cpp",
731  "ecmascript/global_env_constants.cpp",
732  "ecmascript/ic/ic_runtime.cpp",
733  "ecmascript/ic/ic_compare_op.cpp",
734  "ecmascript/ic/invoke_cache.cpp",
735  "ecmascript/ic/profile_type_info.cpp",
736  "ecmascript/ic/property_box.cpp",
737  "ecmascript/ic/proto_change_details.cpp",
738  "ecmascript/interpreter/frame_handler.cpp",
739  "ecmascript/interpreter/interpreter.cpp",
740  "ecmascript/interpreter/interpreter_assembly.cpp",
741  "ecmascript/interpreter/interpreter-inl.cpp",
742  "ecmascript/interpreter/slow_runtime_stub.cpp",
743  "ecmascript/intl/locale_helper.cpp",
744  "ecmascript/jit/jit.cpp",
745  "ecmascript/jit/jit_dfx.cpp",
746  "ecmascript/jit/jit_task.cpp",
747  "ecmascript/jit/jit_thread.cpp",
748  "ecmascript/jit/jit_profiler.cpp",
749  "ecmascript/jobs/micro_job_queue.cpp",
750  "ecmascript/jspandafile/js_pandafile.cpp",
751  "ecmascript/jspandafile/js_pandafile_manager.cpp",
752  "ecmascript/jspandafile/class_info_extractor.cpp",
753  "ecmascript/jspandafile/debug_info_extractor.cpp",
754  "ecmascript/jspandafile/literal_data_extractor.cpp",
755  "ecmascript/jspandafile/accessor/module_data_accessor.cpp",
756  "ecmascript/jspandafile/panda_file_translator.cpp",
757  "ecmascript/jspandafile/js_pandafile_executor.cpp",
758  "ecmascript/jspandafile/scope_info_extractor.cpp",
759  "ecmascript/jspandafile/method_literal.cpp",
760  "ecmascript/jspandafile/program_object.cpp",
761  "ecmascript/js_api/js_api_arraylist.cpp",
762  "ecmascript/js_api/js_api_arraylist_iterator.cpp",
763  "ecmascript/js_api/js_api_bitvector.cpp",
764  "ecmascript/js_api/js_api_bitvector_iterator.cpp",
765  "ecmascript/js_api/js_api_deque.cpp",
766  "ecmascript/js_api/js_api_deque_iterator.cpp",
767  "ecmascript/js_api/js_api_hashmap.cpp",
768  "ecmascript/js_api/js_api_hashmap_iterator.cpp",
769  "ecmascript/js_api/js_api_hashset.cpp",
770  "ecmascript/js_api/js_api_hashset_iterator.cpp",
771  "ecmascript/js_api/js_api_lightweightmap.cpp",
772  "ecmascript/js_api/js_api_lightweightmap_iterator.cpp",
773  "ecmascript/js_api/js_api_lightweightset.cpp",
774  "ecmascript/js_api/js_api_lightweightset_iterator.cpp",
775  "ecmascript/js_api/js_api_linked_list.cpp",
776  "ecmascript/js_api/js_api_linked_list_iterator.cpp",
777  "ecmascript/js_api/js_api_list.cpp",
778  "ecmascript/js_api/js_api_list_iterator.cpp",
779  "ecmascript/js_api/js_api_plain_array.cpp",
780  "ecmascript/js_api/js_api_plain_array_iterator.cpp",
781  "ecmascript/js_api/js_api_queue.cpp",
782  "ecmascript/js_api/js_api_queue_iterator.cpp",
783  "ecmascript/js_api/js_api_stack.cpp",
784  "ecmascript/js_api/js_api_stack_iterator.cpp",
785  "ecmascript/js_api/js_api_tree_map.cpp",
786  "ecmascript/js_api/js_api_tree_map_iterator.cpp",
787  "ecmascript/js_api/js_api_tree_set.cpp",
788  "ecmascript/js_api/js_api_tree_set_iterator.cpp",
789  "ecmascript/js_api/js_api_vector.cpp",
790  "ecmascript/js_api/js_api_vector_iterator.cpp",
791  "ecmascript/js_arguments.cpp",
792  "ecmascript/js_array.cpp",
793  "ecmascript/shared_objects/js_shared_array.cpp",
794  "ecmascript/js_array_iterator.cpp",
795  "ecmascript/shared_objects/js_shared_array_iterator.cpp",
796  "ecmascript/js_arraybuffer.cpp",
797  "ecmascript/js_async_from_sync_iterator.cpp",
798  "ecmascript/js_async_function.cpp",
799  "ecmascript/js_bigint.cpp",
800  "ecmascript/js_dataview.cpp",
801  "ecmascript/js_date.cpp",
802  "ecmascript/js_for_in_iterator.cpp",
803  "ecmascript/js_finalization_registry.cpp",
804  "ecmascript/js_file_path.cpp",
805  "ecmascript/js_function.cpp",
806  "ecmascript/js_generator_object.cpp",
807  "ecmascript/js_async_generator_object.cpp",
808  "ecmascript/js_hclass.cpp",
809  "ecmascript/js_iterator.cpp",
810  "ecmascript/js_map.cpp",
811  "ecmascript/js_map_iterator.cpp",
812  "ecmascript/jsnapi_sendable.cpp",
813  "ecmascript/method.cpp",
814  "ecmascript/js_native_pointer.cpp",
815  "ecmascript/js_object.cpp",
816  "ecmascript/js_primitive_ref.cpp",
817  "ecmascript/js_promise.cpp",
818  "ecmascript/js_proxy.cpp",
819  "ecmascript/js_regexp_iterator.cpp",
820  "ecmascript/js_runtime_options.cpp",
821  "ecmascript/js_set.cpp",
822  "ecmascript/js_set_iterator.cpp",
823  "ecmascript/js_stable_array.cpp",
824  "ecmascript/js_string_iterator.cpp",
825  "ecmascript/js_tagged_value.cpp",
826  "ecmascript/js_thread.cpp",
827  "ecmascript/js_typed_array.cpp",
828  "ecmascript/js_weak_container.cpp",
829  "ecmascript/linked_hash_table.cpp",
830  "ecmascript/log.cpp",
831  "ecmascript/message_string.cpp",
832  "ecmascript/mem/assert_scope.cpp",
833  "ecmascript/mem/barriers.cpp",
834  "ecmascript/mem/c_string.cpp",
835  "ecmascript/mem/chunk.cpp",
836  "ecmascript/mem/dyn_chunk.cpp",
837  "ecmascript/mem/full_gc.cpp",
838  "ecmascript/mem/concurrent_marker.cpp",
839  "ecmascript/mem/concurrent_sweeper.cpp",
840  "ecmascript/mem/free_object_list.cpp",
841  "ecmascript/mem/free_object_set.cpp",
842  "ecmascript/mem/gc_stats.cpp",
843  "ecmascript/mem/idle_gc_trigger.cpp",
844  "ecmascript/mem/gc_key_stats.cpp",
845  "ecmascript/mem/heap.cpp",
846  "ecmascript/mem/heap_region_allocator.cpp",
847  "ecmascript/mem/incremental_marker.cpp",
848  "ecmascript/mem/linear_space.cpp",
849  "ecmascript/mem/machine_code.cpp",
850  "ecmascript/mem/mem_controller.cpp",
851  "ecmascript/mem/mem_map_allocator.cpp",
852  "ecmascript/mem/native_area_allocator.cpp",
853  "ecmascript/mem/parallel_evacuator.cpp",
854  "ecmascript/mem/parallel_marker.cpp",
855  "ecmascript/mem/partial_gc.cpp",
856  "ecmascript/mem/regexp_cached_chunk.cpp",
857  "ecmascript/mem/shared_heap/shared_concurrent_marker.cpp",
858  "ecmascript/mem/shared_heap/shared_concurrent_sweeper.cpp",
859  "ecmascript/mem/shared_heap/shared_gc.cpp",
860  "ecmascript/mem/shared_heap/shared_full_gc.cpp",
861  "ecmascript/mem/shared_heap/shared_gc_marker.cpp",
862  "ecmascript/mem/shared_heap/shared_space.cpp",
863  "ecmascript/mem/stw_young_gc.cpp",
864  "ecmascript/mem/space.cpp",
865  "ecmascript/mem/sparse_space.cpp",
866  "ecmascript/mem/thread_local_allocation_buffer.cpp",
867  "ecmascript/mem/verification.cpp",
868  "ecmascript/mem/work_space_chunk.cpp",
869  "ecmascript/mem/work_manager.cpp",
870  "ecmascript/mem/allocation_inspector.cpp",
871  "ecmascript/mem/jit_fort.cpp",
872  "ecmascript/module/js_module_manager.cpp",
873  "ecmascript/module/js_dynamic_import.cpp",
874  "ecmascript/module/js_module_namespace.cpp",
875  "ecmascript/module/js_module_source_text.cpp",
876  "ecmascript/module/js_module_deregister.cpp",
877  "ecmascript/module/js_shared_module.cpp",
878  "ecmascript/module/js_shared_module_manager.cpp",
879  "ecmascript/module/module_data_extractor.cpp",
880  "ecmascript/module/module_logger.cpp",
881  "ecmascript/module/module_manager_helper.cpp",
882  "ecmascript/module/module_path_helper.cpp",
883  "ecmascript/module/module_tools.cpp",
884  "ecmascript/module/napi_module_loader.cpp",
885  "ecmascript/mutator_lock.cpp",
886  "ecmascript/napi/jsnapi.cpp",
887  "ecmascript/napi/jsnapi_expo.cpp",
888  "ecmascript/object_factory.cpp",
889  "ecmascript/object_operator.cpp",
890  "ecmascript/patch/patch_loader.cpp",
891  "ecmascript/patch/quick_fix_manager.cpp",
892  "ecmascript/patch/quick_fix_helper.cpp",
893  "ecmascript/pgo_profiler/ap_file/pgo_file_info.cpp",
894  "ecmascript/pgo_profiler/pgo_profiler.cpp",
895  "ecmascript/pgo_profiler/pgo_profiler_decoder.cpp",
896  "ecmascript/pgo_profiler/pgo_profiler_encoder.cpp",
897  "ecmascript/pgo_profiler/pgo_profiler_info.cpp",
898  "ecmascript/pgo_profiler/pgo_profiler_layout.cpp",
899  "ecmascript/pgo_profiler/pgo_profiler_manager.cpp",
900  "ecmascript/pgo_profiler/pgo_utils.cpp",
901  "ecmascript/pgo_profiler/ap_file/pgo_method_type_set.cpp",
902  "ecmascript/pgo_profiler/types/pgo_profile_type.cpp",
903  "ecmascript/property_accessor.cpp",
904  "ecmascript/serializer/base_deserializer.cpp",
905  "ecmascript/serializer/base_serializer.cpp",
906  "ecmascript/serializer/value_serializer.cpp",
907  "ecmascript/shared_object_factory.cpp",
908  "ecmascript/shared_objects/js_shared_map.cpp",
909  "ecmascript/shared_objects/js_shared_map_iterator.cpp",
910  "ecmascript/shared_objects/js_shared_set.cpp",
911  "ecmascript/shared_objects/js_shared_set_iterator.cpp",
912  "ecmascript/shared_objects/js_sendable_arraybuffer.cpp",
913  "ecmascript/stackmap/ark_stackmap_builder.cpp",
914  "ecmascript/stackmap/ark_stackmap_parser.cpp",
915  "ecmascript/stackmap/litecg/litecg_stackmap_type.cpp",
916  "ecmascript/stackmap/llvm/llvm_stackmap_parser.cpp",
917  "ecmascript/stackmap/llvm/llvm_stackmap_type.cpp",
918  "ecmascript/sustaining_js_handle.cpp",
919  "ecmascript/taskpool/taskpool.cpp",
920  "ecmascript/taskpool/runner.cpp",
921  "ecmascript/taskpool/task_queue.cpp",
922  "ecmascript/layout_info.cpp",
923  "ecmascript/regexp/regexp_executor.cpp",
924  "ecmascript/regexp/regexp_opcode.cpp",
925  "ecmascript/regexp/regexp_parser.cpp",
926  "ecmascript/regexp/regexp_parser_cache.cpp",
927  "ecmascript/daemon/daemon_thread.cpp",
928  "ecmascript/runtime.cpp",
929  "ecmascript/runtime_lock.cpp",
930  "ecmascript/global_index_map.cpp",
931  "ecmascript/shared_mm/shared_mm.cpp",
932  "ecmascript/tagged_dictionary.cpp",
933  "ecmascript/tagged_hash_array.cpp",
934  "ecmascript/tagged_list.cpp",
935  "ecmascript/tagged_node.cpp",
936  "ecmascript/tagged_array.cpp",
937  "ecmascript/tagged_tree.cpp",
938  "ecmascript/template_string.cpp",
939  "ecmascript/vtable.cpp",
940  "ecmascript/waiter_list.cpp",
941  "ecmascript/weak_vector.cpp",
942  "ecmascript/stubs/runtime_stubs.cpp",
943  "ecmascript/stubs/test_runtime_stubs.cpp",
944  "ecmascript/builtins/builtins_cjs_module.cpp",
945  "ecmascript/builtins/builtins_cjs_require.cpp",
946  "ecmascript/builtins/builtins_cjs_exports.cpp",
947  "ecmascript/require/js_cjs_module_cache.cpp",
948  "ecmascript/require/js_cjs_module.cpp",
949  "ecmascript/require/js_require_manager.cpp",
950]
951
952hitrace_scope_source = []
953if (is_ohos && is_standard_system && enable_hitrace) {
954  hitrace_scope_source += [ "ecmascript/jobs/hitrace_scope.cpp" ]
955}
956
957ecma_debugger_source = [
958  "ecmascript/debugger/debugger_api.cpp",
959  "ecmascript/debugger/js_debugger.cpp",
960  "ecmascript/debugger/dropframe_manager.cpp",
961  "ecmascript/debugger/hot_reload_manager.cpp",
962]
963
964ecma_profiler_source = [ "ecmascript/napi/dfx_jsnapi.cpp" ]
965if (!is_mingw && !is_mac && target_os != "ios") {
966  if (ark_compile_mode == "debug") {
967    ecma_profiler_source += [
968      "ecmascript/dfx/cpu_profiler/cpu_profiler.cpp",
969      "ecmascript/dfx/cpu_profiler/sampling_processor.cpp",
970      "ecmascript/dfx/cpu_profiler/samples_record.cpp",
971      "ecmascript/dfx/hprof/file_stream.cpp",
972      "ecmascript/dfx/hprof/heap_profiler.cpp",
973      "ecmascript/dfx/hprof/heap_profiler_interface.cpp",
974      "ecmascript/dfx/hprof/heap_root_visitor.cpp",
975      "ecmascript/dfx/hprof/heap_sampling.cpp",
976      "ecmascript/dfx/hprof/heap_snapshot.cpp",
977      "ecmascript/dfx/hprof/heap_snapshot_json_serializer.cpp",
978      "ecmascript/dfx/hprof/heap_tracker.cpp",
979      "ecmascript/dfx/hprof/string_hashmap.cpp",
980      "ecmascript/dfx/stackinfo/js_stackgetter.cpp",
981      "ecmascript/base/block_hook_scope.cpp",
982      "ecmascript/dfx/tracing/tracing.cpp",
983    ]
984  }
985}
986
987ecma_profiler_source += [
988  "ecmascript/snapshot/mem/snapshot.cpp",
989  "ecmascript/snapshot/mem/snapshot_env.cpp",
990  "ecmascript/snapshot/mem/snapshot_processor.cpp",
991]
992
993ecma_stackinfo_source = []
994
995ecma_stackinfo_source = [
996  "ecmascript/extractortool/src/extractor.cpp",
997  "ecmascript/extractortool/src/file_mapper.cpp",
998  "ecmascript/extractortool/src/file_path_utils.cpp",
999  "ecmascript/extractortool/src/zip_file_reader_io.cpp",
1000  "ecmascript/extractortool/src/zip_file_reader_mem.cpp",
1001  "ecmascript/extractortool/src/zip_file_reader.cpp",
1002  "ecmascript/extractortool/src/zip_file.cpp",
1003]
1004
1005ecma_platform_source = []
1006
1007ecma_platform_source += [
1008  "ecmascript/platform/common/map.cpp",
1009  "ecmascript/platform/common/mutex.cpp",
1010  "ecmascript/platform/common/filesystem.cpp",
1011]
1012
1013config("include_llvm") {
1014  if (compile_llvm_online) {
1015    include_dirs = [
1016      "//third_party/third_party_llvm-project/build/include",
1017      "//third_party/third_party_llvm-project/llvm/include/",
1018    ]
1019  } else {
1020    if (is_mingw) {
1021      include_dirs = [
1022        "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts_windows/llvm/include",
1023        "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts_windows/build/include",
1024      ]
1025    } else if (is_mac || is_ios) {
1026      if (host_cpu == "arm64") {
1027        include_dirs = [
1028          "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts_darwin_arm64/llvm/include",
1029          "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts_darwin_arm64/build/include",
1030        ]
1031      } else {
1032        include_dirs = [
1033          "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts_darwin_x64/llvm/include",
1034          "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts_darwin_x64/build/include",
1035        ]
1036      }
1037    } else {
1038      if (host_cpu == "arm64" && host_os == "linux") {
1039        include_dirs = [
1040          "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts_linux_aarch64/llvm/include",
1041          "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts_linux_aarch64/build/include",
1042        ]
1043      } else {
1044        if (current_cpu == "arm64") {
1045          include_dirs = [
1046            "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts_aarch64/llvm/include",
1047            "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts_aarch64/build/include",
1048          ]
1049        } else {
1050          include_dirs = [
1051            "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts/llvm/include",
1052            "//prebuilts/ark_tools/ark_js_prebuilts/llvm_prebuilts/build/include",
1053          ]
1054        }
1055      }
1056    }
1057  }
1058  cflags_cc = [ "-DARK_GC_SUPPORT" ]
1059}
1060
1061if (is_mingw) {
1062  ecma_platform_source += [
1063    "ecmascript/platform/windows/backtrace.cpp",
1064    "ecmascript/platform/windows/map.cpp",
1065    "ecmascript/platform/windows/file.cpp",
1066    "ecmascript/platform/windows/os.cpp",
1067    "ecmascript/platform/windows/time.cpp",
1068    "ecmascript/platform/windows/log.cpp",
1069    "ecmascript/platform/windows/aot_crash_info.cpp",
1070  ]
1071} else {
1072  ecma_platform_source += [
1073    "ecmascript/platform/unix/file.cpp",
1074    "ecmascript/platform/unix/map.cpp",
1075    "ecmascript/platform/unix/time.cpp",
1076    "ecmascript/platform/unix/aot_crash_info.cpp",
1077  ]
1078  if (is_mac) {
1079    ecma_platform_source += [
1080      "ecmascript/platform/unix/mac/os.cpp",
1081      "ecmascript/platform/unix/mac/backtrace.cpp",
1082      "ecmascript/platform/unix/mac/log.cpp",
1083    ]
1084  } else if (target_os == "ios") {
1085    ecma_platform_source += [
1086      "ecmascript/platform/unix/mac/os.cpp",
1087      "ecmascript/platform/unix/mac/backtrace.cpp",
1088      "ecmascript/platform/common/log.cpp",
1089    ]
1090  } else if (is_ohos || target_os == "android") {
1091    ecma_platform_source += [
1092      "ecmascript/platform/unix/linux/os.cpp",
1093      "ecmascript/platform/unix/ohos/backtrace.cpp",
1094      "ecmascript/platform/common/log.cpp",
1095    ]
1096  } else if (is_linux) {
1097    ecma_platform_source += [
1098      "ecmascript/platform/unix/linux/os.cpp",
1099      "ecmascript/platform/unix/linux/backtrace.cpp",
1100      "ecmascript/platform/common/log.cpp",
1101    ]
1102  } else {
1103    print("Invalid os!")
1104    assert(false)
1105  }
1106}
1107
1108if (enable_target_compilation) {
1109  ecma_platform_source += [ "ecmascript/platform/unix/ohos/directory.cpp" ]
1110} else if (is_mingw) {
1111  ecma_platform_source += [ "ecmascript/platform/windows/directory.cpp" ]
1112} else {
1113  ecma_platform_source += [ "ecmascript/platform/unix/directory.cpp" ]
1114}
1115
1116libark_jsruntime_common_set("libark_jsruntime_set") {
1117}
1118
1119libark_jsruntime_common_set("libark_jsruntime_arm_set") {
1120  if (enable_sanitize) {
1121    sanitize = {
1122      ubsan = true
1123    }
1124  }
1125}
1126
1127libark_jsruntime_intl_common_set("libark_js_intl_set") {
1128}
1129
1130libark_jsruntime_intl_common_set("libark_js_intl_arm_set") {
1131  if (enable_sanitize) {
1132    sanitize = {
1133      ubsan = true
1134    }
1135  }
1136}
1137
1138config("ark_jsruntime_test_nolto") {
1139  cflags_cc = [ "-fno-lto" ]
1140}
1141
1142ohos_source_set("libark_jsruntime_test_set") {
1143  stack_protector_ret = false
1144  sources = ecma_source
1145  sources += intl_sources
1146  sources += ecma_profiler_source
1147  sources += ecma_debugger_source
1148  sources += hitrace_scope_source
1149  sources += ecma_platform_source
1150
1151  defines = [ "OHOS_UNIT_TEST" ]
1152
1153  if (is_ohos) {
1154    sources += ecma_stackinfo_source
1155  }
1156
1157  if (is_ohos && is_standard_system) {
1158    stub_an_file_path = "/system/lib64/${arkcompiler_relative_lib_path}/stub.an"
1159  } else {
1160    stub_an_file_path =
1161        rebase_path("$root_gen_dir/arkcompiler/ets_runtime/stub.an")
1162  }
1163  defines += [ "STUB_AN_FILE=\"${stub_an_file_path}\"" ]
1164
1165  deps = []
1166  external_deps = [ "zlib:libz" ]
1167  if (enable_hilog) {
1168    external_deps += [ "hilog:libhilog" ]
1169  }
1170
1171  if (defined(is_arkui_x) && is_arkui_x) {
1172    deps += [
1173      "$ark_third_party_root/icu/icu4c:static_icui18n",
1174      "$ark_third_party_root/icu/icu4c:static_icuuc",
1175    ]
1176  } else {
1177    external_deps += [
1178      "icu:shared_icui18n",
1179      "icu:shared_icuuc",
1180    ]
1181  }
1182
1183  if (enable_dump_in_faultlog) {
1184    external_deps += [ "libuv:uv" ]
1185  }
1186
1187  if (!is_arkui_x) {
1188    external_deps += [ "runtime_core:arkfile_header_deps" ]
1189  } else {
1190    deps += [ "$ark_root/libpandafile:arkfile_header_deps" ]
1191  }
1192
1193  if (enable_coverage) {
1194    ldflags = [ "--coverage" ]
1195    cflags_cc = [ "--coverage" ]
1196  }
1197
1198  if ((current_cpu == "amd64" || current_cpu == "x64" ||
1199       current_cpu == "x86_64" || current_cpu == "arm64") && !is_mingw &&
1200      !is_mac && target_os != "ios") {
1201    deps += [ "ecmascript/compiler:libark_stub_set" ]
1202  } else {
1203    deps += [ "$js_root/ecmascript/compiler:libark_mock_stub_set" ]
1204  }
1205
1206  if (enable_leak_check || is_asan) {
1207    defines += [ "ECMASCRIPT_ENABLE_HANDLE_LEAK_CHECK" ]
1208  }
1209
1210  public_configs = [ "$js_root:ark_jsruntime_public_config" ]
1211  public_configs += [ ":include_llvm" ]
1212
1213  configs = [
1214    "$js_root:ark_jsruntime_common_config",
1215    "$js_root:asm_interp_enable_config",
1216    "$js_root:icu_path_test_config",
1217    "$js_root:ark_jsruntime_test_nolto",
1218  ]
1219
1220  if (enable_target_compilation) {
1221    external_deps += [ "c_utils:utils" ]
1222  }
1223
1224  # hiviewdfx libraries
1225  external_deps += hiviewdfx_ext_deps
1226  deps += hiviewdfx_deps
1227  part_name = "ets_runtime"
1228  subsystem_name = "arkcompiler"
1229}
1230
1231ohos_source_set("libark_jsruntime_static") {
1232  stack_protector_ret = false
1233  if (enable_sanitize) {
1234    sanitize = {
1235      ubsan = true
1236    }
1237  }
1238
1239  deps = [
1240    ":libark_js_intl_arm_set",
1241    ":libark_jsruntime_arm_set",
1242  ]
1243  external_deps = []
1244  if (!is_arkui_x) {
1245    external_deps += [ "runtime_core:arkfile_header_deps" ]
1246  } else {
1247    deps += [ "$ark_root/libpandafile:arkfile_header_deps" ]
1248    all_dependent_configs = [ ":ark_jsruntime_public_config" ]
1249  }
1250
1251  public_configs = [ "$js_root:ark_jsruntime_public_config" ]
1252
1253  if (!is_ohos) {
1254    if ((current_cpu == "amd64" || current_cpu == "x64" ||
1255         current_cpu == "x86_64" || current_cpu == "arm64") && !is_mingw &&
1256        !is_mac && target_os != "ios") {
1257      deps += [ "ecmascript/compiler:libark_stub_set" ]
1258    } else {
1259      deps += [ "$js_root/ecmascript/compiler:libark_mock_stub_set" ]
1260    }
1261  }
1262  part_name = "ets_runtime"
1263  subsystem_name = "arkcompiler"
1264}
1265
1266ohos_shared_library("libark_jsruntime") {
1267  stack_protector_ret = false
1268  if (enable_sanitize) {
1269    sanitize = {
1270      ubsan = true
1271    }
1272  }
1273
1274  deps = [ ":libark_jsruntime_static" ]
1275  external_deps = []
1276  if (is_arkui_x && target_os == "ios") {
1277    deps += [ "$ark_third_party_root/bounds_checking_function:libsec_static" ]
1278  } else {
1279    external_deps += [ "bounds_checking_function:libsec_shared" ]
1280  }
1281
1282  if (!is_arkui_x) {
1283    external_deps += [ "runtime_core:libarkfile_static" ]
1284  } else {
1285    deps += [ "$ark_root/libpandafile:libarkfile_static" ]
1286  }
1287
1288  all_dependent_configs = [ ":ark_jsruntime_public_config" ]
1289  public_configs = [ ":ark_jsruntime_public_config" ]
1290
1291  if (is_ohos && is_standard_system && !is_debug) {
1292    version_script = "libark_jsruntime.map"
1293  }
1294
1295  # hiviewdfx libraries
1296  external_deps += hiviewdfx_ext_deps
1297  deps += hiviewdfx_deps
1298
1299  if (!enable_ark_intl) {
1300    external_deps += [ "i18n:intl_util" ]
1301  }
1302
1303  install_enable = true
1304
1305  if (!is_mingw && !is_mac) {
1306    output_extension = "so"
1307  }
1308  if (!is_standard_system) {
1309    relative_install_dir = "ark"
1310  }
1311
1312  if (target_os == "android" && !ark_standalone_build) {
1313    libs = [ "log" ]
1314    version_script = "libark_jsruntime.map"
1315  }
1316  if (ark_standalone_build || (defined(is_arkui_x) && is_arkui_x)) {
1317    deps += [
1318      "$ark_third_party_root/icu/icu4c:static_icui18n",
1319      "$ark_third_party_root/icu/icu4c:static_icuuc",
1320    ]
1321  } else {
1322    external_deps += [
1323      "icu:shared_icui18n",
1324      "icu:shared_icuuc",
1325    ]
1326  }
1327  innerapi_tags = [ "platformsdk_indirect" ]
1328  part_name = "ets_runtime"
1329  subsystem_name = "arkcompiler"
1330}
1331
1332ohos_shared_library("libark_jsruntime_test") {
1333  stack_protector_ret = false
1334  deps = [ ":libark_jsruntime_test_set" ]
1335  public_configs = [ "$js_root:ark_jsruntime_public_config" ]
1336  public_configs += [ ":include_llvm" ]
1337
1338  if (!ark_standalone_build) {
1339    public_external_deps = [
1340      "runtime_core:libarkfile_static",
1341      "zlib:libz",
1342    ]
1343  } else {
1344    external_deps = [
1345      "runtime_core:libarkfile_static",
1346      "zlib:libz",
1347    ]
1348  }
1349
1350  ldflags = []
1351  if (enable_coverage) {
1352    ldflags += [ "--coverage" ]
1353    cflags_cc = [ "--coverage" ]
1354  }
1355  if (!ark_standalone_build) {
1356    ldflags += [ "-Wl,--lto-O0" ]
1357  }
1358
1359  install_enable = false
1360  if (!is_mingw && !is_mac) {
1361    output_extension = "so"
1362  }
1363
1364  subsystem_name = "test"
1365}
1366
1367ohos_prebuilt_etc("app_aot_jit_enable_list") {
1368  relative_install_dir = "ark"
1369  if (ets_runtime_feature_enable_list) {
1370    source = "$js_root/ecmascript/ohos/app_aot_jit_enable_list.conf"
1371  } else {
1372    source = "$js_root/ecmascript/ohos/app_aot_jit_enable_list_default.conf"
1373  }
1374
1375  # Set the subsystem name
1376  part_name = "ets_runtime"
1377  subsystem_name = "arkcompiler"
1378}
1379
1380js_type_metadata_sources = [
1381  "ecmascript/js_type_metadata/accessor_data.json",
1382  "ecmascript/js_type_metadata/aot_literal_info.json",
1383  "ecmascript/js_type_metadata/async_generator_request.json",
1384  "ecmascript/js_type_metadata/async_iterator_record.json",
1385  "ecmascript/js_type_metadata/bigint.json",
1386  "ecmascript/js_type_metadata/byte_array.json",
1387  "ecmascript/js_type_metadata/cell_record.json",
1388  "ecmascript/js_type_metadata/class_info_extractor.json",
1389  "ecmascript/js_type_metadata/class_literal.json",
1390  "ecmascript/js_type_metadata/completion_record.json",
1391  "ecmascript/js_type_metadata/constant_pool.json",
1392  "ecmascript/js_type_metadata/constant_string.json",
1393  "ecmascript/js_type_metadata/cow_mutant_tagged_array.json",
1394  "ecmascript/js_type_metadata/cow_tagged_array.json",
1395  "ecmascript/js_type_metadata/dictionary_layout.json",
1396  "ecmascript/js_type_metadata/ecma_object.json",
1397  "ecmascript/js_type_metadata/ecma_string.json",
1398  "ecmascript/js_type_metadata/extra_profile_type_info.json",
1399  "ecmascript/js_type_metadata/function_template.json",
1400  "ecmascript/js_type_metadata/global_env.json",
1401  "ecmascript/js_type_metadata/hclass.json",
1402  "ecmascript/js_type_metadata/importentry_record.json",
1403  "ecmascript/js_type_metadata/indirect_exportentry_record.json",
1404  "ecmascript/js_type_metadata/internal_accessor.json",
1405  "ecmascript/js_type_metadata/js_aggregate_error.json",
1406  "ecmascript/js_type_metadata/js_api_array_list.json",
1407  "ecmascript/js_type_metadata/js_api_arraylist_iterator.json",
1408  "ecmascript/js_type_metadata/js_api_bitvector.json",
1409  "ecmascript/js_type_metadata/js_api_bitvector_iterator.json",
1410  "ecmascript/js_type_metadata/js_api_deque.json",
1411  "ecmascript/js_type_metadata/js_api_deque_iterator.json",
1412  "ecmascript/js_type_metadata/js_api_hash_map.json",
1413  "ecmascript/js_type_metadata/js_api_hash_set.json",
1414  "ecmascript/js_type_metadata/js_api_hashmap_iterator.json",
1415  "ecmascript/js_type_metadata/js_api_hashset_iterator.json",
1416  "ecmascript/js_type_metadata/js_api_light_weight_map.json",
1417  "ecmascript/js_type_metadata/js_api_light_weight_map_iterator.json",
1418  "ecmascript/js_type_metadata/js_api_light_weight_set.json",
1419  "ecmascript/js_type_metadata/js_api_light_weight_set_iterator.json",
1420  "ecmascript/js_type_metadata/js_api_linked_list.json",
1421  "ecmascript/js_type_metadata/js_api_linked_list_iterator.json",
1422  "ecmascript/js_type_metadata/js_api_list.json",
1423  "ecmascript/js_type_metadata/js_api_list_iterator.json",
1424  "ecmascript/js_type_metadata/js_api_plain_array.json",
1425  "ecmascript/js_type_metadata/js_api_plain_array_iterator.json",
1426  "ecmascript/js_type_metadata/js_api_queue.json",
1427  "ecmascript/js_type_metadata/js_api_queue_iterator.json",
1428  "ecmascript/js_type_metadata/js_api_stack.json",
1429  "ecmascript/js_type_metadata/js_api_stack_iterator.json",
1430  "ecmascript/js_type_metadata/js_api_tree_map.json",
1431  "ecmascript/js_type_metadata/js_api_tree_set.json",
1432  "ecmascript/js_type_metadata/js_api_treemap_iterator.json",
1433  "ecmascript/js_type_metadata/js_api_treeset_iterator.json",
1434  "ecmascript/js_type_metadata/js_api_vector.json",
1435  "ecmascript/js_type_metadata/js_api_vector_iterator.json",
1436  "ecmascript/js_type_metadata/js_arguments.json",
1437  "ecmascript/js_type_metadata/js_array.json",
1438  "ecmascript/js_type_metadata/js_array_buffer.json",
1439  "ecmascript/js_type_metadata/js_array_iterator.json",
1440  "ecmascript/js_type_metadata/js_async_await_status_function.json",
1441  "ecmascript/js_type_metadata/js_async_from_sync_iter_unwarp_function.json",
1442  "ecmascript/js_type_metadata/js_async_from_sync_iterator.json",
1443  "ecmascript/js_type_metadata/js_async_func_object.json",
1444  "ecmascript/js_type_metadata/js_async_function.json",
1445  "ecmascript/js_type_metadata/js_async_generator_function.json",
1446  "ecmascript/js_type_metadata/js_async_generator_object.json",
1447  "ecmascript/js_type_metadata/js_async_generator_resume_next.json",
1448  "ecmascript/js_type_metadata/js_async_module_fulfilled_function.json",
1449  "ecmascript/js_type_metadata/js_async_module_rejected_function.json",
1450  "ecmascript/js_type_metadata/js_asynciterator.json",
1451  "ecmascript/js_type_metadata/js_bigint64_array.json",
1452  "ecmascript/js_type_metadata/js_biguint64_array.json",
1453  "ecmascript/js_type_metadata/js_bound_function.json",
1454  "ecmascript/js_type_metadata/js_cjs_exports.json",
1455  "ecmascript/js_type_metadata/js_cjs_module.json",
1456  "ecmascript/js_type_metadata/js_cjs_require.json",
1457  "ecmascript/js_type_metadata/js_collator.json",
1458  "ecmascript/js_type_metadata/js_data_view.json",
1459  "ecmascript/js_type_metadata/js_date.json",
1460  "ecmascript/js_type_metadata/js_date_time_format.json",
1461  "ecmascript/js_type_metadata/js_displaynames.json",
1462  "ecmascript/js_type_metadata/js_error.json",
1463  "ecmascript/js_type_metadata/js_eval_error.json",
1464  "ecmascript/js_type_metadata/js_finalization_registry.json",
1465  "ecmascript/js_type_metadata/js_float32_array.json",
1466  "ecmascript/js_type_metadata/js_float64_array.json",
1467  "ecmascript/js_type_metadata/js_forin_iterator.json",
1468  "ecmascript/js_type_metadata/js_function.json",
1469  "ecmascript/js_type_metadata/js_function_base.json",
1470  "ecmascript/js_type_metadata/js_generator_context.json",
1471  "ecmascript/js_type_metadata/js_generator_function.json",
1472  "ecmascript/js_type_metadata/js_generator_object.json",
1473  "ecmascript/js_type_metadata/js_global_object.json",
1474  "ecmascript/js_type_metadata/js_int16_array.json",
1475  "ecmascript/js_type_metadata/js_int32_array.json",
1476  "ecmascript/js_type_metadata/js_int8_array.json",
1477  "ecmascript/js_type_metadata/js_intl.json",
1478  "ecmascript/js_type_metadata/js_intl_bound_function.json",
1479  "ecmascript/js_type_metadata/js_iterator.json",
1480  "ecmascript/js_type_metadata/js_list_format.json",
1481  "ecmascript/js_type_metadata/js_locale.json",
1482  "ecmascript/js_type_metadata/js_map.json",
1483  "ecmascript/js_type_metadata/js_map_iterator.json",
1484  "ecmascript/js_type_metadata/js_module_namespace.json",
1485  "ecmascript/js_type_metadata/js_native_pointer.json",
1486  "ecmascript/js_type_metadata/js_number_format.json",
1487  "ecmascript/js_type_metadata/js_object.json",
1488  "ecmascript/js_type_metadata/js_oom_error.json",
1489  "ecmascript/js_type_metadata/js_plural_rules.json",
1490  "ecmascript/js_type_metadata/js_primitive_ref.json",
1491  "ecmascript/js_type_metadata/js_promise.json",
1492  "ecmascript/js_type_metadata/js_promise_all_resolve_element_function.json",
1493  "ecmascript/js_type_metadata/js_promise_all_settled_element_function.json",
1494  "ecmascript/js_type_metadata/js_promise_any_reject_element_function.json",
1495  "ecmascript/js_type_metadata/js_promise_executor_function.json",
1496  "ecmascript/js_type_metadata/js_promise_finally_function.json",
1497  "ecmascript/js_type_metadata/js_promise_reactions_function.json",
1498  "ecmascript/js_type_metadata/js_promise_value_thunk_or_thrower_function.json",
1499  "ecmascript/js_type_metadata/js_proxy.json",
1500  "ecmascript/js_type_metadata/js_proxy_revoc_function.json",
1501  "ecmascript/js_type_metadata/js_range_error.json",
1502  "ecmascript/js_type_metadata/js_realm.json",
1503  "ecmascript/js_type_metadata/js_reference_error.json",
1504  "ecmascript/js_type_metadata/js_reg_exp.json",
1505  "ecmascript/js_type_metadata/js_reg_exp_iterator.json",
1506  "ecmascript/js_type_metadata/js_relative_time_format.json",
1507  "ecmascript/js_type_metadata/js_segment_iterator.json",
1508  "ecmascript/js_type_metadata/js_segmenter.json",
1509  "ecmascript/js_type_metadata/js_segments.json",
1510  "ecmascript/js_type_metadata/js_sendable_array_buffer.json",
1511  "ecmascript/js_type_metadata/js_set.json",
1512  "ecmascript/js_type_metadata/js_set_iterator.json",
1513  "ecmascript/js_type_metadata/js_shared_array.json",
1514  "ecmascript/js_type_metadata/js_shared_array_buffer.json",
1515  "ecmascript/js_type_metadata/js_shared_array_iterator.json",
1516  "ecmascript/js_type_metadata/js_shared_async_function.json",
1517  "ecmascript/js_type_metadata/js_shared_bigint64_array.json",
1518  "ecmascript/js_type_metadata/js_shared_biguint64_array.json",
1519  "ecmascript/js_type_metadata/js_shared_float32_array.json",
1520  "ecmascript/js_type_metadata/js_shared_float64_array.json",
1521  "ecmascript/js_type_metadata/js_shared_function.json",
1522  "ecmascript/js_type_metadata/js_shared_int16_array.json",
1523  "ecmascript/js_type_metadata/js_shared_int32_array.json",
1524  "ecmascript/js_type_metadata/js_shared_int8_array.json",
1525  "ecmascript/js_type_metadata/js_shared_map.json",
1526  "ecmascript/js_type_metadata/js_shared_map_iterator.json",
1527  "ecmascript/js_type_metadata/js_shared_object.json",
1528  "ecmascript/js_type_metadata/js_shared_set.json",
1529  "ecmascript/js_type_metadata/js_shared_set_iterator.json",
1530  "ecmascript/js_type_metadata/js_shared_typed_array.json",
1531  "ecmascript/js_type_metadata/js_shared_uint16_array.json",
1532  "ecmascript/js_type_metadata/js_shared_uint32_array.json",
1533  "ecmascript/js_type_metadata/js_shared_uint8_array.json",
1534  "ecmascript/js_type_metadata/js_shared_uint8_clamped_array.json",
1535  "ecmascript/js_type_metadata/js_string_iterator.json",
1536  "ecmascript/js_type_metadata/js_syntax_error.json",
1537  "ecmascript/js_type_metadata/js_termination_error.json",
1538  "ecmascript/js_type_metadata/js_type_error.json",
1539  "ecmascript/js_type_metadata/js_typed_array.json",
1540  "ecmascript/js_type_metadata/js_uint16_array.json",
1541  "ecmascript/js_type_metadata/js_uint32_array.json",
1542  "ecmascript/js_type_metadata/js_uint8_array.json",
1543  "ecmascript/js_type_metadata/js_uint8_clamped_array.json",
1544  "ecmascript/js_type_metadata/js_uri_error.json",
1545  "ecmascript/js_type_metadata/js_weak_map.json",
1546  "ecmascript/js_type_metadata/js_weak_ref.json",
1547  "ecmascript/js_type_metadata/js_weak_set.json",
1548  "ecmascript/js_type_metadata/lexical_env.json",
1549  "ecmascript/js_type_metadata/line_string.json",
1550  "ecmascript/js_type_metadata/linked_node.json",
1551  "ecmascript/js_type_metadata/local_exportentry_record.json",
1552  "ecmascript/js_type_metadata/machine_code_object.json",
1553  "ecmascript/js_type_metadata/marker_cell.json",
1554  "ecmascript/js_type_metadata/method.json",
1555  "ecmascript/js_type_metadata/micro_job_queue.json",
1556  "ecmascript/js_type_metadata/module_record.json",
1557  "ecmascript/js_type_metadata/mutant_tagged_array.json",
1558  "ecmascript/js_type_metadata/native_module_failure_info.json",
1559  "ecmascript/js_type_metadata/pending_job.json",
1560  "ecmascript/js_type_metadata/profile_type_info.json",
1561  "ecmascript/js_type_metadata/profile_type_info_cell_0.json",
1562  "ecmascript/js_type_metadata/profile_type_info_cell_1.json",
1563  "ecmascript/js_type_metadata/profile_type_info_cell_n.json",
1564  "ecmascript/js_type_metadata/program.json",
1565  "ecmascript/js_type_metadata/promise_capability.json",
1566  "ecmascript/js_type_metadata/promise_iterator_record.json",
1567  "ecmascript/js_type_metadata/promise_reactions.json",
1568  "ecmascript/js_type_metadata/promise_record.json",
1569  "ecmascript/js_type_metadata/property_box.json",
1570  "ecmascript/js_type_metadata/proto_change_marker.json",
1571  "ecmascript/js_type_metadata/prototype_handler.json",
1572  "ecmascript/js_type_metadata/prototype_info.json",
1573  "ecmascript/js_type_metadata/rb_treenode.json",
1574  "ecmascript/js_type_metadata/record.json",
1575  "ecmascript/js_type_metadata/resolvedbinding_record.json",
1576  "ecmascript/js_type_metadata/resolvedindexbinding_record.json",
1577  "ecmascript/js_type_metadata/resolvedrecordbinding_record.json",
1578  "ecmascript/js_type_metadata/resolvedrecordindexbinding_record.json",
1579  "ecmascript/js_type_metadata/resolving_functions_record.json",
1580  "ecmascript/js_type_metadata/sendable_env.json",
1581  "ecmascript/js_type_metadata/sliced_string.json",
1582  "ecmascript/js_type_metadata/source_text_module_record.json",
1583  "ecmascript/js_type_metadata/star_exportentry_record.json",
1584  "ecmascript/js_type_metadata/store_ts_handler.json",
1585  "ecmascript/js_type_metadata/symbol.json",
1586  "ecmascript/js_type_metadata/tagged_array.json",
1587  "ecmascript/js_type_metadata/tagged_dictionary.json",
1588  "ecmascript/js_type_metadata/tagged_node.json",
1589  "ecmascript/js_type_metadata/tagged_object.json",
1590  "ecmascript/js_type_metadata/template_map.json",
1591  "ecmascript/js_type_metadata/track_info.json",
1592  "ecmascript/js_type_metadata/trans_with_proto_handler.json",
1593  "ecmascript/js_type_metadata/transition_handler.json",
1594  "ecmascript/js_type_metadata/tree_string.json",
1595  "ecmascript/js_type_metadata/type_enums.json",
1596  "ecmascript/js_type_metadata/type_range.json",
1597  "ecmascript/js_type_metadata/vtable.json",
1598]
1599
1600action("gen_js_type_metadata") {
1601  inputs = js_type_metadata_sources
1602
1603  script = "$js_root/script/metadata_generate.py"
1604
1605  metadata_file_gen_dir = "$root_gen_dir/arkcompiler/ets_runtime"
1606
1607  args = [
1608    "--enum",
1609    rebase_path("$js_root/ecmascript/js_type_metadata/type_enums.json"),
1610    "--metadata",
1611    rebase_path("$js_root/ecmascript/js_type_metadata"),
1612    "--output",
1613    rebase_path("$metadata_file_gen_dir/metadata.json"),
1614    "--version",
1615    "1.0.0",
1616  ]
1617
1618  outputs = [ "$metadata_file_gen_dir/metadata.json" ]
1619}
1620
1621ohos_prebuilt_shared_library("js_type_metadata") {
1622  deps = [ ":gen_js_type_metadata" ]
1623  source = "$root_gen_dir/arkcompiler/ets_runtime/metadata.json"
1624
1625  relative_install_dir = arkcompiler_relative_lib_path
1626  part_name = "ets_runtime"
1627  subsystem_name = "arkcompiler"
1628}
1629