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