1# Copyright (c) 2021-2025 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//arkcompiler/runtime_core/static_core/ark_config.gni") 15import("$ark_root/plugins/plugins.gni") 16import("$ark_root/verification/verification.gni") 17 18if (ark_standalone_build) { 19 import("$build_root/ark.gni") 20} else { 21 import("//build/ohos.gni") 22} 23 24runtime_yaml = [ "runtime.yaml" ] 25if (enable_irtoc) { 26 runtime_yaml += [ "$ark_root/irtoc/intrinsics.yaml" ] 27} 28runtime_yaml += plugin_runtime_yamls 29 30config("arkruntime_public_config") { 31 include_dirs = [ 32 "$ark_root/runtime", 33 34 # The line below needed only for stdlib. It must be removed after stdlib separation from runtime is implemented(#18135). 35 "$ark_root/plugins/ets/runtime/ani/", 36 get_label_info( 37 "$ark_root/cross_values:cross_values_getters_generate(${default_toolchain})", 38 "target_gen_dir"), 39 "$target_gen_dir", 40 "$target_gen_dir/generated", 41 "$target_gen_dir/include", 42 ] 43 44 include_dirs += platform_include_dirs 45 46 if (ark_hybrid) { 47 include_dirs += [ "$ark_root/../common_interfaces" ] 48 cflags_cc = [ 49 "-Wno-gnu-anonymous-struct", 50 "-Wno-nested-anon-types", 51 ] 52 } 53 54 configs = [ 55 "$ark_root/libpandabase:arkbase_public_config", 56 "$ark_root/libpandafile:arkfile_public_config", 57 "$ark_root/verification/gen:verification_public_config", 58 "$ark_root/compiler:arkcompiler_public_config", 59 ] 60 configs += plugin_runtime_configs 61} 62 63if (!ark_static_standalone_build) { 64 ohos_shared_headers("runtime_headers") { 65 include_dirs = [ 66 "$ark_root/runtime", 67 "$ark_root/plugins/ets/runtime/ani/", 68 "$target_gen_dir", 69 "$target_gen_dir/generated", 70 "$target_gen_dir/include", 71 ] 72 include_dirs += [get_label_info("$ark_root/cross_values:cross_values_getters_generate(${default_toolchain})", "target_gen_dir")] 73 deps = ["$ark_root/cross_values:cross_values_getters_generate(${default_toolchain})"] 74 75 include_dirs += platform_include_dirs 76 77 part_name = ark_part_name 78 subsystem_name = "$ark_subsystem_name" 79 } 80} 81 82config("arkruntime_config") { 83 include_dirs = [ 84 "$ark_root/compiler", 85 "$ark_root/dprof/libdprof", 86 ] 87 if (ark_standalone_build) { 88 include_dirs += [ "//third_party/icu/icu4c/source" ] 89 } 90 91 cflags_cc = [ 92 "-Wno-invalid-offsetof", 93 "-Wno-unused-parameter", 94 ] 95 96 if (current_cpu == "arm64") { 97 asmflags = [ "-march=armv8-a+crc" ] 98 } 99 100 configs = [ 101 "$build_root/config/compiler:optimize_speed", 102 "$build_root/config/compiler:no_exceptions", 103 "$build_root/config/compiler:no_rtti", 104 ] 105} 106 107group("arkruntime_header_deps") { 108 deps = [ 109 ":arkruntime_gen_entrypoints_entrypoints_gen_S", 110 ":arkruntime_gen_entrypoints_entrypoints_gen_h", 111 ":arkruntime_gen_intrinsics_intrinsics_enum_h", 112 ":arkruntime_gen_intrinsics_intrinsics_gen_h", 113 ":arkruntime_gen_intrinsics_intrinsics_h", 114 ":arkruntime_gen_intrinsics_unimplemented_intrinsics-inl_cpp", 115 ":arkruntime_gen_intrinsics_yaml", 116 ":intrinsics_inl_h", 117 ":isa_gen_libarkruntime_interpreter-inl_gen_h", 118 ":isa_gen_libarkruntime_isa_constants_gen_h", 119 ":language_config_gen_inc", 120 ":libarkruntime_options_gen_h", 121 ":libarkruntime_shorty_values_h", 122 ":plugin_clear_profile_h", 123 ":plugin_destroy_profile_h", 124 ":plugin_dump_profile_h", 125 ":plugin_find_method_in_profile_h", 126 ":plugin_profiling_includes_disasm_h", 127 ":plugin_profiling_includes_h", 128 ":plugin_read_profile_h", 129 ":plugins_asm_defines_def", 130 ":plugins_defines_h", 131 ":plugins_entrypoints_gen_h", 132 ":plugins_inc", 133 ":plugins_interpreters_inl_h", 134 ":profiling_gen_profiling_gen_h", 135 ":substitute_icu_path", 136 "$ark_root/libpandabase:base_options_h", 137 "$ark_root/verification/gen:isa_gen_verification_gen_abs_int_inl_gen_h", 138 "$ark_root/verification/gen:isa_gen_verification_gen_cflow_iterate_inl_gen_h", 139 "$ark_root/verification/gen:isa_gen_verification_gen_handle_gen_h", 140 "$ark_root/verification/gen:isa_gen_verification_gen_job_fill_gen_h", 141 "$ark_root/verification/gen:verification_abs_int_inl_compat_checks_h", 142 "$ark_root/verification/gen:verification_gen_plugins_gen_inc", 143 "$ark_root/verification/gen:verification_verifier_messages_data_cpp", 144 "$ark_root/verification/gen:verification_verifier_messages_h", 145 ] 146 if (enable_irtoc) { 147 deps += [ ":isa_gen_libarkruntime_irtoc_interpreter_utils_h" ] 148 } 149 150 deps += plugin_arkruntime_header_plugin_deps 151} 152 153ohos_source_set("libarkruntime_set_static") { 154 sources = [ 155 "arch/asm_support.cpp", 156 "assert_gc_scope.cpp", 157 "bridge/bridge.cpp", 158 "cframe.cpp", 159 "cha.cpp", 160 "class.cpp", 161 "class_helper.cpp", 162 "class_initializer.cpp", 163 "class_linker.cpp", 164 "class_linker_extension.cpp", 165 "compiler.cpp", 166 "compiler_task_manager_worker.cpp", 167 "compiler_thread_pool_worker.cpp", 168 "coretypes/array.cpp", 169 "coretypes/string.cpp", 170 "coroutines/coroutine.cpp", 171 "coroutines/coroutine_events.cpp", 172 "coroutines/coroutine_manager.cpp", 173 "coroutines/coroutine_stats.cpp", 174 "coroutines/coroutine_worker.cpp", 175 "coroutines/priority_queue.cpp", 176 "coroutines/stackful_coroutine.cpp", 177 "coroutines/stackful_coroutine_manager.cpp", 178 "coroutines/stackful_coroutine_worker.cpp", 179 "coroutines/threaded_coroutine.cpp", 180 "coroutines/threaded_coroutine_manager.cpp", 181 "default_debugger_agent.cpp", 182 "deoptimization.cpp", 183 "entrypoints/entrypoints.cpp", 184 "exceptions.cpp", 185 "fibers/fiber_context.cpp", 186 "field.cpp", 187 "file_manager.cpp", 188 "gc_task.cpp", 189 "global_object_lock.cpp", 190 "handle_scope.cpp", 191 "hotreload/hotreload.cpp", 192 "imtable_builder.cpp", 193 "init_icu.cpp", 194 "interpreter/interpreter.cpp", 195 "interpreter/runtime_interface.cpp", 196 "intrinsics.cpp", 197 "jit/libprofile/pgo_file_builder.cpp", 198 "jit/profiling_loader.cpp", 199 "jit/profiling_saver.cpp", 200 "language_context.cpp", 201 "loadable_agent.cpp", 202 "lock_order_graph.cpp", 203 "locks.cpp", 204 "mark_word.cpp", 205 "mem/allocator.cpp", 206 "mem/gc/bitmap.cpp", 207 "mem/gc/card_table.cpp", 208 "mem/gc/epsilon-g1/epsilon-g1.cpp", 209 "mem/gc/epsilon/epsilon.cpp", 210 "mem/gc/epsilon/epsilon_barrier.cpp", 211 "mem/gc/g1/g1-allocator.cpp", 212 "mem/gc/g1/g1-gc.cpp", 213 "mem/gc/g1/g1-helpers.cpp", 214 "mem/gc/g1/g1_analytics.cpp", 215 "mem/gc/g1/g1_pause_tracker.cpp", 216 "mem/gc/g1/hot_cards.cpp", 217 "mem/gc/g1/ref_updater.cpp", 218 "mem/gc/g1/update_remset_task_queue.cpp", 219 "mem/gc/g1/update_remset_thread.cpp", 220 "mem/gc/g1/update_remset_worker.cpp", 221 "mem/gc/cmc-gc-adapter/cmc-allocator-adapter.cpp", 222 "mem/gc/cmc-gc-adapter/cmc-gc-adapter.cpp", 223 "mem/gc/gc-hung/gc_hung.cpp", 224 "mem/gc/gc.cpp", 225 "mem/gc/gc_adaptive_marking_stack.cpp", 226 "mem/gc/gc_barrier_set.cpp", 227 "mem/gc/gc_queue.cpp", 228 "mem/gc/gc_root.cpp", 229 "mem/gc/gc_root_type.cpp", 230 "mem/gc/gc_scope.cpp", 231 "mem/gc/gc_scoped_phase.cpp", 232 "mem/gc/gc_settings.cpp", 233 "mem/gc/gc_stats.cpp", 234 "mem/gc/gc_trigger.cpp", 235 "mem/gc/gen-gc/gen-gc.cpp", 236 "mem/gc/generational-gc-base.cpp", 237 "mem/gc/heap-space-misc/crossing_map.cpp", 238 "mem/gc/heap-space-misc/crossing_map_singleton.cpp", 239 "mem/gc/lang/gc_lang.cpp", 240 "mem/gc/stw-gc/stw-gc.cpp", 241 "mem/gc/workers/gc_worker.cpp", 242 "mem/gc/workers/gc_workers_task_pool.cpp", 243 "mem/gc/workers/gc_workers_task_queue.cpp", 244 "mem/gc/workers/gc_workers_thread_pool.cpp", 245 "mem/heap_manager.cpp", 246 "mem/heap_space.cpp", 247 "mem/heap_verifier.cpp", 248 "mem/internal_allocator.cpp", 249 "mem/mem_stats.cpp", 250 "mem/mem_stats_additional_info.cpp", 251 "mem/mem_stats_default.cpp", 252 "mem/memory_manager.cpp", 253 "mem/object_helpers.cpp", 254 "mem/panda_string.cpp", 255 "mem/refstorage/global_object_storage.cpp", 256 "mem/refstorage/ref_block.cpp", 257 "mem/refstorage/reference_storage.cpp", 258 "mem/region_space.cpp", 259 "mem/rendezvous.cpp", 260 "mem/runslots.cpp", 261 "mem/tlab.cpp", 262 "method.cpp", 263 "methodtrace/trace.cpp", 264 "monitor.cpp", 265 "monitor_object_lock.cpp", 266 "monitor_pool.cpp", 267 "mt_thread_manager.cpp", 268 "object_accessor.cpp", 269 "object_header.cpp", 270 "osr.cpp", 271 "panda_vm.cpp", 272 "plugins.cpp", 273 "profilesaver/profile_dump_info.cpp", 274 "profilesaver/profile_saver.cpp", 275 "regexp/ecmascript/mem/dyn_chunk.cpp", 276 "regexp/ecmascript/regexp_executor.cpp", 277 "regexp/ecmascript/regexp_opcode.cpp", 278 "regexp/ecmascript/regexp_parser.cpp", 279 "runtime.cpp", 280 "runtime_controller.cpp", 281 "runtime_helpers.cpp", 282 "stack_walker.cpp", 283 "string_table.cpp", 284 "thread.cpp", 285 "thread_proxy.cpp", 286 "time_utils.cpp", 287 "timing.cpp", 288 "tooling/backtrace/backtrace.cpp", 289 "tooling/debug_inf.cpp", 290 "tooling/debugger.cpp", 291 "tooling/evaluation/expression_loader.cpp", 292 "tooling/inspector/debugger_arkapi.cpp", 293 "tooling/pt_default_lang_extension.cpp", 294 "tooling/pt_thread.cpp", 295 "tooling/sampler/lock_free_queue.cpp", 296 "tooling/sampler/sample_writer.cpp", 297 "tooling/sampler/samples_record.cpp", 298 "tooling/sampler/sampling_profiler.cpp", 299 "tooling/sampler/stack_walker_base.cpp", 300 "tooling/sampler/thread_communicator.cpp", 301 "tooling/tools.cpp", 302 "vtable_builder_base.cpp", 303 ] 304 305 if (!is_mingw) { 306 sources += [ 307 "dprofiler/dprofiler.cpp", 308 "signal_handler.cpp", 309 ] 310 } 311 312 if (enable_irtoc) { 313 sources += [ "$ark_root_gen_dir/generated/irtoc_lib.o" ] 314 if (is_llvm_interpreter || is_llvm_fastpath) { 315 sources += [ "$ark_root_gen_dir/generated/irtoc_llvm_lib.o" ] 316 } 317 } 318 if (current_cpu == "arm") { 319 sources += [ 320 "arch/arm/interpreter_support.S", 321 "arch/arm/osr_arm.S", 322 "bridge/arch/arm/compiled_code_to_interpreter_bridge_arm.S", 323 "bridge/arch/arm/compiled_code_to_interpreter_bridge_dyn_arm.S", 324 "bridge/arch/arm/compiled_code_to_runtime_bridge_arm.S", 325 "bridge/arch/arm/deoptimization_arm.S", 326 "bridge/arch/arm/expand_compiled_code_args_dyn_arm.S", 327 "bridge/arch/arm/interpreter_to_compiled_code_bridge_arm.S", 328 "bridge/arch/arm/interpreter_to_compiled_code_bridge_dyn_arm.S", 329 "fibers/arch/arm/get.S", 330 "fibers/arch/arm/switch.S", 331 "fibers/arch/arm/update.S", 332 ] 333 #TODO add arm32 abi hard 334 } else if (current_cpu == "arm64") { 335 sources += [ 336 "arch/aarch64/interpreter_support.S", 337 "arch/aarch64/osr_aarch64.S", 338 "bridge/arch/aarch64/compiled_code_to_interpreter_bridge_aarch64.S", 339 "bridge/arch/aarch64/compiled_code_to_interpreter_bridge_dyn_aarch64.S", 340 "bridge/arch/aarch64/compiled_code_to_runtime_bridge_aarch64.S", 341 "bridge/arch/aarch64/deoptimization_aarch64.S", 342 "bridge/arch/aarch64/expand_compiled_code_args_dyn_aarch64.S", 343 "bridge/arch/aarch64/interpreter_to_compiled_code_bridge_aarch64.S", 344 "bridge/arch/aarch64/interpreter_to_compiled_code_bridge_dyn_aarch64.S", 345 "fibers/arch/aarch64/get.S", 346 "fibers/arch/aarch64/switch.S", 347 "fibers/arch/aarch64/update.S", 348 ] 349 } else if (current_cpu == "x86") { 350 sources += [ 351 "arch/x86/interpreter_support.S", 352 "arch/x86/osr_x86.S", 353 "bridge/arch/x86/compiled_code_to_interpreter_bridge_x86.S", 354 "bridge/arch/x86/deoptimization_x86.S", 355 "bridge/arch/x86/interpreter_to_compiled_code_bridge_x86.S", 356 ] 357 } else if (current_cpu == "amd64" || current_cpu == "x64" || 358 current_cpu == "x86_64") { 359 sources += [ 360 "arch/amd64/common_amd64.S", 361 "arch/amd64/interpreter_support.S", 362 "arch/amd64/osr_amd64.S", 363 "bridge/arch/amd64/compiled_code_to_interpreter_bridge_amd64.S", 364 "bridge/arch/amd64/compiled_code_to_interpreter_bridge_dyn_amd64.S", 365 "bridge/arch/amd64/compiled_code_to_runtime_bridge_amd64.S", 366 "bridge/arch/amd64/deoptimization_amd64.S", 367 "bridge/arch/amd64/expand_compiled_code_args_dyn_amd64.S", 368 "bridge/arch/amd64/interpreter_to_compiled_code_bridge_amd64.S", 369 "bridge/arch/amd64/interpreter_to_compiled_code_bridge_dyn_amd64.S", 370 "fibers/arch/amd64/get.S", 371 "fibers/arch/amd64/switch.S", 372 "fibers/arch/amd64/update.S", 373 ] 374 } 375 376 if (defined(enable_perf_counters)) { 377 sources += [ "tooling/perf_counter.cpp" ] 378 } 379 380 if (is_mob) { 381 sources += [ 382 "$ark_root/platforms/mobile/runtime/thread.cpp", 383 "$ark_root/platforms/mobile/runtime/verify_app_install.cpp", 384 ] 385 } else { 386 sources += [ 387 "$ark_root/platforms/common/runtime/thread.cpp", 388 "$ark_root/platforms/common/runtime/verify_app_install.cpp", 389 ] 390 } 391 392 core_vm_sources = [ 393 "core/core_class_linker_extension.cpp", 394 "core/core_language_context.cpp", 395 "core/core_vm.cpp", 396 ] 397 398 sources += core_vm_sources 399 sources += verifier_sources + plugin_verifier_sources 400 sources += plugin_runtime_sources 401 402 public_configs = [ 403 "$ark_root/assembler:arkassembler_public_config", 404 "$ark_root:ark_config", 405 "$ark_root/libpandabase:arkbase_public_config", 406 "$ark_root/libpandafile:arkfile_public_config", 407 "$ark_root/compiler:arkcompiler_public_config", 408 "$ark_root/verification/gen:verification_public_config", 409 ":arkruntime_public_config", 410 ":arkruntime_config", 411 "$ark_root/runtime/asm_defines:asmdefines_public_config", 412 ] 413 414 public_configs += plugin_runtime_configs 415 416 deps = [ 417 ":arkruntime_header_deps", 418 ":arkruntime_interpreter_impl", 419 "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_entrypoints_bridge_asm_macro_inl", 420 "$ark_root/compiler:libarkcompiler_intrinsics_gen_inl_intrinsics_enum_inl", 421 "$ark_root/compiler:libarktscompiler", 422 "$ark_root/compiler/aot:libarkaotmanager", 423 "$ark_root/cross_values:cross_values_getters_generate(${default_toolchain})", 424 "$ark_root/libpandabase:libarktsbase", 425 "$ark_root/libpandafile:libarkfile_type_gen_h", 426 "$ark_root/libpandafile:libarktsfile", 427 "$ark_root/libziparchive:libarktsziparchive", 428 "$ark_root/platforms/target_defaults:arktarget_options", 429 "$ark_root/runtime/asm_defines:asm_defines_generator", 430 ] 431 432 if (ark_static_standalone_build) { 433 public_configs += [ zlib_public_config ] 434 deps += [ 435 icui18n_dep, 436 zlib_dep, 437 ] 438 } 439 440 external_deps = [ 441 "napi:ace_napi", 442 icui18n_dep, 443 icuuc_dep, 444 sdk_libc_secshared_dep, 445 zlib_dep, 446 ] 447 448 if (!(ark_standalone_build || ark_static_standalone_build)) { 449 external_deps += [ "pcre2:libpcre2_static" ] 450 external_deps += [ "pcre2:libpcre2_static_16" ] 451 } else if (ark_standalone_build) { 452 deps += [ 453 "//third_party/pcre2:libpcre2_static", 454 "//third_party/pcre2:libpcre2_static_16", 455 ] 456 } else if (ark_static_standalone_build) { 457 deps += [ 458 ":libpcre2_16", 459 ":libpcre2_8", 460 ] 461 include_dirs = [ "$target_gen_dir/pcre2/common" ] 462 } 463 464 if (!ark_standalone_build) { 465 external_deps += [ "napi:ace_napi" ] 466 } 467 468 deps += plugin_runtime_deps 469 deps += plugin_arkruntime_stdlib_plugin_deps 470 471 if (!is_mingw) { 472 deps += [ "$ark_root/dprof:libdprof" ] 473 } 474 475 if (enable_irtoc) { 476 deps += [ "$ark_root/irtoc:irtoc_generate" ] 477 } 478 479 if (current_cpu == "arm") { 480 deps += [ 481 ":bridge_dispatch_arm", 482 ":bridge_dispatch_dyn_arm", 483 ] 484 } else if (current_cpu == "arm64") { 485 deps += [ 486 ":bridge_dispatch_aarch64", 487 ":bridge_dispatch_dyn_aarch64", 488 ] 489 } else if (current_cpu == "amd64" || current_cpu == "x64" || 490 current_cpu == "x86_64") { 491 deps += [ 492 ":bridge_dispatch_amd64", 493 ":bridge_dispatch_dyn_amd64", 494 ] 495 } 496 497 if (is_ohos && is_standard_system) { 498 defines = [ "PANDA_OHOS_USE_INNER_HILOG" ] 499 external_deps += [ 500 "hilog:libhilog", 501 "libuv:uv", 502 ] 503 } 504 505 part_name = ark_part_name 506 subsystem_name = ark_subsystem_name 507} 508 509ohos_static_library("libarkruntime_static") { 510 deps = [ ":libarkruntime_set_static" ] 511 output_extension = "a" 512 part_name = ark_part_name 513 subsystem_name = "$ark_subsystem_name" 514} 515 516config("ark_integrate_public_config") { 517 include_dirs = [ "$ark_root/plugins/ets/runtime/integrate" ] 518} 519 520ohos_shared_library("libarkruntime") { 521 public_configs = [ ":ark_integrate_public_config" ] 522 deps = [ ":libarkruntime_set_static" ] 523 524 if ((current_cpu == "amd64" || current_cpu == "x64" || 525 current_cpu == "x86_64") && (ark_standalone_build || ark_static_standalone_build)) { 526 ldflags = [ "-latomic" ] 527 } 528 529 if (is_mingw || is_mac) { 530 output_extension = "dll" 531 } else { 532 output_extension = "so" 533 } 534 part_name = ark_part_name 535 subsystem_name = "$ark_subsystem_name" 536} 537 538config("arkruntime_interpreter_impl_config") { 539 include_dirs = [ 540 "$ark_root/compiler", 541 "$ark_root/libpandabase", 542 "$ark_root/libpandafile", 543 "$ark_root/runtime", 544 "$ark_root/dprof/libdprof", 545 get_label_info( 546 "$ark_root/cross_values:cross_values_getters_generate(${default_toolchain})", 547 "target_gen_dir"), 548 "$target_gen_dir", 549 "$target_gen_dir/generated", 550 "$target_gen_dir/include", 551 ] 552 553 include_dirs += platform_include_dirs 554 555 configs = plugin_runtime_interpreter_impl_configs 556 557 cflags_cc = [ 558 "-Wno-invalid-offsetof", 559 "-Wno-unused-parameter", 560 ] 561 defines = [] 562 563 if (ark_enable_global_register_variables) { 564 if (current_cpu == "arm64") { 565 cflags_cc += [ 566 "-ffixed-x20", 567 "-ffixed-x21", 568 "-ffixed-x22", 569 "-ffixed-x23", 570 "-ffixed-x24", 571 "-ffixed-x25", 572 "-ffixed-x28", 573 ] 574 defines += [ "FFIXED_REGISTERS" ] 575 } 576 } 577} 578 579ohos_source_set("arkruntime_interpreter_impl_static") { 580 sources = [ "interpreter/interpreter_impl.cpp" ] 581 582 public_configs = [ 583 "$ark_root:ark_config", 584 "$ark_root/libpandabase:arkbase_public_config", 585 "$ark_root/libpandafile:arkfile_public_config", 586 "$ark_root/runtime:arkruntime_public_config", 587 "$ark_root/compiler:arkcompiler_public_config", 588 "$ark_root/verification/gen:verification_public_config", 589 ":arkruntime_interpreter_impl_config", 590 ] 591 592 deps = [ 593 ":arkruntime_header_deps", 594 "$ark_root/cross_values:cross_values_getters_generate(${default_toolchain})", 595 "$ark_root/libpandabase:libarktsbase", 596 "$ark_root/libpandafile:libarktsfile", 597 ] 598 599 external_deps = [ sdk_libc_secshared_dep ] 600 601 deps += plugin_arkruntime_stdlib_plugin_deps 602 603 part_name = ark_part_name 604 subsystem_name = "$ark_subsystem_name" 605} 606 607# panda_set_lib_32bit_property not used in android 608ohos_static_library("arkruntime_interpreter_impl") { 609 deps = [ ":arkruntime_interpreter_impl_static" ] 610 part_name = ark_part_name 611 subsystem_name = ark_subsystem_name 612} 613 614template("gen_intrinsics_yaml") { 615 assert(defined(invoker.data_files), "data_files required!") 616 assert(defined(invoker.output_file), "output_file required!") 617 618 data_files = string_join(",", rebase_path(invoker.data_files, root_build_dir)) 619 template_file = "templates/intrinsics.yaml.erb" 620 requires = string_join(",", 621 [ 622 rebase_path("templates/runtime.rb", root_build_dir), 623 rebase_path("$ark_root/libpandabase/utils.rb", 624 root_build_dir), 625 ]) 626 627 action("$target_name") { 628 script = "$ark_root/runtime/templates/gen_intrinsics_data.rb" 629 630 # rerun action when data file or template file update 631 inputs = [ template_file ] 632 inputs += invoker.data_files 633 634 outputs = [ invoker.output_file ] 635 args = [ 636 rebase_path("templates/runtime.rb", root_build_dir), 637 "-d", 638 data_files, 639 "-t", 640 rebase_path(template_file, root_build_dir), 641 "-o", 642 rebase_path(outputs[0]), 643 "-r", 644 requires, 645 ] 646 } 647} 648 649gen_intrinsics_yaml("arkruntime_gen_intrinsics_yaml") { 650 data_files = runtime_yaml 651 output_file = "$target_gen_dir/intrinsics.yaml" 652} 653 654gen_include_dir = "$target_gen_dir/include" 655 656ark_isa_gen("profiling_gen") { 657 template_files = [ "profiling_gen.h.erb" ] 658 sources = "profiling" 659 destination = "$target_gen_dir/runtime/include" 660} 661 662config("profiling_gen_public_config") { 663 include_dirs = 664 [ get_label_info(":profiling_gen_profiling_gen_h", "target_gen_dir") ] 665} 666 667if (!ark_static_standalone_build) { 668 ohos_shared_headers("runtime_gen_headers") { 669 include_dirs = [ get_label_info(":profiling_gen_profiling_gen_h", "target_gen_dir") ] 670 deps = [ ":profiling_gen_profiling_gen_h" ] 671 part_name = ark_part_name 672 subsystem_name = "$ark_subsystem_name" 673 } 674} 675 676ark_isa_gen("isa_gen_libarkruntime") { 677 template_files = [ 678 "interpreter-inl_gen.h.erb", 679 "isa_constants_gen.h.erb", 680 ] 681 if (enable_irtoc) { 682 template_files += [ "irtoc_interpreter_utils.h.erb" ] 683 } 684 sources = "interpreter/templates" 685 destination = gen_include_dir 686} 687 688isa = ark_isa_yaml 689isa_api = "$ark_root/isa/isapi.rb" 690bridge_dispatch_template = "templates/bridge_dispatch.S.erb" 691bridge_dispatch_dyn_template = "templates/bridge_dispatch_dyn.S.erb" 692bridge_archs = [ 693 "aarch64", 694 "arm", 695 "armhf", 696 "amd64", 697 "x86", 698] 699foreach(arch, bridge_archs) { 700 ark_gen_file("bridge_dispatch_${arch}") { 701 data = [ isa ] 702 template_file = bridge_dispatch_template 703 output_file = "$gen_include_dir/bridge_dispatch_${arch}.S" 704 api = [ isa_api ] 705 requires = [ 706 "templates/bridge_helpers_${arch}.rb", 707 "templates/bridge_helpers_common.rb", 708 "templates/bridge_helpers_static.rb", 709 ] 710 extra_dependencies = [ "$ark_root/isa:isa_combine" ] 711 } 712 713 ark_gen_file("bridge_dispatch_dyn_${arch}") { 714 data = [ isa ] 715 template_file = bridge_dispatch_dyn_template 716 output_file = "$gen_include_dir/bridge_dispatch_dyn_${arch}.S" 717 api = [ isa_api ] 718 requires = [ 719 "templates/bridge_helpers_dynamic.rb", 720 "templates/bridge_helpers_common.rb", 721 "templates/bridge_helpers_${arch}.rb", 722 ] 723 extra_dependencies = [ "$ark_root/isa:isa_combine" ] 724 } 725} 726 727ark_gen("arkruntime_gen_entrypoints") { 728 data = [ "$target_gen_dir/entrypoints.yaml" ] 729 template_files = [ 730 "entrypoints_gen.h.erb", 731 "entrypoints_gen.S.erb", 732 "entrypoints_compiler.inl.erb", 733 ] 734 api = [ "entrypoints/entrypoints.rb" ] 735 requires = [ "$ark_root/templates/common.rb" ] 736 sources = "entrypoints" 737 destination = "$target_gen_dir/generated" 738 extra_dependencies = [ "$ark_root:concat_entrypoints_yamls" ] 739} 740 741# Substitute ICU path 742action("substitute_icu_path") { 743 script = "templates/substitute_icu_path.rb" 744 outputs = [ "$target_gen_dir/init_icu_gen.cpp" ] 745 args = [ 746 rebase_path("templates/init_icu_gen.cpp.erb"), 747 rebase_path("$target_gen_dir/init_icu_gen.cpp"), 748 rebase_path(ark_third_party_root), 749 ] 750} 751 752ark_gen("arkruntime_gen_entrypoints_compiler_checksum") { 753 data = [ "entrypoints/entrypoints.yaml" ] 754 template_files = [ "entrypoints_compiler_checksum.inl.erb" ] 755 api = [ "entrypoints/entrypoints.rb" ] 756 sources = "entrypoints" 757 destination = "$target_gen_dir/generated" 758 extra_dependencies = 759 [ "$ark_root/cross_values:cross_values_generate(${default_toolchain})" ] 760 extra_argv = [ rebase_path( 761 get_label_info( 762 "$ark_root/cross_values:cross_values_generate(${default_toolchain})", 763 "target_gen_dir"), 764 root_build_dir) ] 765} 766 767ark_gen("arkruntime_gen_intrinsics") { 768 if (abckit_enable) { 769 data = [ "$target_gen_dir/abckit_intrinsics.yaml" ] 770 } else { 771 data = [ "$target_gen_dir/intrinsics.yaml" ] 772 } 773 template_files = [ 774 "intrinsics_gen.h.erb", 775 "intrinsics.h.erb", 776 "intrinsics_enum.h.erb", 777 "unimplemented_intrinsics-inl.cpp.erb", 778 ] 779 api = [ "templates/intrinsics.rb" ] 780 requires = [ "$ark_root/libpandabase/utils.rb" ] 781 sources = "templates" 782 destination = "$target_gen_dir" 783 extra_dependencies = [ ":arkruntime_gen_intrinsics_yaml" ] 784 if (abckit_enable) { 785 extra_dependencies += 786 [ "$ark_root/../libabckit/src:abckit_concat_intrinsics_yaml" ] 787 } 788} 789 790ark_gen_file("libarkruntime_options_gen_h") { 791 template_file = "../templates/options/options.h.erb" 792 data = [ "$target_gen_dir/../runtime_options.yaml" ] 793 api = [ "../templates/common.rb" ] 794 output_file = "$target_gen_dir/generated/runtime_options_gen.h" 795 extra_dependencies = [ "$ark_root:merge_runtime_options_yamls" ] 796} 797 798ark_gen_file("libarkruntime_shorty_values_h") { 799 template_file = "templates/shorty_values.h.erb" 800 data = [ "../libpandafile/types.yaml" ] 801 api = [ "../libpandafile/types.rb" ] 802 output_file = "$target_gen_dir/generated/shorty_values.h" 803} 804 805ark_gen_file("plugins_inc") { 806 extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] 807 template_file = "templates/plugins.inc.erb" 808 data = [ ark_plugin_options_yaml ] 809 api = [ "$ark_root/templates/plugin_options.rb" ] 810 output_file = "$target_gen_dir/plugins.inc" 811} 812 813ark_gen_file("plugins_entrypoints_gen_h") { 814 extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] 815 template_file = "entrypoints/plugins_entrypoints_gen.h.erb" 816 data = [ ark_plugin_options_yaml ] 817 api = [ "$ark_root/templates/plugin_options.rb" ] 818 output_file = "$target_gen_dir/plugins_entrypoints_gen.h" 819} 820 821ark_gen_file("plugins_interpreters_inl_h") { 822 extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] 823 template_file = "templates/plugins_interpreters-inl.h.erb" 824 data = [ ark_plugin_options_yaml ] 825 api = [ "$ark_root/templates/plugin_options.rb" ] 826 output_file = "$target_gen_dir/plugins_interpreters-inl.h" 827} 828 829ark_gen_file("language_config_gen_inc") { 830 extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] 831 template_file = "templates/language_config_gen.inc.erb" 832 data = [ ark_plugin_options_yaml ] 833 api = [ "$ark_root/templates/plugin_options.rb" ] 834 output_file = "$target_gen_dir/language_config_gen.inc" 835} 836 837ark_gen_file("intrinsics_inl_h") { 838 extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] 839 template_file = "templates/intrinsics.inl.h.erb" 840 data = [ ark_plugin_options_yaml ] 841 api = [ "$ark_root/templates/plugin_options.rb" ] 842 output_file = "$target_gen_dir/intrinsics.inl.h" 843} 844 845ark_gen_file("plugins_defines_h") { 846 extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] 847 template_file = "templates/plugins_defines.h.erb" 848 data = [ ark_plugin_options_yaml ] 849 api = [ "$ark_root/templates/plugin_options.rb" ] 850 output_file = "$target_gen_dir/plugins_defines.h" 851} 852 853ark_gen_file("plugins_asm_defines_def") { 854 extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] 855 template_file = "templates/plugins_asm_defines.def.erb" 856 data = [ ark_plugin_options_yaml ] 857 api = [ "$ark_root/templates/plugin_options.rb" ] 858 output_file = "$target_gen_dir/plugins_asm_defines.def" 859} 860 861generated_file("plugin_read_profile_h") { 862 outputs = [ "$target_gen_dir/profiling/generated/read_profile.h" ] 863 contents = plugin_read_profile_paths 864 output_conversion = "list lines" 865} 866generated_file("plugin_clear_profile_h") { 867 outputs = [ "$target_gen_dir/profiling/generated/clear_profile.h" ] 868 contents = plugin_clear_profile_paths 869 output_conversion = "list lines" 870} 871generated_file("plugin_destroy_profile_h") { 872 outputs = [ "$target_gen_dir/profiling/generated/destroy_profile.h" ] 873 contents = plugin_destroy_profile_paths 874 output_conversion = "list lines" 875} 876generated_file("plugin_dump_profile_h") { 877 outputs = [ "$target_gen_dir/profiling/generated/dump_profile.h" ] 878 contents = plugin_dump_profile_paths 879 output_conversion = "list lines" 880} 881generated_file("plugin_find_method_in_profile_h") { 882 outputs = [ "$target_gen_dir/profiling/generated/find_method_in_profile.h" ] 883 contents = plugin_find_method_in_profile_paths 884 output_conversion = "list lines" 885} 886generated_file("plugin_profiling_includes_disasm_h") { 887 outputs = 888 [ "$target_gen_dir/profiling/generated/profiling_includes_disasm.h" ] 889 contents = plugin_profiling_includes_disasm_paths 890 output_conversion = "list lines" 891} 892generated_file("plugin_profiling_includes_h") { 893 outputs = [ "$target_gen_dir/profiling/generated/profiling_includes.h" ] 894 contents = plugin_profiling_includes_paths 895 output_conversion = "list lines" 896} 897generated_file("get_profiling_any_type_h") { 898 outputs = [ "$target_gen_dir/profiling/generated/get_profiling_any_type.h" ] 899 contents = plugin_get_profiling_any_type_paths 900 output_conversion = "list lines" 901} 902 903# NOTE(kirillparshukov): move to third_party scripts 904# Used only in ark_static_standalone_build. For ohos build, use external_deps. 905if (ark_static_standalone_build) { 906 pcre2_lib_dir = "//third_party/pcre2/pcre2" 907 copy("pcre2_copy_config_h") { 908 sources = [ "$pcre2_lib_dir/src/config.h.generic" ] 909 outputs = [ "$target_gen_dir/pcre2/internal/config.h" ] 910 } 911 912 copy("pcre2_copy_pcre2_h") { 913 sources = [ "$pcre2_lib_dir/src/pcre2.h.generic" ] 914 outputs = [ "$target_gen_dir/pcre2/common/pcre2.h" ] 915 } 916 917 ohos_static_library("libpcre2_16") { 918 output_name = "libpcre2_16" 919 deps = [ 920 ":pcre2_copy_config_h", 921 ":pcre2_copy_pcre2_h", 922 ] 923 sources = [ 924 "$pcre2_lib_dir/src/pcre2_auto_possess.c", 925 "$pcre2_lib_dir/src/pcre2_compile.c", 926 "$pcre2_lib_dir/src/pcre2_config.c", 927 "$pcre2_lib_dir/src/pcre2_context.c", 928 "$pcre2_lib_dir/src/pcre2_convert.c", 929 "$pcre2_lib_dir/src/pcre2_dfa_match.c", 930 "$pcre2_lib_dir/src/pcre2_error.c", 931 "$pcre2_lib_dir/src/pcre2_extuni.c", 932 "$pcre2_lib_dir/src/pcre2_find_bracket.c", 933 "$pcre2_lib_dir/src/pcre2_jit_compile.c", 934 "$pcre2_lib_dir/src/pcre2_maketables.c", 935 "$pcre2_lib_dir/src/pcre2_match.c", 936 "$pcre2_lib_dir/src/pcre2_match_data.c", 937 "$pcre2_lib_dir/src/pcre2_newline.c", 938 "$pcre2_lib_dir/src/pcre2_ord2utf.c", 939 "$pcre2_lib_dir/src/pcre2_pattern_info.c", 940 "$pcre2_lib_dir/src/pcre2_script_run.c", 941 "$pcre2_lib_dir/src/pcre2_serialize.c", 942 "$pcre2_lib_dir/src/pcre2_string_utils.c", 943 "$pcre2_lib_dir/src/pcre2_study.c", 944 "$pcre2_lib_dir/src/pcre2_substitute.c", 945 "$pcre2_lib_dir/src/pcre2_substring.c", 946 "$pcre2_lib_dir/src/pcre2_tables.c", 947 "$pcre2_lib_dir/src/pcre2_ucd.c", 948 "$pcre2_lib_dir/src/pcre2_valid_utf.c", 949 "$pcre2_lib_dir/src/pcre2_xclass.c", 950 ] 951 include_dirs = [ 952 "$target_gen_dir/pcre2/common", 953 "$target_gen_dir/pcre2/internal", 954 ] 955 sources += [ "$pcre2_lib_dir/src/pcre2_chartables.c" ] 956 cflags = [ 957 "-D_GNU_SOURCE", 958 "-DHAVE_CONFIG_H", 959 "-DSUPPORT_PCRE2_16=1", 960 "-DSUPPORT_UNICODE=1", 961 "-DPCRE2_CODE_UNIT_WIDTH=16", 962 "-w", 963 ] 964 part_name = ark_part_name 965 subsystem_name = ark_subsystem_name 966 } 967 968 ohos_static_library("libpcre2_8") { 969 output_name = "libpcre2_8" 970 deps = [ 971 ":pcre2_copy_config_h", 972 ":pcre2_copy_pcre2_h", 973 ] 974 sources = [ 975 "$pcre2_lib_dir/src/pcre2_auto_possess.c", 976 "$pcre2_lib_dir/src/pcre2_chkdint.c", 977 "$pcre2_lib_dir/src/pcre2_compile.c", 978 "$pcre2_lib_dir/src/pcre2_config.c", 979 "$pcre2_lib_dir/src/pcre2_context.c", 980 "$pcre2_lib_dir/src/pcre2_convert.c", 981 "$pcre2_lib_dir/src/pcre2_dfa_match.c", 982 "$pcre2_lib_dir/src/pcre2_error.c", 983 "$pcre2_lib_dir/src/pcre2_extuni.c", 984 "$pcre2_lib_dir/src/pcre2_find_bracket.c", 985 "$pcre2_lib_dir/src/pcre2_jit_compile.c", 986 "$pcre2_lib_dir/src/pcre2_maketables.c", 987 "$pcre2_lib_dir/src/pcre2_match.c", 988 "$pcre2_lib_dir/src/pcre2_match_data.c", 989 "$pcre2_lib_dir/src/pcre2_newline.c", 990 "$pcre2_lib_dir/src/pcre2_ord2utf.c", 991 "$pcre2_lib_dir/src/pcre2_pattern_info.c", 992 "$pcre2_lib_dir/src/pcre2_script_run.c", 993 "$pcre2_lib_dir/src/pcre2_serialize.c", 994 "$pcre2_lib_dir/src/pcre2_string_utils.c", 995 "$pcre2_lib_dir/src/pcre2_study.c", 996 "$pcre2_lib_dir/src/pcre2_substitute.c", 997 "$pcre2_lib_dir/src/pcre2_substring.c", 998 "$pcre2_lib_dir/src/pcre2_tables.c", 999 "$pcre2_lib_dir/src/pcre2_ucd.c", 1000 "$pcre2_lib_dir/src/pcre2_valid_utf.c", 1001 "$pcre2_lib_dir/src/pcre2_xclass.c", 1002 ] 1003 include_dirs = [ 1004 "$target_gen_dir/pcre2/common", 1005 "$target_gen_dir/pcre2/internal", 1006 ] 1007 sources += [ "$pcre2_lib_dir/src/pcre2_chartables.c" ] 1008 cflags = [ 1009 "-D_GNU_SOURCE", 1010 "-DHAVE_CONFIG_H", 1011 "-DSUPPORT_PCRE2_8=1", 1012 "-DSUPPORT_UNICODE=1", 1013 "-DPCRE2_CODE_UNIT_WIDTH=8", 1014 "-w", 1015 ] 1016 part_name = ark_part_name 1017 subsystem_name = ark_subsystem_name 1018 } 1019} 1020