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