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