15f9996aaSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd. 25f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 35f9996aaSopenharmony_ci# you may not use this file except in compliance with the License. 45f9996aaSopenharmony_ci# You may obtain a copy of the License at 55f9996aaSopenharmony_ci# 65f9996aaSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 75f9996aaSopenharmony_ci# 85f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 95f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 105f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 115f9996aaSopenharmony_ci# See the License for the specific language governing permissions and 125f9996aaSopenharmony_ci# limitations under the License. 135f9996aaSopenharmony_ci 145f9996aaSopenharmony_ciimport("//build/config/python.gni") 155f9996aaSopenharmony_ciimport("//build/config/sanitizers/sanitizers.gni") 165f9996aaSopenharmony_ciimport("//build/ohos_var.gni") 175f9996aaSopenharmony_ci 185f9996aaSopenharmony_ci# Gen module info to file 195f9996aaSopenharmony_ci# private template 205f9996aaSopenharmony_ci# 215f9996aaSopenharmony_citemplate("generate_module_info") { 225f9996aaSopenharmony_ci assert(defined(invoker.module_name), 235f9996aaSopenharmony_ci "module_label must be defined for ${target_name}.") 245f9996aaSopenharmony_ci assert(defined(invoker.module_type), 255f9996aaSopenharmony_ci "module_type must be defined for ${target_name}.") 265f9996aaSopenharmony_ci 275f9996aaSopenharmony_ci forward_variables_from(invoker, 285f9996aaSopenharmony_ci [ 295f9996aaSopenharmony_ci "testonly", 305f9996aaSopenharmony_ci "visibility", 315f9996aaSopenharmony_ci ]) 325f9996aaSopenharmony_ci forward_variables_from(invoker, 335f9996aaSopenharmony_ci [ 345f9996aaSopenharmony_ci "module_label", 355f9996aaSopenharmony_ci "module_name", 365f9996aaSopenharmony_ci "module_source_dir", 375f9996aaSopenharmony_ci "module_install_images", 385f9996aaSopenharmony_ci "module_type", 395f9996aaSopenharmony_ci "module_install_name", 405f9996aaSopenharmony_ci "module_install_dir", 415f9996aaSopenharmony_ci "relative_install_dir", 425f9996aaSopenharmony_ci "module_output_extension", 435f9996aaSopenharmony_ci "module_source", 445f9996aaSopenharmony_ci "notice", 455f9996aaSopenharmony_ci "shlib_type", 465f9996aaSopenharmony_ci "innerapi_tags", 475f9996aaSopenharmony_ci "version_script", 485f9996aaSopenharmony_ci "part_name", 495f9996aaSopenharmony_ci "subsystem_name", 505f9996aaSopenharmony_ci "symlink_ext", 515f9996aaSopenharmony_ci "symlink_path", 525f9996aaSopenharmony_ci ]) 535f9996aaSopenharmony_ci 545f9996aaSopenharmony_ci if (!defined(module_label)) { 555f9996aaSopenharmony_ci if (module_type == "java_library" || module_type == "none" || 565f9996aaSopenharmony_ci module_type == "app" || module_type == "dex") { 575f9996aaSopenharmony_ci module_label = get_label_info(":$module_name", "label_no_toolchain") 585f9996aaSopenharmony_ci } else { 595f9996aaSopenharmony_ci module_label = get_label_info(":$module_name", "label_with_toolchain") 605f9996aaSopenharmony_ci } 615f9996aaSopenharmony_ci } 625f9996aaSopenharmony_ci module_deps = [ get_label_info(module_label, "label_no_toolchain") ] 635f9996aaSopenharmony_ci 645f9996aaSopenharmony_ci gen_script = "//build/templates/metadata/gen_module_info.py" 655f9996aaSopenharmony_ci 665f9996aaSopenharmony_ci if (!defined(module_source_dir)) { 675f9996aaSopenharmony_ci module_source_dir = "$root_out_dir" 685f9996aaSopenharmony_ci } 695f9996aaSopenharmony_ci if (!defined(module_install_name)) { 705f9996aaSopenharmony_ci module_install_name = module_name 715f9996aaSopenharmony_ci } 725f9996aaSopenharmony_ci if (!defined(module_output_extension)) { 735f9996aaSopenharmony_ci module_output_extension = "" 745f9996aaSopenharmony_ci } 755f9996aaSopenharmony_ci 765f9996aaSopenharmony_ci output_file = "${target_out_dir}/${module_name}_module_info.json" 775f9996aaSopenharmony_ci 785f9996aaSopenharmony_ci # reset module_type when module_type is lib 795f9996aaSopenharmony_ci if (module_type == "lib") { 805f9996aaSopenharmony_ci if (target_cpu == "arm64" || target_cpu == "x86_64" || 815f9996aaSopenharmony_ci target_cpu == "loongarch64" || target_cpu == "riscv64") { 825f9996aaSopenharmony_ci module_type = "lib64" 835f9996aaSopenharmony_ci } else if (target_cpu == "arm" || target_cpu == "x86") { 845f9996aaSopenharmony_ci module_type = "lib" 855f9996aaSopenharmony_ci } else if (target_cpu == "riscv64" || target_cpu == "mipsel") { 865f9996aaSopenharmony_ci module_type = "lib" 875f9996aaSopenharmony_ci } else { 885f9996aaSopenharmony_ci assert(false, "Error: unsupported target cpu name.") 895f9996aaSopenharmony_ci } 905f9996aaSopenharmony_ci } 915f9996aaSopenharmony_ci 925f9996aaSopenharmony_ci if (!is_standard_system && (is_asan || is_tsan) && 935f9996aaSopenharmony_ci ("${module_type}" == "lib" || "${module_type}" == "lib64" || 945f9996aaSopenharmony_ci "${module_type}" == "bin")) { 955f9996aaSopenharmony_ci system_base_dir = "${system_base_dir}/asan" 965f9996aaSopenharmony_ci } 975f9996aaSopenharmony_ci 985f9996aaSopenharmony_ci action(target_name) { 995f9996aaSopenharmony_ci args = [ 1005f9996aaSopenharmony_ci "--system-base-dir", 1015f9996aaSopenharmony_ci system_base_dir, 1025f9996aaSopenharmony_ci "--ramdisk-base-dir", 1035f9996aaSopenharmony_ci ramdisk_base_dir, 1045f9996aaSopenharmony_ci "--vendor-base-dir", 1055f9996aaSopenharmony_ci vendor_base_dir, 1065f9996aaSopenharmony_ci "--updater-base-dir", 1075f9996aaSopenharmony_ci updater_base_dir, 1085f9996aaSopenharmony_ci "--sys_prod-base-dir", 1095f9996aaSopenharmony_ci sys_prod_base_dir, 1105f9996aaSopenharmony_ci "--eng_system-base-dir", 1115f9996aaSopenharmony_ci eng_system_base_dir, 1125f9996aaSopenharmony_ci "--eng_chipset-base-dir", 1135f9996aaSopenharmony_ci eng_chipset_base_dir, 1145f9996aaSopenharmony_ci "--updater_vendor-base-dir", 1155f9996aaSopenharmony_ci updater_vendor_base_dir, 1165f9996aaSopenharmony_ci "--chip_prod-base-dir", 1175f9996aaSopenharmony_ci chip_prod_base_dir, 1185f9996aaSopenharmony_ci "--type", 1195f9996aaSopenharmony_ci module_type, 1205f9996aaSopenharmony_ci "--target-label", 1215f9996aaSopenharmony_ci module_label, 1225f9996aaSopenharmony_ci "--source-dir", 1235f9996aaSopenharmony_ci rebase_path(module_source_dir, "$root_build_dir"), 1245f9996aaSopenharmony_ci "--label-name", 1255f9996aaSopenharmony_ci module_name, 1265f9996aaSopenharmony_ci "--output-file", 1275f9996aaSopenharmony_ci rebase_path(output_file, "$root_build_dir"), 1285f9996aaSopenharmony_ci ] 1295f9996aaSopenharmony_ci 1305f9996aaSopenharmony_ci if (module_install_name != "") { 1315f9996aaSopenharmony_ci args += [ 1325f9996aaSopenharmony_ci "--install-name", 1335f9996aaSopenharmony_ci module_install_name, 1345f9996aaSopenharmony_ci ] 1355f9996aaSopenharmony_ci } 1365f9996aaSopenharmony_ci 1375f9996aaSopenharmony_ci if (defined(invoker.module_alt_output_extension)) { 1385f9996aaSopenharmony_ci args += [ 1395f9996aaSopenharmony_ci "--alternative-suffix", 1405f9996aaSopenharmony_ci invoker.module_alt_output_extension, 1415f9996aaSopenharmony_ci ] 1425f9996aaSopenharmony_ci } 1435f9996aaSopenharmony_ci 1445f9996aaSopenharmony_ci if (defined(invoker.install_enable) && !invoker.install_enable) { 1455f9996aaSopenharmony_ci args += [ "--install-enable" ] 1465f9996aaSopenharmony_ci } 1475f9996aaSopenharmony_ci if (defined(invoker.collect) && invoker.collect) { 1485f9996aaSopenharmony_ci args += [ "--collect" ] 1495f9996aaSopenharmony_ci } 1505f9996aaSopenharmony_ci 1515f9996aaSopenharmony_ci if (defined(module_install_images)) { 1525f9996aaSopenharmony_ci if (defined(module_install_dir) && module_install_dir != "") { 1535f9996aaSopenharmony_ci args += [ 1545f9996aaSopenharmony_ci "--module-install-dir", 1555f9996aaSopenharmony_ci module_install_dir, 1565f9996aaSopenharmony_ci ] 1575f9996aaSopenharmony_ci } 1585f9996aaSopenharmony_ci if (defined(relative_install_dir) && relative_install_dir != "") { 1595f9996aaSopenharmony_ci args += [ 1605f9996aaSopenharmony_ci "--relative-install-dir", 1615f9996aaSopenharmony_ci relative_install_dir, 1625f9996aaSopenharmony_ci ] 1635f9996aaSopenharmony_ci } 1645f9996aaSopenharmony_ci args += [ "--install-images" ] 1655f9996aaSopenharmony_ci args += module_install_images 1665f9996aaSopenharmony_ci } 1675f9996aaSopenharmony_ci 1685f9996aaSopenharmony_ci # if prebuilt, add prebuilt=True 1695f9996aaSopenharmony_ci if (defined(invoker.prebuilt) && invoker.prebuilt) { 1705f9996aaSopenharmony_ci args += [ 1715f9996aaSopenharmony_ci "--prebuilt", 1725f9996aaSopenharmony_ci "--module-source", 1735f9996aaSopenharmony_ci module_source, 1745f9996aaSopenharmony_ci ] 1755f9996aaSopenharmony_ci } 1765f9996aaSopenharmony_ci 1775f9996aaSopenharmony_ci if (module_output_extension != "") { 1785f9996aaSopenharmony_ci args += [ 1795f9996aaSopenharmony_ci "--suffix", 1805f9996aaSopenharmony_ci module_output_extension, 1815f9996aaSopenharmony_ci ] 1825f9996aaSopenharmony_ci } 1835f9996aaSopenharmony_ci 1845f9996aaSopenharmony_ci if (defined(invoker.symlink_target_name)) { 1855f9996aaSopenharmony_ci args += [ "--symlink-target" ] 1865f9996aaSopenharmony_ci args += invoker.symlink_target_name 1875f9996aaSopenharmony_ci } 1885f9996aaSopenharmony_ci 1895f9996aaSopenharmony_ci if (defined(invoker.output_prefix_override) && 1905f9996aaSopenharmony_ci invoker.output_prefix_override) { 1915f9996aaSopenharmony_ci args += [ "--prefix-override" ] 1925f9996aaSopenharmony_ci } 1935f9996aaSopenharmony_ci if (defined(notice)) { 1945f9996aaSopenharmony_ci args += [ 1955f9996aaSopenharmony_ci "--notice", 1965f9996aaSopenharmony_ci rebase_path(notice, root_build_dir), 1975f9996aaSopenharmony_ci ] 1985f9996aaSopenharmony_ci } 1995f9996aaSopenharmony_ci 2005f9996aaSopenharmony_ci if (defined(part_name)) { 2015f9996aaSopenharmony_ci args += [ 2025f9996aaSopenharmony_ci "--part-name", 2035f9996aaSopenharmony_ci part_name, 2045f9996aaSopenharmony_ci ] 2055f9996aaSopenharmony_ci } 2065f9996aaSopenharmony_ci if (defined(subsystem_name)) { 2075f9996aaSopenharmony_ci args += [ 2085f9996aaSopenharmony_ci "--subsystem-name", 2095f9996aaSopenharmony_ci subsystem_name, 2105f9996aaSopenharmony_ci ] 2115f9996aaSopenharmony_ci } 2125f9996aaSopenharmony_ci if (defined(shlib_type)) { 2135f9996aaSopenharmony_ci args += [ 2145f9996aaSopenharmony_ci "--shlib-type", 2155f9996aaSopenharmony_ci shlib_type, 2165f9996aaSopenharmony_ci ] 2175f9996aaSopenharmony_ci } 2185f9996aaSopenharmony_ci if (defined(innerapi_tags)) { 2195f9996aaSopenharmony_ci args += [ "--innerapi-tags" ] 2205f9996aaSopenharmony_ci args += innerapi_tags 2215f9996aaSopenharmony_ci } 2225f9996aaSopenharmony_ci if (defined(version_script)) { 2235f9996aaSopenharmony_ci args += [ 2245f9996aaSopenharmony_ci "--version_script", 2255f9996aaSopenharmony_ci version_script, 2265f9996aaSopenharmony_ci ] 2275f9996aaSopenharmony_ci } 2285f9996aaSopenharmony_ci if (defined(symlink_ext)) { 2295f9996aaSopenharmony_ci args += [ "--symlink-ext" ] 2305f9996aaSopenharmony_ci args += symlink_ext 2315f9996aaSopenharmony_ci } 2325f9996aaSopenharmony_ci if (defined(symlink_path) && symlink_path != "") { 2335f9996aaSopenharmony_ci args += [ 2345f9996aaSopenharmony_ci "--symlink-path", 2355f9996aaSopenharmony_ci symlink_path, 2365f9996aaSopenharmony_ci ] 2375f9996aaSopenharmony_ci } 2385f9996aaSopenharmony_ci script = gen_script 2395f9996aaSopenharmony_ci outputs = [ output_file ] 2405f9996aaSopenharmony_ci } 2415f9996aaSopenharmony_ci 2425f9996aaSopenharmony_ci generated_file("${target_name}_install_info") { 2435f9996aaSopenharmony_ci outputs = [ "${target_out_dir}/${module_name}_install_info.json" ] 2445f9996aaSopenharmony_ci data_keys = [ "install_modules" ] 2455f9996aaSopenharmony_ci output_conversion = "json" 2465f9996aaSopenharmony_ci deps = module_deps 2475f9996aaSopenharmony_ci } 2485f9996aaSopenharmony_ci} 2495f9996aaSopenharmony_ci 2505f9996aaSopenharmony_citemplate("write_meta_data") { 2515f9996aaSopenharmony_ci assert(defined(invoker.meta_data), "meta_data must be defined") 2525f9996aaSopenharmony_ci assert(defined(invoker.type), "type must be defined") 2535f9996aaSopenharmony_ci forward_variables_from(invoker, [ "testonly" ]) 2545f9996aaSopenharmony_ci 2555f9996aaSopenharmony_ci action_with_pydeps(target_name) { 2565f9996aaSopenharmony_ci forward_variables_from(invoker, 2575f9996aaSopenharmony_ci [ 2585f9996aaSopenharmony_ci "deps", 2595f9996aaSopenharmony_ci "meta_data", 2605f9996aaSopenharmony_ci "type", 2615f9996aaSopenharmony_ci "resources", 2625f9996aaSopenharmony_ci "hap_path", 2635f9996aaSopenharmony_ci "app_profile", 2645f9996aaSopenharmony_ci "hap_profile", 2655f9996aaSopenharmony_ci "package_name", 2665f9996aaSopenharmony_ci "raw_assets", 2675f9996aaSopenharmony_ci "js_assets", 2685f9996aaSopenharmony_ci "ets_assets", 2695f9996aaSopenharmony_ci "js2abc", 2705f9996aaSopenharmony_ci "unresolved_assets", 2715f9996aaSopenharmony_ci ]) 2725f9996aaSopenharmony_ci if (type != "js_assets" && type != "ets_assets" && 2735f9996aaSopenharmony_ci type != "unresolved_assets" && type != "assets" && 2745f9996aaSopenharmony_ci type != "resources" && type != "hap" && type != "app_profile") { 2755f9996aaSopenharmony_ci assert( 2765f9996aaSopenharmony_ci false, 2775f9996aaSopenharmony_ci "type must be one of [js_assets, ets_assets, unresolved_assets, assets, resources, hap, app_profile]") 2785f9996aaSopenharmony_ci } 2795f9996aaSopenharmony_ci if (type != "hap") { 2805f9996aaSopenharmony_ci _parent_invoker = invoker.invoker 2815f9996aaSopenharmony_ci _caller_target_name = get_label_info(":${_parent_invoker.target_name}", 2825f9996aaSopenharmony_ci "label_no_toolchain") 2835f9996aaSopenharmony_ci sources = [ _caller_target_name ] 2845f9996aaSopenharmony_ci sources = filter_exclude(sources, app_target_allowlist) 2855f9996aaSopenharmony_ci if (sources != []) { 2865f9996aaSopenharmony_ci if (type == "js_assets" || type == "ets_assets" || 2875f9996aaSopenharmony_ci type == "unresolved_assets" || type == "assets") { 2885f9996aaSopenharmony_ci assert( 2895f9996aaSopenharmony_ci false, 2905f9996aaSopenharmony_ci "Illegal target name: \"${_caller_target_name}\", target name of ohos_js_assets or ohos_assets must endswith assets or asset ") 2915f9996aaSopenharmony_ci } else if (type == "resources") { 2925f9996aaSopenharmony_ci assert( 2935f9996aaSopenharmony_ci false, 2945f9996aaSopenharmony_ci "Illegal target name: \"${_caller_target_name}\", target name of ohos_resources must endswith res or resources or resource") 2955f9996aaSopenharmony_ci } 2965f9996aaSopenharmony_ci } 2975f9996aaSopenharmony_ci } 2985f9996aaSopenharmony_ci 2995f9996aaSopenharmony_ci script = "//build/templates/metadata/write_meta_data.py" 3005f9996aaSopenharmony_ci outputs = [ meta_data ] 3015f9996aaSopenharmony_ci depfile = "$target_gen_dir/$target_name.d" 3025f9996aaSopenharmony_ci 3035f9996aaSopenharmony_ci args = [ 3045f9996aaSopenharmony_ci "--output", 3055f9996aaSopenharmony_ci rebase_path(meta_data, root_build_dir), 3065f9996aaSopenharmony_ci "--type", 3075f9996aaSopenharmony_ci type, 3085f9996aaSopenharmony_ci "--depfile", 3095f9996aaSopenharmony_ci rebase_path(depfile, root_build_dir), 3105f9996aaSopenharmony_ci ] 3115f9996aaSopenharmony_ci 3125f9996aaSopenharmony_ci if (!defined(deps)) { 3135f9996aaSopenharmony_ci deps = [] 3145f9996aaSopenharmony_ci } 3155f9996aaSopenharmony_ci 3165f9996aaSopenharmony_ci _possible_deps = [] 3175f9996aaSopenharmony_ci if (defined(invoker.possible_deps)) { 3185f9996aaSopenharmony_ci _possible_deps = invoker.possible_deps 3195f9996aaSopenharmony_ci } 3205f9996aaSopenharmony_ci 3215f9996aaSopenharmony_ci _deps_metadata = [] 3225f9996aaSopenharmony_ci inputs = [] 3235f9996aaSopenharmony_ci foreach(d, _possible_deps) { 3245f9996aaSopenharmony_ci sources_raw = [] 3255f9996aaSopenharmony_ci _target_label = get_label_info(d, "label_no_toolchain") 3265f9996aaSopenharmony_ci sources_raw += [ _target_label ] 3275f9996aaSopenharmony_ci sources = filter_exclude(sources_raw, app_target_allowlist) 3285f9996aaSopenharmony_ci if (sources == []) { 3295f9996aaSopenharmony_ci _deps_metadata += [ get_label_info(d, "target_gen_dir") + "/" + 3305f9996aaSopenharmony_ci get_label_info(d, "name") + ".metadata" ] 3315f9996aaSopenharmony_ci deps += [ "${_target_label}__metadata" ] 3325f9996aaSopenharmony_ci } 3335f9996aaSopenharmony_ci } 3345f9996aaSopenharmony_ci 3355f9996aaSopenharmony_ci if (_deps_metadata != []) { 3365f9996aaSopenharmony_ci args += [ "--deps-metadata" ] 3375f9996aaSopenharmony_ci foreach(d, _deps_metadata) { 3385f9996aaSopenharmony_ci args += [ rebase_path(d, root_build_dir) ] 3395f9996aaSopenharmony_ci } 3405f9996aaSopenharmony_ci inputs += _deps_metadata 3415f9996aaSopenharmony_ci } 3425f9996aaSopenharmony_ci 3435f9996aaSopenharmony_ci if (defined(resources)) { 3445f9996aaSopenharmony_ci args += [ "--resources" ] 3455f9996aaSopenharmony_ci foreach(res, resources) { 3465f9996aaSopenharmony_ci args += [ rebase_path(res, root_build_dir) ] 3475f9996aaSopenharmony_ci } 3485f9996aaSopenharmony_ci if (defined(package_name)) { 3495f9996aaSopenharmony_ci args += [ 3505f9996aaSopenharmony_ci "--package-name", 3515f9996aaSopenharmony_ci package_name, 3525f9996aaSopenharmony_ci ] 3535f9996aaSopenharmony_ci } 3545f9996aaSopenharmony_ci } 3555f9996aaSopenharmony_ci 3565f9996aaSopenharmony_ci if (defined(app_profile)) { 3575f9996aaSopenharmony_ci args += [ 3585f9996aaSopenharmony_ci "--app-profile", 3595f9996aaSopenharmony_ci rebase_path(app_profile, root_build_dir), 3605f9996aaSopenharmony_ci ] 3615f9996aaSopenharmony_ci } 3625f9996aaSopenharmony_ci 3635f9996aaSopenharmony_ci if (defined(hap_profile)) { 3645f9996aaSopenharmony_ci args += [ 3655f9996aaSopenharmony_ci "--hap-profile", 3665f9996aaSopenharmony_ci rebase_path(hap_profile, root_build_dir), 3675f9996aaSopenharmony_ci ] 3685f9996aaSopenharmony_ci } 3695f9996aaSopenharmony_ci 3705f9996aaSopenharmony_ci if (defined(raw_assets)) { 3715f9996aaSopenharmony_ci args += [ "--raw-assets" ] 3725f9996aaSopenharmony_ci foreach(asset, raw_assets) { 3735f9996aaSopenharmony_ci args += [ rebase_path(asset, root_build_dir) ] 3745f9996aaSopenharmony_ci } 3755f9996aaSopenharmony_ci } 3765f9996aaSopenharmony_ci 3775f9996aaSopenharmony_ci if (defined(js_assets)) { 3785f9996aaSopenharmony_ci args += [ "--js-assets" ] 3795f9996aaSopenharmony_ci foreach(asset, js_assets) { 3805f9996aaSopenharmony_ci args += [ rebase_path(asset, root_build_dir) ] 3815f9996aaSopenharmony_ci } 3825f9996aaSopenharmony_ci } 3835f9996aaSopenharmony_ci 3845f9996aaSopenharmony_ci if (defined(ets_assets)) { 3855f9996aaSopenharmony_ci args += [ "--ets-assets" ] 3865f9996aaSopenharmony_ci foreach(asset, ets_assets) { 3875f9996aaSopenharmony_ci args += [ rebase_path(asset, root_build_dir) ] 3885f9996aaSopenharmony_ci } 3895f9996aaSopenharmony_ci } 3905f9996aaSopenharmony_ci 3915f9996aaSopenharmony_ci if (defined(unresolved_assets)) { 3925f9996aaSopenharmony_ci args += [ "--unresolved-assets" ] 3935f9996aaSopenharmony_ci foreach(asset, unresolved_assets) { 3945f9996aaSopenharmony_ci args += [ rebase_path(asset, root_build_dir) ] 3955f9996aaSopenharmony_ci } 3965f9996aaSopenharmony_ci } 3975f9996aaSopenharmony_ci 3985f9996aaSopenharmony_ci if (defined(js2abc) && js2abc) { 3995f9996aaSopenharmony_ci args += [ "--js2abc" ] 4005f9996aaSopenharmony_ci } 4015f9996aaSopenharmony_ci 4025f9996aaSopenharmony_ci if (defined(hap_path)) { 4035f9996aaSopenharmony_ci args += [ 4045f9996aaSopenharmony_ci "--hap-path", 4055f9996aaSopenharmony_ci rebase_path(hap_path, root_build_dir), 4065f9996aaSopenharmony_ci ] 4075f9996aaSopenharmony_ci } 4085f9996aaSopenharmony_ci } 4095f9996aaSopenharmony_ci} 410