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