14514f5e3Sopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd.
24514f5e3Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
34514f5e3Sopenharmony_ci# you may not use this file except in compliance with the License.
44514f5e3Sopenharmony_ci# You may obtain a copy of the License at
54514f5e3Sopenharmony_ci#
64514f5e3Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
74514f5e3Sopenharmony_ci#
84514f5e3Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
94514f5e3Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
104514f5e3Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
114514f5e3Sopenharmony_ci# See the License for the specific language governing permissions and
124514f5e3Sopenharmony_ci# limitations under the License.
134514f5e3Sopenharmony_ci
144514f5e3Sopenharmony_ciimport("//arkcompiler/ets_runtime/js_runtime_config.gni")
154514f5e3Sopenharmony_ciif (defined(timeout)) {
164514f5e3Sopenharmony_ci  _timeout_ = timeout
174514f5e3Sopenharmony_ci} else {
184514f5e3Sopenharmony_ci  _timeout_ = 1200
194514f5e3Sopenharmony_ci}
204514f5e3Sopenharmony_ci
214514f5e3Sopenharmony_ciconfig("include_maple") {
224514f5e3Sopenharmony_ci  include_dirs = [
234514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_be/include/cg",
244514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_be/include/litecg",
254514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_be/cg/aarch64",
264514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_be/include/ad",
274514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_be/include/ad/target",
284514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_be/include/be/aarch64",
294514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_be/include/be",
304514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_driver/include",
314514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_driver/defs",
324514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_driver/defs/default",
334514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_util/include",
344514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/mpl2mpl/include",
354514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/mempool/include",
364514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_phase/include",
374514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_ir/include",
384514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_me/include",
394514f5e3Sopenharmony_ci  ]
404514f5e3Sopenharmony_ci  cflags_cc = [ "-Wno-gnu-zero-variadic-macro-arguments" ]
414514f5e3Sopenharmony_ci}
424514f5e3Sopenharmony_ci
434514f5e3Sopenharmony_cilibark_jsoptimizer_sources = [
444514f5e3Sopenharmony_ci  "access_object_stub_builder.cpp",
454514f5e3Sopenharmony_ci  "aot_compilation_env.cpp",
464514f5e3Sopenharmony_ci  "aot_compiler_preprocessor.cpp",
474514f5e3Sopenharmony_ci  "aot_compiler_stats.cpp",
484514f5e3Sopenharmony_ci  "argument_accessor.cpp",
494514f5e3Sopenharmony_ci  "array_bounds_check_elimination.cpp",
504514f5e3Sopenharmony_ci  "assembler/aarch64/assembler_aarch64.cpp",
514514f5e3Sopenharmony_ci  "assembler/aarch64/extend_assembler.cpp",
524514f5e3Sopenharmony_ci  "assembler/aarch64/macro_assembler_aarch64.cpp",
534514f5e3Sopenharmony_ci  "assembler/x64/assembler_x64.cpp",
544514f5e3Sopenharmony_ci  "assembler/x64/extended_assembler_x64.cpp",
554514f5e3Sopenharmony_ci  "assembler/x64/macro_assembler_x64.cpp",
564514f5e3Sopenharmony_ci  "assembler_module.cpp",
574514f5e3Sopenharmony_ci  "async_function_lowering.cpp",
584514f5e3Sopenharmony_ci  "base/depend_chain_helper.cpp",
594514f5e3Sopenharmony_ci  "baseline/baseline_assembler.cpp",
604514f5e3Sopenharmony_ci  "baseline/baseline_call_signature.cpp",
614514f5e3Sopenharmony_ci  "baseline/baseline_compiler.cpp",
624514f5e3Sopenharmony_ci  "baseline/baseline_stubs.cpp",
634514f5e3Sopenharmony_ci  "bc_call_signature.cpp",
644514f5e3Sopenharmony_ci  "builtins/builtins_array_stub_builder.cpp",
654514f5e3Sopenharmony_ci  "builtins/builtins_call_signature.cpp",
664514f5e3Sopenharmony_ci  "builtins/builtins_collator_stub_builder.cpp",
674514f5e3Sopenharmony_ci  "builtins/builtins_collection_stub_builder.cpp",
684514f5e3Sopenharmony_ci  "builtins/builtins_dataview_stub_builder.cpp",
694514f5e3Sopenharmony_ci  "builtins/builtins_function_stub_builder.cpp",
704514f5e3Sopenharmony_ci  "builtins/builtins_number_stub_builder.cpp",
714514f5e3Sopenharmony_ci  "builtins/builtins_object_stub_builder.cpp",
724514f5e3Sopenharmony_ci  "builtins/builtins_proxy_stub_builder.cpp",
734514f5e3Sopenharmony_ci  "builtins/builtins_reflect_stub_builder.cpp",
744514f5e3Sopenharmony_ci  "builtins/builtins_regexp_stub_builder.cpp",
754514f5e3Sopenharmony_ci  "builtins/builtins_string_stub_builder.cpp",
764514f5e3Sopenharmony_ci  "builtins/builtins_stubs.cpp",
774514f5e3Sopenharmony_ci  "builtins/builtins_typedarray_stub_builder.cpp",
784514f5e3Sopenharmony_ci  "builtins/containers_stub_builder.cpp",
794514f5e3Sopenharmony_ci  "builtins/linked_hashtable_stub_builder.cpp",
804514f5e3Sopenharmony_ci  "builtins_lowering.cpp",
814514f5e3Sopenharmony_ci  "bytecode_circuit_builder.cpp",
824514f5e3Sopenharmony_ci  "bytecode_info_collector.cpp",
834514f5e3Sopenharmony_ci  "bytecodes.cpp",
844514f5e3Sopenharmony_ci  "call_signature.cpp",
854514f5e3Sopenharmony_ci  "call_stub_builder.cpp",
864514f5e3Sopenharmony_ci  "circuit.cpp",
874514f5e3Sopenharmony_ci  "circuit_builder.cpp",
884514f5e3Sopenharmony_ci  "circuit_builder_helper.cpp",
894514f5e3Sopenharmony_ci  "codegen/llvm/aarch64/aarch64_builder.cpp",
904514f5e3Sopenharmony_ci  "codegen/llvm/llvm_codegen.cpp",
914514f5e3Sopenharmony_ci  "codegen/llvm/llvm_ir_builder.cpp",
924514f5e3Sopenharmony_ci  "codegen/llvm/x64/x64_builder.cpp",
934514f5e3Sopenharmony_ci  "combined_pass_visitor.cpp",
944514f5e3Sopenharmony_ci  "common_stubs.cpp",
954514f5e3Sopenharmony_ci  "compilation_driver.cpp",
964514f5e3Sopenharmony_ci  "compilation_env.cpp",
974514f5e3Sopenharmony_ci  "compiler_log.cpp",
984514f5e3Sopenharmony_ci  "constant_folding.cpp",
994514f5e3Sopenharmony_ci  "dead_code_elimination.cpp",
1004514f5e3Sopenharmony_ci  "debug_info.cpp",
1014514f5e3Sopenharmony_ci  "early_elimination.cpp",
1024514f5e3Sopenharmony_ci  "escape_analysis.cpp",
1034514f5e3Sopenharmony_ci  "escape_analysis_editor.cpp",
1044514f5e3Sopenharmony_ci  "file_generators.cpp",
1054514f5e3Sopenharmony_ci  "frame_states.cpp",
1064514f5e3Sopenharmony_ci  "gate.cpp",
1074514f5e3Sopenharmony_ci  "gate_accessor.cpp",
1084514f5e3Sopenharmony_ci  "graph_editor.cpp",
1094514f5e3Sopenharmony_ci  "graph_linearizer.cpp",
1104514f5e3Sopenharmony_ci  "hash_stub_builder.cpp",
1114514f5e3Sopenharmony_ci  "hcr_circuit_builder.cpp",
1124514f5e3Sopenharmony_ci  "hcr_gate_meta_data.cpp",
1134514f5e3Sopenharmony_ci  "ic_stub_builder.cpp",
1144514f5e3Sopenharmony_ci  "induction_variable_analysis.cpp",
1154514f5e3Sopenharmony_ci  "instruction_combine.cpp",
1164514f5e3Sopenharmony_ci  "interpreter_stub.cpp",
1174514f5e3Sopenharmony_ci  "ir_builder.cpp",
1184514f5e3Sopenharmony_ci  "ir_module.cpp",
1194514f5e3Sopenharmony_ci  "jit_compilation_env.cpp",
1204514f5e3Sopenharmony_ci  "jit_compiler.cpp",
1214514f5e3Sopenharmony_ci  "later_elimination.cpp",
1224514f5e3Sopenharmony_ci  "lcr_circuit_builder.cpp",
1234514f5e3Sopenharmony_ci  "lcr_gate_meta_data.cpp",
1244514f5e3Sopenharmony_ci  "lexical_env_specialization_pass.cpp",
1254514f5e3Sopenharmony_ci  "loop_analysis.cpp",
1264514f5e3Sopenharmony_ci  "loop_peeling.cpp",
1274514f5e3Sopenharmony_ci  "mcr_circuit_builder.cpp",
1284514f5e3Sopenharmony_ci  "mcr_gate_meta_data.cpp",
1294514f5e3Sopenharmony_ci  "mcr_lowering.cpp",
1304514f5e3Sopenharmony_ci  "native_inline_lowering.cpp",
1314514f5e3Sopenharmony_ci  "new_object_stub_builder.cpp",
1324514f5e3Sopenharmony_ci  "ntype_bytecode_lowering.cpp",
1334514f5e3Sopenharmony_ci  "ntype_hcr_lowering.cpp",
1344514f5e3Sopenharmony_ci  "number_speculative_lowering.cpp",
1354514f5e3Sopenharmony_ci  "number_speculative_retype.cpp",
1364514f5e3Sopenharmony_ci  "number_speculative_runner.cpp",
1374514f5e3Sopenharmony_ci  "operations_stub_builder.cpp",
1384514f5e3Sopenharmony_ci  "pass_manager.cpp",
1394514f5e3Sopenharmony_ci  "post_schedule.cpp",
1404514f5e3Sopenharmony_ci  "precompile_checker.cpp",
1414514f5e3Sopenharmony_ci  "profiler_stub_builder.cpp",
1424514f5e3Sopenharmony_ci  "range_analysis.cpp",
1434514f5e3Sopenharmony_ci  "range_guard.cpp",
1444514f5e3Sopenharmony_ci  "rt_call_signature.cpp",
1454514f5e3Sopenharmony_ci  "scheduler.cpp",
1464514f5e3Sopenharmony_ci  "share_gate_meta_data.cpp",
1474514f5e3Sopenharmony_ci  "slowpath_lowering.cpp",
1484514f5e3Sopenharmony_ci  "state_split_linearizer.cpp",
1494514f5e3Sopenharmony_ci  "string_builder_optimizer.cpp",
1504514f5e3Sopenharmony_ci  "stub.cpp",
1514514f5e3Sopenharmony_ci  "stub_builder.cpp",
1524514f5e3Sopenharmony_ci  "trampoline/aarch64/asm_interpreter_call.cpp",
1534514f5e3Sopenharmony_ci  "trampoline/aarch64/baseline_call.cpp",
1544514f5e3Sopenharmony_ci  "trampoline/aarch64/common_call.cpp",
1554514f5e3Sopenharmony_ci  "trampoline/aarch64/optimized_call.cpp",
1564514f5e3Sopenharmony_ci  "trampoline/aarch64/optimized_fast_call.cpp",
1574514f5e3Sopenharmony_ci  "trampoline/x64/asm_interpreter_call.cpp",
1584514f5e3Sopenharmony_ci  "trampoline/x64/baseline_call.cpp",
1594514f5e3Sopenharmony_ci  "trampoline/x64/common_call.cpp",
1604514f5e3Sopenharmony_ci  "trampoline/x64/optimized_call.cpp",
1614514f5e3Sopenharmony_ci  "trampoline/x64/optimized_fast_call.cpp",
1624514f5e3Sopenharmony_ci  "ts_hcr_opt_pass.cpp",
1634514f5e3Sopenharmony_ci  "ts_inline_lowering.cpp",
1644514f5e3Sopenharmony_ci  "type.cpp",
1654514f5e3Sopenharmony_ci  "type_inference/pgo_type_infer.cpp",
1664514f5e3Sopenharmony_ci  "type_info_accessors.cpp",
1674514f5e3Sopenharmony_ci  "typed_bytecode_lowering.cpp",
1684514f5e3Sopenharmony_ci  "typed_hcr_lowering.cpp",
1694514f5e3Sopenharmony_ci  "typed_native_inline_lowering.cpp",
1704514f5e3Sopenharmony_ci  "useless_gate_elimination.cpp",
1714514f5e3Sopenharmony_ci  "value_numbering.cpp",
1724514f5e3Sopenharmony_ci  "verifier.cpp",
1734514f5e3Sopenharmony_ci]
1744514f5e3Sopenharmony_ci
1754514f5e3Sopenharmony_ciconfig("libark_jsoptimizer_set_config") {
1764514f5e3Sopenharmony_ci  # Setting up IS_RELEASE_VERSION if compiling as release version
1774514f5e3Sopenharmony_ci  if (build_variant == "user") {
1784514f5e3Sopenharmony_ci    cflags_c = [ "-DIS_RELEASE_VERSION" ]
1794514f5e3Sopenharmony_ci    cflags_cc = [ "-DIS_RELEASE_VERSION" ]
1804514f5e3Sopenharmony_ci  }
1814514f5e3Sopenharmony_ci  libs = []
1824514f5e3Sopenharmony_ci  if (is_mingw) {
1834514f5e3Sopenharmony_ci    libs += [
1844514f5e3Sopenharmony_ci      "kernel32",
1854514f5e3Sopenharmony_ci      "shell32",
1864514f5e3Sopenharmony_ci      "uuid",
1874514f5e3Sopenharmony_ci      "advapi32",
1884514f5e3Sopenharmony_ci      "msvcrt",
1894514f5e3Sopenharmony_ci      "msvcrt-os",
1904514f5e3Sopenharmony_ci      "windowsapp",
1914514f5e3Sopenharmony_ci    ]
1924514f5e3Sopenharmony_ci  }
1934514f5e3Sopenharmony_ci}
1944514f5e3Sopenharmony_ci
1954514f5e3Sopenharmony_ciohos_source_set("libark_jsoptimizer_set") {
1964514f5e3Sopenharmony_ci  stack_protector_ret = false
1974514f5e3Sopenharmony_ci  sources = libark_jsoptimizer_sources
1984514f5e3Sopenharmony_ci  if (enable_local_code_sign) {
1994514f5e3Sopenharmony_ci    sources += [ "$js_root/ecmascript/platform/unix/ohos/code_sign.cpp" ]
2004514f5e3Sopenharmony_ci  } else if (is_mingw) {
2014514f5e3Sopenharmony_ci    sources += [ "$js_root/ecmascript/platform/windows/code_sign.cpp" ]
2024514f5e3Sopenharmony_ci  } else {
2034514f5e3Sopenharmony_ci    sources += [ "$js_root/ecmascript/platform/unix/code_sign.cpp" ]
2044514f5e3Sopenharmony_ci  }
2054514f5e3Sopenharmony_ci  public_configs = [
2064514f5e3Sopenharmony_ci    "$js_root:include_llvm",
2074514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_compiler_config",
2084514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_public_config",
2094514f5e3Sopenharmony_ci    ":libark_jsoptimizer_set_config",
2104514f5e3Sopenharmony_ci  ]
2114514f5e3Sopenharmony_ci
2124514f5e3Sopenharmony_ci  external_deps = [ "zlib:libz" ]
2134514f5e3Sopenharmony_ci  deps = []
2144514f5e3Sopenharmony_ci  if (!is_arkui_x) {
2154514f5e3Sopenharmony_ci    external_deps += [ "runtime_core:arkfile_header_deps" ]
2164514f5e3Sopenharmony_ci  } else {
2174514f5e3Sopenharmony_ci    deps += [ "$ark_root/libpandafile:arkfile_header_deps" ]
2184514f5e3Sopenharmony_ci  }
2194514f5e3Sopenharmony_ci  deps += [ "${LLVM_LIB_ROOT}:libark_llvmcodegen_set" ]
2204514f5e3Sopenharmony_ci
2214514f5e3Sopenharmony_ci  # hiviewdfx libraries
2224514f5e3Sopenharmony_ci  external_deps += hiviewdfx_ext_deps
2234514f5e3Sopenharmony_ci  deps += hiviewdfx_deps
2244514f5e3Sopenharmony_ci
2254514f5e3Sopenharmony_ci  part_name = "ets_runtime"
2264514f5e3Sopenharmony_ci  subsystem_name = "arkcompiler"
2274514f5e3Sopenharmony_ci}
2284514f5e3Sopenharmony_ci
2294514f5e3Sopenharmony_ciconfig("enable_maple_config") {
2304514f5e3Sopenharmony_ci  cflags_cc = [ "-DCOMPILE_MAPLE" ]
2314514f5e3Sopenharmony_ci  cflags_c = [ "-DCOMPILE_MAPLE" ]
2324514f5e3Sopenharmony_ci}
2334514f5e3Sopenharmony_ci
2344514f5e3Sopenharmony_ciohos_source_set("libark_jsoptimizer_set_with_maple") {
2354514f5e3Sopenharmony_ci  stack_protector_ret = false
2364514f5e3Sopenharmony_ci  if (enable_sanitize) {
2374514f5e3Sopenharmony_ci    sanitize = {
2384514f5e3Sopenharmony_ci      cfi = true
2394514f5e3Sopenharmony_ci      cfi_cross_dso = true
2404514f5e3Sopenharmony_ci      debug = false
2414514f5e3Sopenharmony_ci    }
2424514f5e3Sopenharmony_ci    branch_protector_ret = "pac_ret"
2434514f5e3Sopenharmony_ci  }
2444514f5e3Sopenharmony_ci  sources = libark_jsoptimizer_sources
2454514f5e3Sopenharmony_ci  if (enable_local_code_sign) {
2464514f5e3Sopenharmony_ci    sources += [ "$js_root/ecmascript/platform/unix/ohos/code_sign.cpp" ]
2474514f5e3Sopenharmony_ci  } else if (is_mingw) {
2484514f5e3Sopenharmony_ci    sources += [ "$js_root/ecmascript/platform/windows/code_sign.cpp" ]
2494514f5e3Sopenharmony_ci  } else {
2504514f5e3Sopenharmony_ci    sources += [ "$js_root/ecmascript/platform/unix/code_sign.cpp" ]
2514514f5e3Sopenharmony_ci  }
2524514f5e3Sopenharmony_ci  if (enable_jit_code_sign) {
2534514f5e3Sopenharmony_ci    sources += [ "$js_root/ecmascript/compiler/jit_signcode.cpp" ]
2544514f5e3Sopenharmony_ci  }
2554514f5e3Sopenharmony_ci  sources += [
2564514f5e3Sopenharmony_ci    "codegen/maple/litecg_codegen.cpp",
2574514f5e3Sopenharmony_ci    "codegen/maple/litecg_ir_builder.cpp",
2584514f5e3Sopenharmony_ci  ]
2594514f5e3Sopenharmony_ci  public_configs = [
2604514f5e3Sopenharmony_ci    "$js_root:include_llvm",
2614514f5e3Sopenharmony_ci    ":include_maple",
2624514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_compiler_config",
2634514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_public_config",
2644514f5e3Sopenharmony_ci    ":libark_jsoptimizer_set_config",
2654514f5e3Sopenharmony_ci    ":enable_maple_config",
2664514f5e3Sopenharmony_ci  ]
2674514f5e3Sopenharmony_ci
2684514f5e3Sopenharmony_ci  defines = []
2694514f5e3Sopenharmony_ci  external_deps = [ "zlib:libz" ]
2704514f5e3Sopenharmony_ci
2714514f5e3Sopenharmony_ci  if (enable_jit_code_sign) {
2724514f5e3Sopenharmony_ci    defines += [ "JIT_ENABLE_CODE_SIGN" ]
2734514f5e3Sopenharmony_ci    external_deps += [ "code_signature:libjit_code_sign" ]
2744514f5e3Sopenharmony_ci    if (disable_fort_switch) {
2754514f5e3Sopenharmony_ci      defines += [ "JIT_FORT_DISABLE" ]
2764514f5e3Sopenharmony_ci    }
2774514f5e3Sopenharmony_ci  }
2784514f5e3Sopenharmony_ci
2794514f5e3Sopenharmony_ci  if (enable_litecg_emit) {
2804514f5e3Sopenharmony_ci    defines += [ "ARK_LITECG_DEBUG" ]
2814514f5e3Sopenharmony_ci  }
2824514f5e3Sopenharmony_ci
2834514f5e3Sopenharmony_ci  deps = []
2844514f5e3Sopenharmony_ci  if (is_ohos) {
2854514f5e3Sopenharmony_ci    deps += [ "${LLVM_LIB_ROOT}:libark_llvmcodegen" ]
2864514f5e3Sopenharmony_ci  } else {
2874514f5e3Sopenharmony_ci    deps += [ "${LLVM_LIB_ROOT}:libark_llvmcodegen_set" ]
2884514f5e3Sopenharmony_ci  }
2894514f5e3Sopenharmony_ci  if (!is_arkui_x) {
2904514f5e3Sopenharmony_ci    external_deps += [ "runtime_core:arkfile_header_deps" ]
2914514f5e3Sopenharmony_ci  } else {
2924514f5e3Sopenharmony_ci    deps += [ "$ark_root/libpandafile:arkfile_header_deps" ]
2934514f5e3Sopenharmony_ci  }
2944514f5e3Sopenharmony_ci
2954514f5e3Sopenharmony_ci  # hiviewdfx libraries
2964514f5e3Sopenharmony_ci  external_deps += hiviewdfx_ext_deps
2974514f5e3Sopenharmony_ci
2984514f5e3Sopenharmony_ci  part_name = "ets_runtime"
2994514f5e3Sopenharmony_ci  subsystem_name = "arkcompiler"
3004514f5e3Sopenharmony_ci}
3014514f5e3Sopenharmony_ci
3024514f5e3Sopenharmony_ciohos_source_set("libark_stub_set") {
3034514f5e3Sopenharmony_ci  stack_protector_ret = false
3044514f5e3Sopenharmony_ci  if (enable_sanitize) {
3054514f5e3Sopenharmony_ci    sanitize = {
3064514f5e3Sopenharmony_ci      ubsan = true
3074514f5e3Sopenharmony_ci    }
3084514f5e3Sopenharmony_ci  }
3094514f5e3Sopenharmony_ci  deps = [ ":build_stub_to_cpp" ]
3104514f5e3Sopenharmony_ci
3114514f5e3Sopenharmony_ci  sources = [ "$root_gen_dir/arkcompiler/ets_runtime/stub_an.cpp" ]
3124514f5e3Sopenharmony_ci
3134514f5e3Sopenharmony_ci  public_configs = [
3144514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_common_config",
3154514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_public_config",
3164514f5e3Sopenharmony_ci  ]
3174514f5e3Sopenharmony_ci
3184514f5e3Sopenharmony_ci  part_name = "ets_runtime"
3194514f5e3Sopenharmony_ci  subsystem_name = "arkcompiler"
3204514f5e3Sopenharmony_ci}
3214514f5e3Sopenharmony_ci
3224514f5e3Sopenharmony_ciohos_source_set("libark_mock_stub_set") {
3234514f5e3Sopenharmony_ci  stack_protector_ret = false
3244514f5e3Sopenharmony_ci  sources = [ "mock/mock_stub_an.cpp" ]
3254514f5e3Sopenharmony_ci
3264514f5e3Sopenharmony_ci  public_configs = [
3274514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_common_config",
3284514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_public_config",
3294514f5e3Sopenharmony_ci  ]
3304514f5e3Sopenharmony_ci}
3314514f5e3Sopenharmony_ci
3324514f5e3Sopenharmony_ciohos_shared_library("libark_jsoptimizer") {
3334514f5e3Sopenharmony_ci  stack_protector_ret = false
3344514f5e3Sopenharmony_ci  if (enable_sanitize) {
3354514f5e3Sopenharmony_ci    sanitize = {
3364514f5e3Sopenharmony_ci      cfi = true
3374514f5e3Sopenharmony_ci      cfi_cross_dso = true
3384514f5e3Sopenharmony_ci      debug = false
3394514f5e3Sopenharmony_ci      ubsan = true
3404514f5e3Sopenharmony_ci    }
3414514f5e3Sopenharmony_ci    branch_protector_ret = "pac_ret"
3424514f5e3Sopenharmony_ci  }
3434514f5e3Sopenharmony_ci  deps = [
3444514f5e3Sopenharmony_ci    ":libark_jsoptimizer_set_with_maple",
3454514f5e3Sopenharmony_ci    "$js_root:libark_jsruntime",
3464514f5e3Sopenharmony_ci    "${MAPLEALL_ROOT}/maple_be:libcg",
3474514f5e3Sopenharmony_ci  ]
3484514f5e3Sopenharmony_ci
3494514f5e3Sopenharmony_ci  external_deps = [ "bounds_checking_function:libsec_shared" ]
3504514f5e3Sopenharmony_ci  if (!is_arkui_x) {
3514514f5e3Sopenharmony_ci    external_deps += [ "runtime_core:libarkfile_static" ]
3524514f5e3Sopenharmony_ci  } else {
3534514f5e3Sopenharmony_ci    deps += [ "$ark_root/libpandafile:libarkfile_static" ]
3544514f5e3Sopenharmony_ci  }
3554514f5e3Sopenharmony_ci
3564514f5e3Sopenharmony_ci  defines = []
3574514f5e3Sopenharmony_ci  if (run_with_asan) {
3584514f5e3Sopenharmony_ci    defines = [ "RUN_WITH_ASAN" ]
3594514f5e3Sopenharmony_ci  }
3604514f5e3Sopenharmony_ci  if (enable_jit_code_sign) {
3614514f5e3Sopenharmony_ci    defines += [ "JIT_ENABLE_CODE_SIGN" ]
3624514f5e3Sopenharmony_ci  }
3634514f5e3Sopenharmony_ci
3644514f5e3Sopenharmony_ci  if (enable_hilog) {
3654514f5e3Sopenharmony_ci    external_deps += [ "hilog:libhilog" ]
3664514f5e3Sopenharmony_ci  }
3674514f5e3Sopenharmony_ci
3684514f5e3Sopenharmony_ci  install_enable = true
3694514f5e3Sopenharmony_ci
3704514f5e3Sopenharmony_ci  if (!is_mingw && !is_mac) {
3714514f5e3Sopenharmony_ci    output_extension = "so"
3724514f5e3Sopenharmony_ci  }
3734514f5e3Sopenharmony_ci  part_name = "ets_runtime"
3744514f5e3Sopenharmony_ci  subsystem_name = "arkcompiler"
3754514f5e3Sopenharmony_ci}
3764514f5e3Sopenharmony_ci
3774514f5e3Sopenharmony_ciohos_executable("ark_stub_compiler") {
3784514f5e3Sopenharmony_ci  sources = [ "stub_compiler.cpp" ]
3794514f5e3Sopenharmony_ci  include_dirs = [ "$target_gen_dir" ]
3804514f5e3Sopenharmony_ci
3814514f5e3Sopenharmony_ci  configs = [
3824514f5e3Sopenharmony_ci    "$js_root:include_llvm",
3834514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_compiler_config",
3844514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_public_config",
3854514f5e3Sopenharmony_ci  ]
3864514f5e3Sopenharmony_ci
3874514f5e3Sopenharmony_ci  deps = [
3884514f5e3Sopenharmony_ci    ":libark_jsoptimizer_set",
3894514f5e3Sopenharmony_ci    ":libark_mock_stub_set",
3904514f5e3Sopenharmony_ci    "$js_root:libark_js_intl_set",
3914514f5e3Sopenharmony_ci    "$js_root:libark_jsruntime_set",
3924514f5e3Sopenharmony_ci  ]
3934514f5e3Sopenharmony_ci  external_deps = [ "zlib:libz" ]
3944514f5e3Sopenharmony_ci  if (!is_arkui_x) {
3954514f5e3Sopenharmony_ci    external_deps += [ "runtime_core:libarkfile_static" ]
3964514f5e3Sopenharmony_ci  } else {
3974514f5e3Sopenharmony_ci    deps += [ "$ark_root/libpandafile:libarkfile_static" ]
3984514f5e3Sopenharmony_ci  }
3994514f5e3Sopenharmony_ci
4004514f5e3Sopenharmony_ci  if (!ark_standalone_build && host_os != "mac") {
4014514f5e3Sopenharmony_ci    ldflags = [ "-Wl,--lto-O0" ]
4024514f5e3Sopenharmony_ci  }
4034514f5e3Sopenharmony_ci
4044514f5e3Sopenharmony_ci  if (run_with_asan) {
4054514f5e3Sopenharmony_ci    defines = [ "RUN_WITH_ASAN" ]
4064514f5e3Sopenharmony_ci  }
4074514f5e3Sopenharmony_ci
4084514f5e3Sopenharmony_ci  if (defined(is_arkui_x) && is_arkui_x) {
4094514f5e3Sopenharmony_ci    deps += [
4104514f5e3Sopenharmony_ci      "$ark_third_party_root/icu/icu4c:static_icui18n",
4114514f5e3Sopenharmony_ci      "$ark_third_party_root/icu/icu4c:static_icuuc",
4124514f5e3Sopenharmony_ci    ]
4134514f5e3Sopenharmony_ci  } else {
4144514f5e3Sopenharmony_ci    external_deps += [
4154514f5e3Sopenharmony_ci      "icu:shared_icui18n",
4164514f5e3Sopenharmony_ci      "icu:shared_icuuc",
4174514f5e3Sopenharmony_ci    ]
4184514f5e3Sopenharmony_ci  }
4194514f5e3Sopenharmony_ci
4204514f5e3Sopenharmony_ci  install_enable = false
4214514f5e3Sopenharmony_ci  part_name = "ets_runtime"
4224514f5e3Sopenharmony_ci  subsystem_name = "arkcompiler"
4234514f5e3Sopenharmony_ci}
4244514f5e3Sopenharmony_ci
4254514f5e3Sopenharmony_ciohos_executable("ark_aot_compiler") {
4264514f5e3Sopenharmony_ci  if (enable_sanitize) {
4274514f5e3Sopenharmony_ci    sanitize = {
4284514f5e3Sopenharmony_ci      ubsan = true
4294514f5e3Sopenharmony_ci    }
4304514f5e3Sopenharmony_ci  }
4314514f5e3Sopenharmony_ci  sources = [ "aot_compiler.cpp" ]
4324514f5e3Sopenharmony_ci  configs = [
4334514f5e3Sopenharmony_ci    "$js_root:include_llvm",
4344514f5e3Sopenharmony_ci    ":include_maple",
4354514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_compiler_config",
4364514f5e3Sopenharmony_ci    "$js_root:ark_jsruntime_public_config",
4374514f5e3Sopenharmony_ci  ]
4384514f5e3Sopenharmony_ci
4394514f5e3Sopenharmony_ci  deps = [ ":libark_mock_stub_set" ]
4404514f5e3Sopenharmony_ci
4414514f5e3Sopenharmony_ci  if (is_ohos) {
4424514f5e3Sopenharmony_ci    deps += [
4434514f5e3Sopenharmony_ci      ":libark_jsoptimizer",
4444514f5e3Sopenharmony_ci      "$js_root:libark_jsruntime",
4454514f5e3Sopenharmony_ci    ]
4464514f5e3Sopenharmony_ci  } else {
4474514f5e3Sopenharmony_ci    deps += [
4484514f5e3Sopenharmony_ci      ":libark_jsoptimizer_set_with_maple",
4494514f5e3Sopenharmony_ci      "$js_root:libark_js_intl_set",
4504514f5e3Sopenharmony_ci      "$js_root:libark_jsruntime_set",
4514514f5e3Sopenharmony_ci      "${MAPLEALL_ROOT}/maple_be:libcg",
4524514f5e3Sopenharmony_ci    ]
4534514f5e3Sopenharmony_ci  }
4544514f5e3Sopenharmony_ci
4554514f5e3Sopenharmony_ci  external_deps = [ "zlib:libz" ]
4564514f5e3Sopenharmony_ci  if (!is_arkui_x) {
4574514f5e3Sopenharmony_ci    external_deps += [
4584514f5e3Sopenharmony_ci      "runtime_core:arkfile_header_deps",
4594514f5e3Sopenharmony_ci      "runtime_core:libarkbase_static",
4604514f5e3Sopenharmony_ci      "runtime_core:libarkfile_static",
4614514f5e3Sopenharmony_ci    ]
4624514f5e3Sopenharmony_ci  } else {
4634514f5e3Sopenharmony_ci    deps += [
4644514f5e3Sopenharmony_ci      "$ark_root/libpandabase:libarkbase_static",
4654514f5e3Sopenharmony_ci      "$ark_root/libpandafile:arkfile_header_deps",
4664514f5e3Sopenharmony_ci      "$ark_root/libpandafile:libarkfile_static",
4674514f5e3Sopenharmony_ci    ]
4684514f5e3Sopenharmony_ci  }
4694514f5e3Sopenharmony_ci
4704514f5e3Sopenharmony_ci  if (defined(is_arkui_x) && is_arkui_x) {
4714514f5e3Sopenharmony_ci    deps += [
4724514f5e3Sopenharmony_ci      "$ark_third_party_root/icu/icu4c:static_icui18n",
4734514f5e3Sopenharmony_ci      "$ark_third_party_root/icu/icu4c:static_icuuc",
4744514f5e3Sopenharmony_ci    ]
4754514f5e3Sopenharmony_ci  } else {
4764514f5e3Sopenharmony_ci    external_deps += [
4774514f5e3Sopenharmony_ci      "icu:shared_icui18n",
4784514f5e3Sopenharmony_ci      "icu:shared_icuuc",
4794514f5e3Sopenharmony_ci    ]
4804514f5e3Sopenharmony_ci  }
4814514f5e3Sopenharmony_ci
4824514f5e3Sopenharmony_ci  # hiviewdfx libraries
4834514f5e3Sopenharmony_ci  external_deps += hiviewdfx_ext_deps
4844514f5e3Sopenharmony_ci  deps += hiviewdfx_deps
4854514f5e3Sopenharmony_ci
4864514f5e3Sopenharmony_ci  install_enable = true
4874514f5e3Sopenharmony_ci
4884514f5e3Sopenharmony_ci  part_name = "ets_runtime"
4894514f5e3Sopenharmony_ci  subsystem_name = "arkcompiler"
4904514f5e3Sopenharmony_ci}
4914514f5e3Sopenharmony_ci
4924514f5e3Sopenharmony_ciaction("gen_stub_file") {
4934514f5e3Sopenharmony_ci  script = "$js_root/script/run_ark_executable.py"
4944514f5e3Sopenharmony_ci
4954514f5e3Sopenharmony_ci  deps = [ "$js_root/ecmascript/compiler:ark_stub_compiler(${host_toolchain})" ]
4964514f5e3Sopenharmony_ci
4974514f5e3Sopenharmony_ci  stub_file_gen_dir = "$root_gen_dir/arkcompiler/ets_runtime"
4984514f5e3Sopenharmony_ci  root_out_dir_with_host_toolchain =
4994514f5e3Sopenharmony_ci      get_label_info(":ark_stub_compiler(${host_toolchain})", "root_out_dir")
5004514f5e3Sopenharmony_ci
5014514f5e3Sopenharmony_ci  if (current_toolchain == host_toolchain) {
5024514f5e3Sopenharmony_ci    stub_option = " --stub-file=" + rebase_path(stub_file_gen_dir) + "/stub.an"
5034514f5e3Sopenharmony_ci  } else if (current_cpu == "x86_64") {
5044514f5e3Sopenharmony_ci    stub_option =
5054514f5e3Sopenharmony_ci        " --stub-file=" + rebase_path(stub_file_gen_dir) + "/stub.an" +
5064514f5e3Sopenharmony_ci        " --compiler-target-triple=x86_64-unknown-linux-gnu"
5074514f5e3Sopenharmony_ci  } else {
5084514f5e3Sopenharmony_ci    stub_option =
5094514f5e3Sopenharmony_ci        " --stub-file=" + rebase_path(stub_file_gen_dir) + "/stub.an" +
5104514f5e3Sopenharmony_ci        " --compiler-target-triple=aarch64-unknown-linux-gnu" +
5114514f5e3Sopenharmony_ci        " --compiler-log=allasm" + " --log-level=info"
5124514f5e3Sopenharmony_ci  }
5134514f5e3Sopenharmony_ci
5144514f5e3Sopenharmony_ci  if (host_cpu == "arm64") {
5154514f5e3Sopenharmony_ci    llvm_lib_dir = "//prebuilts/clang/ohos/linux-aarch64/llvm/lib/"
5164514f5e3Sopenharmony_ci  } else {
5174514f5e3Sopenharmony_ci    llvm_lib_dir = "//prebuilts/clang/ohos/linux-x86_64/llvm/lib/"
5184514f5e3Sopenharmony_ci  }
5194514f5e3Sopenharmony_ci
5204514f5e3Sopenharmony_ci  args = [
5214514f5e3Sopenharmony_ci    "--script-file",
5224514f5e3Sopenharmony_ci    rebase_path(root_out_dir_with_host_toolchain) +
5234514f5e3Sopenharmony_ci        "/arkcompiler/ets_runtime/ark_stub_compiler",
5244514f5e3Sopenharmony_ci    "--script-options",
5254514f5e3Sopenharmony_ci    stub_option,
5264514f5e3Sopenharmony_ci    "--expect-output",
5274514f5e3Sopenharmony_ci    "0",
5284514f5e3Sopenharmony_ci    "--timeout-limit",
5294514f5e3Sopenharmony_ci    "${_timeout_}",
5304514f5e3Sopenharmony_ci    "--env-path",
5314514f5e3Sopenharmony_ci    rebase_path(root_out_dir_with_host_toolchain) +
5324514f5e3Sopenharmony_ci        "/arkcompiler/ets_runtime:" +
5334514f5e3Sopenharmony_ci        rebase_path(root_out_dir_with_host_toolchain) +
5344514f5e3Sopenharmony_ci        "/${icu_subsystem_name}/${icu_part_name}:" +
5354514f5e3Sopenharmony_ci        rebase_path(root_out_dir_with_host_toolchain) + "/thirdparty/zlib:" +
5364514f5e3Sopenharmony_ci        rebase_path(root_out_dir_with_host_toolchain) +
5374514f5e3Sopenharmony_ci        "/resourceschedule/frame_aware_sched:" +
5384514f5e3Sopenharmony_ci        rebase_path(root_out_dir_with_host_toolchain) + "/hiviewdfx/hilog:" +
5394514f5e3Sopenharmony_ci        rebase_path(root_out_dir_with_host_toolchain) +
5404514f5e3Sopenharmony_ci        "/thirdparty/bounds_checking_function:" + rebase_path(llvm_lib_dir),
5414514f5e3Sopenharmony_ci  ]
5424514f5e3Sopenharmony_ci  outputs = [ "$stub_file_gen_dir/stub.an" ]
5434514f5e3Sopenharmony_ci  if (is_ohos) {
5444514f5e3Sopenharmony_ci    outputs += [ "$stub_file_gen_dir/stub_code_comment.txt" ]
5454514f5e3Sopenharmony_ci  }
5464514f5e3Sopenharmony_ci}
5474514f5e3Sopenharmony_ci
5484514f5e3Sopenharmony_ciohos_prebuilt_shared_library("stub.an") {
5494514f5e3Sopenharmony_ci  deps = [ ":gen_stub_file" ]
5504514f5e3Sopenharmony_ci  source = "$root_gen_dir/arkcompiler/ets_runtime/stub.an"
5514514f5e3Sopenharmony_ci
5524514f5e3Sopenharmony_ci  relative_install_dir = arkcompiler_relative_lib_path
5534514f5e3Sopenharmony_ci  part_name = "ets_runtime"
5544514f5e3Sopenharmony_ci  subsystem_name = "arkcompiler"
5554514f5e3Sopenharmony_ci}
5564514f5e3Sopenharmony_ci
5574514f5e3Sopenharmony_ciaction("build_stub_to_cpp") {
5584514f5e3Sopenharmony_ci  sources = [ "$root_gen_dir/arkcompiler/ets_runtime/stub.an" ]
5594514f5e3Sopenharmony_ci
5604514f5e3Sopenharmony_ci  script = "$js_root/script/build_resource_to_cpp.py"
5614514f5e3Sopenharmony_ci
5624514f5e3Sopenharmony_ci  deps = [ ":gen_stub_file" ]
5634514f5e3Sopenharmony_ci
5644514f5e3Sopenharmony_ci  args = [
5654514f5e3Sopenharmony_ci    "--input",
5664514f5e3Sopenharmony_ci    rebase_path("$root_gen_dir/arkcompiler/ets_runtime/stub.an"),
5674514f5e3Sopenharmony_ci    "--output",
5684514f5e3Sopenharmony_ci    rebase_path("$root_gen_dir/arkcompiler/ets_runtime/stub_an.cpp"),
5694514f5e3Sopenharmony_ci  ]
5704514f5e3Sopenharmony_ci
5714514f5e3Sopenharmony_ci  outputs = [ "$root_gen_dir/arkcompiler/ets_runtime/stub_an.cpp" ]
5724514f5e3Sopenharmony_ci}
573