xref: /build/ohos/sdk/sdk.gni (revision 5f9996aa)
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/ohos/build_var.gni")
165f9996aaSopenharmony_ciimport("//build/ohos/notice/notice.gni")
175f9996aaSopenharmony_ciimport("//build/version.gni")
185f9996aaSopenharmony_ci
195f9996aaSopenharmony_cisdk_base_build_gn = "//build/ohos/sdk/BUILD.gn"
205f9996aaSopenharmony_cigenerated_files_dir = get_path_info(sdk_base_build_gn, "gen_dir")
215f9996aaSopenharmony_cigenerated_sdk_module_install_paths =
225f9996aaSopenharmony_ci    "${generated_files_dir}/ohos_sdk_install_paths.json"
235f9996aaSopenharmony_ci
245f9996aaSopenharmony_cisdk_system_windows = "windows"
255f9996aaSopenharmony_cisdk_system_linux = "linux"
265f9996aaSopenharmony_cisdk_system_darwin = "darwin"
275f9996aaSopenharmony_cisdk_system_ohos = "ohos"
285f9996aaSopenharmony_ci
295f9996aaSopenharmony_ciohos_sdk_out_dir = "$product_output_dir/${product_name}"
305f9996aaSopenharmony_ciohos_sdk_copy_dir = "$root_build_dir/${product_name}"
315f9996aaSopenharmony_ci
325f9996aaSopenharmony_cideclare_args() {
335f9996aaSopenharmony_ci  sdk_check_flag = true
345f9996aaSopenharmony_ci  sdk_for_hap_build = false
355f9996aaSopenharmony_ci}
365f9996aaSopenharmony_ci
375f9996aaSopenharmony_cideclare_args() {
385f9996aaSopenharmony_ci  enable_sign = false
395f9996aaSopenharmony_ci}
405f9996aaSopenharmony_ci
415f9996aaSopenharmony_cisdk_toolchains = {
425f9996aaSopenharmony_ci  linux = "//build/toolchain/linux:clang_x64"
435f9996aaSopenharmony_ci  windows = "//build/toolchain/mingw:mingw_x86_64"
445f9996aaSopenharmony_ci  ohos = "//build/toolchain/ohos:ohos_clang_arm64"
455f9996aaSopenharmony_ci
465f9996aaSopenharmony_ci  if (host_cpu == "arm64") {
475f9996aaSopenharmony_ci    darwin = "//build/toolchain/mac:clang_arm64"
485f9996aaSopenharmony_ci  } else {
495f9996aaSopenharmony_ci    darwin = "//build/toolchain/mac:clang_x64"
505f9996aaSopenharmony_ci  }
515f9996aaSopenharmony_ci}
525f9996aaSopenharmony_ci
535f9996aaSopenharmony_ciif (host_cpu == "arm64") {
545f9996aaSopenharmony_ci  arch = "arm64"
555f9996aaSopenharmony_ci} else if (host_cpu == "riscv64") {
565f9996aaSopenharmony_ci  arch = "riscv64"
575f9996aaSopenharmony_ci} else {
585f9996aaSopenharmony_ci  arch = "x64"
595f9996aaSopenharmony_ci}
605f9996aaSopenharmony_ci
615f9996aaSopenharmony_ciif (sdk_platform == "default") {
625f9996aaSopenharmony_ci  if (host_os == "mac") {
635f9996aaSopenharmony_ci    sdk_systems = [ sdk_system_darwin ]
645f9996aaSopenharmony_ci  } else {
655f9996aaSopenharmony_ci    sdk_systems = [
665f9996aaSopenharmony_ci      sdk_system_windows,
675f9996aaSopenharmony_ci      sdk_system_linux,
685f9996aaSopenharmony_ci      sdk_system_ohos,
695f9996aaSopenharmony_ci    ]
705f9996aaSopenharmony_ci  }
715f9996aaSopenharmony_ci} else if (sdk_platform == "mac") {
725f9996aaSopenharmony_ci  sdk_systems = [ sdk_system_darwin ]
735f9996aaSopenharmony_ci} else if (sdk_platform == "win") {
745f9996aaSopenharmony_ci  sdk_systems = [ sdk_system_windows ]
755f9996aaSopenharmony_ci} else if (sdk_platform == "linux") {
765f9996aaSopenharmony_ci  sdk_systems = [ sdk_system_linux ]
775f9996aaSopenharmony_ci} else if (sdk_platform == "ohos") {
785f9996aaSopenharmony_ci  sdk_systems = [ sdk_system_ohos ]
795f9996aaSopenharmony_ci}
805f9996aaSopenharmony_ci
815f9996aaSopenharmony_ciif (use_current_sdk) {
825f9996aaSopenharmony_ci  sdk_systems = []
835f9996aaSopenharmony_ci  sdk_systems += [ sdk_system_linux ]
845f9996aaSopenharmony_ci}
855f9996aaSopenharmony_ci
865f9996aaSopenharmony_citemplate("copy_and_archive") {
875f9996aaSopenharmony_ci  assert(defined(invoker.dest_dir))
885f9996aaSopenharmony_ci  assert(defined(invoker.sdk_system))
895f9996aaSopenharmony_ci  assert(defined(invoker.sdk_type))
905f9996aaSopenharmony_ci  assert(defined(invoker.sdk_modules_desc_file))
915f9996aaSopenharmony_ci  forward_variables_from(invoker,
925f9996aaSopenharmony_ci                         [
935f9996aaSopenharmony_ci                           "testonly",
945f9996aaSopenharmony_ci                           "sdk_class",
955f9996aaSopenharmony_ci                         ])
965f9996aaSopenharmony_ci  action_with_pydeps(target_name) {
975f9996aaSopenharmony_ci    deps = []
985f9996aaSopenharmony_ci    if (defined(invoker.deps)) {
995f9996aaSopenharmony_ci      deps += invoker.deps
1005f9996aaSopenharmony_ci    }
1015f9996aaSopenharmony_ci
1025f9996aaSopenharmony_ci    script = "//build/ohos/sdk/copy_sdk_modules.py"
1035f9996aaSopenharmony_ci    depfile = "$target_gen_dir/$target_name.d"
1045f9996aaSopenharmony_ci
1055f9996aaSopenharmony_ci    _sdk_output_archive =
1065f9996aaSopenharmony_ci        "$ohos_sdk_out_dir/${invoker.sdk_system}/${invoker.zipfile_name}"
1075f9996aaSopenharmony_ci    _notice_output_archive = "${sdk_notice_archive_dir}/${invoker.sdk_system}-${invoker.sdk_type}.zip"
1085f9996aaSopenharmony_ci
1095f9996aaSopenharmony_ci    if (use_current_sdk) {
1105f9996aaSopenharmony_ci      _sdk_output_archive = "$ohos_sdk_out_dir/${sdk_class}/${invoker.sdk_system}/${invoker.zipfile_name}"
1115f9996aaSopenharmony_ci      _notice_output_archive = "${sdk_notice_archive_dir}/${sdk_class}/${invoker.sdk_system}-${invoker.sdk_type}.zip"
1125f9996aaSopenharmony_ci    }
1135f9996aaSopenharmony_ci
1145f9996aaSopenharmony_ci    outputs = [
1155f9996aaSopenharmony_ci      _sdk_output_archive,
1165f9996aaSopenharmony_ci      _notice_output_archive,
1175f9996aaSopenharmony_ci    ]
1185f9996aaSopenharmony_ci
1195f9996aaSopenharmony_ci    args = [
1205f9996aaSopenharmony_ci      "--sdk-modules-desc-file",
1215f9996aaSopenharmony_ci      rebase_path(invoker.sdk_modules_desc_file, root_build_dir),
1225f9996aaSopenharmony_ci      "--dest-dir",
1235f9996aaSopenharmony_ci      rebase_path(invoker.dest_dir, root_build_dir),
1245f9996aaSopenharmony_ci      "--sdk-output-archive",
1255f9996aaSopenharmony_ci      rebase_path(_sdk_output_archive, root_build_dir),
1265f9996aaSopenharmony_ci      "--notice-output-archive",
1275f9996aaSopenharmony_ci      rebase_path(_notice_output_archive, root_build_dir),
1285f9996aaSopenharmony_ci      "--depfile",
1295f9996aaSopenharmony_ci      rebase_path(depfile, root_build_dir),
1305f9996aaSopenharmony_ci      "--archive-dir",
1315f9996aaSopenharmony_ci      rebase_path("${invoker.dest_dir}/${invoker.sdk_type}", root_build_dir),
1325f9996aaSopenharmony_ci    ]
1335f9996aaSopenharmony_ci
1345f9996aaSopenharmony_ci    archive_path_args = [
1355f9996aaSopenharmony_ci      "--sdk-archive-paths-file",
1365f9996aaSopenharmony_ci      rebase_path(generated_sdk_module_install_paths, root_build_dir),
1375f9996aaSopenharmony_ci    ]
1385f9996aaSopenharmony_ci
1395f9996aaSopenharmony_ci    if (use_current_sdk) {
1405f9996aaSopenharmony_ci      archive_path_args = []
1415f9996aaSopenharmony_ci      archive_path_args += [
1425f9996aaSopenharmony_ci        "--sdk-archive-paths-file",
1435f9996aaSopenharmony_ci        rebase_path(
1445f9996aaSopenharmony_ci            "${generated_files_dir}/${sdk_class}/${sdk_class}_sdk_install_paths.json",
1455f9996aaSopenharmony_ci            root_build_dir),
1465f9996aaSopenharmony_ci      ]
1475f9996aaSopenharmony_ci    }
1485f9996aaSopenharmony_ci
1495f9996aaSopenharmony_ci    args += archive_path_args
1505f9996aaSopenharmony_ci
1515f9996aaSopenharmony_ci    if (defined(invoker.zip_prefix_path)) {
1525f9996aaSopenharmony_ci      args += [
1535f9996aaSopenharmony_ci        "--zip-prefix-path",
1545f9996aaSopenharmony_ci        invoker.zip_prefix_path,
1555f9996aaSopenharmony_ci      ]
1565f9996aaSopenharmony_ci    }
1575f9996aaSopenharmony_ci
1585f9996aaSopenharmony_ci    if (use_current_sdk) {
1595f9996aaSopenharmony_ci      enable_archive_sdk = false
1605f9996aaSopenharmony_ci    }
1615f9996aaSopenharmony_ci
1625f9996aaSopenharmony_ci    if (enable_archive_sdk) {
1635f9996aaSopenharmony_ci      args += [ "--enable-archive-sdk=${enable_archive_sdk}" ]
1645f9996aaSopenharmony_ci    }
1655f9996aaSopenharmony_ci  }
1665f9996aaSopenharmony_ci}
1675f9996aaSopenharmony_ci
1685f9996aaSopenharmony_citemplate("make_sdk_modules") {
1695f9996aaSopenharmony_ci  assert(defined(invoker.zipfile_name))
1705f9996aaSopenharmony_ci  assert(defined(invoker.sdk_modules))
1715f9996aaSopenharmony_ci  assert(defined(invoker.sdk_toolchain))
1725f9996aaSopenharmony_ci  assert(defined(invoker.sdk_type))
1735f9996aaSopenharmony_ci  assert(defined(invoker.sdk_system))
1745f9996aaSopenharmony_ci
1755f9996aaSopenharmony_ci  if (invoker.sdk_modules == []) {
1765f9996aaSopenharmony_ci    not_needed(invoker, [ "sdk_toolchain" ])
1775f9996aaSopenharmony_ci  }
1785f9996aaSopenharmony_ci  copy_and_archive(target_name) {
1795f9996aaSopenharmony_ci    forward_variables_from(invoker,
1805f9996aaSopenharmony_ci                           [
1815f9996aaSopenharmony_ci                             "testonly",
1825f9996aaSopenharmony_ci                             "sdk_system",
1835f9996aaSopenharmony_ci                             "sdk_type",
1845f9996aaSopenharmony_ci                             "zipfile_name",
1855f9996aaSopenharmony_ci                             "sdk_class",
1865f9996aaSopenharmony_ci                           ])
1875f9996aaSopenharmony_ci    _sdk_modules = []
1885f9996aaSopenharmony_ci    _sdk_module_infos = []
1895f9996aaSopenharmony_ci
1905f9996aaSopenharmony_ci    foreach(_label, invoker.sdk_modules) {
1915f9996aaSopenharmony_ci      _target_label = get_label_info(_label, "label_no_toolchain")
1925f9996aaSopenharmony_ci      sources = [ _target_label ]
1935f9996aaSopenharmony_ci      if (sources == []) {
1945f9996aaSopenharmony_ci        _sdk_modules += [ _target_label ]
1955f9996aaSopenharmony_ci      } else {
1965f9996aaSopenharmony_ci        _sdk_modules += [ "${_target_label}(${invoker.sdk_toolchain})" ]
1975f9996aaSopenharmony_ci      }
1985f9996aaSopenharmony_ci      sources = []
1995f9996aaSopenharmony_ci    }
2005f9996aaSopenharmony_ci    not_needed(invoker, [ "sdk_toolchain" ])
2015f9996aaSopenharmony_ci
2025f9996aaSopenharmony_ci    foreach(_label, _sdk_modules) {
2035f9996aaSopenharmony_ci      _module_info_file = get_label_info(_label, "target_out_dir") + "/" +
2045f9996aaSopenharmony_ci                          get_label_info(_label, "name") + "_module_info.json"
2055f9996aaSopenharmony_ci      _sdk_module_infos += [
2065f9996aaSopenharmony_ci        {
2075f9996aaSopenharmony_ci          label = get_label_info(_label, "label_no_toolchain")
2085f9996aaSopenharmony_ci          module_info_file = rebase_path(_module_info_file, root_build_dir)
2095f9996aaSopenharmony_ci        },
2105f9996aaSopenharmony_ci      ]
2115f9996aaSopenharmony_ci    }
2125f9996aaSopenharmony_ci    sdk_modules_desc_file = "${target_gen_dir}/${target_name}_sdk_modules.json"
2135f9996aaSopenharmony_ci    write_file(sdk_modules_desc_file, _sdk_module_infos, "json")
2145f9996aaSopenharmony_ci
2155f9996aaSopenharmony_ci    deps = _sdk_modules
2165f9996aaSopenharmony_ci    if (defined(invoker.deps)) {
2175f9996aaSopenharmony_ci      deps += invoker.deps
2185f9996aaSopenharmony_ci    }
2195f9996aaSopenharmony_ci
2205f9996aaSopenharmony_ci    dest_dir = "${ohos_sdk_copy_dir}/${sdk_system}"
2215f9996aaSopenharmony_ci    if (use_current_sdk) {
2225f9996aaSopenharmony_ci      dest_dir = "${root_build_dir}/${sdk_class}-current-sdk/${sdk_system}/${api_version}"
2235f9996aaSopenharmony_ci    }
2245f9996aaSopenharmony_ci
2255f9996aaSopenharmony_ci    zip_prefix_path = "${invoker.sdk_type}"
2265f9996aaSopenharmony_ci  }
2275f9996aaSopenharmony_ci}
2285f9996aaSopenharmony_ci
2295f9996aaSopenharmony_citemplate("make_linux_sdk_modules") {
2305f9996aaSopenharmony_ci  make_sdk_modules(target_name) {
2315f9996aaSopenharmony_ci    forward_variables_from(invoker,
2325f9996aaSopenharmony_ci                           [
2335f9996aaSopenharmony_ci                             "testonly",
2345f9996aaSopenharmony_ci                             "zipfile_name",
2355f9996aaSopenharmony_ci                             "sdk_modules",
2365f9996aaSopenharmony_ci                             "sdk_type",
2375f9996aaSopenharmony_ci                             "sdk_class",
2385f9996aaSopenharmony_ci                             "deps",
2395f9996aaSopenharmony_ci                           ])
2405f9996aaSopenharmony_ci    sdk_toolchain = sdk_toolchains.linux
2415f9996aaSopenharmony_ci    sdk_system = sdk_system_linux
2425f9996aaSopenharmony_ci  }
2435f9996aaSopenharmony_ci}
2445f9996aaSopenharmony_ci
2455f9996aaSopenharmony_citemplate("make_windows_sdk_modules") {
2465f9996aaSopenharmony_ci  make_sdk_modules(target_name) {
2475f9996aaSopenharmony_ci    forward_variables_from(invoker,
2485f9996aaSopenharmony_ci                           [
2495f9996aaSopenharmony_ci                             "testonly",
2505f9996aaSopenharmony_ci                             "zipfile_name",
2515f9996aaSopenharmony_ci                             "sdk_modules",
2525f9996aaSopenharmony_ci                             "sdk_type",
2535f9996aaSopenharmony_ci                             "sdk_class",
2545f9996aaSopenharmony_ci                             "deps",
2555f9996aaSopenharmony_ci                           ])
2565f9996aaSopenharmony_ci    sdk_toolchain = sdk_toolchains.windows
2575f9996aaSopenharmony_ci    sdk_system = sdk_system_windows
2585f9996aaSopenharmony_ci  }
2595f9996aaSopenharmony_ci}
2605f9996aaSopenharmony_ci
2615f9996aaSopenharmony_citemplate("make_darwin_sdk_modules") {
2625f9996aaSopenharmony_ci  make_sdk_modules(target_name) {
2635f9996aaSopenharmony_ci    forward_variables_from(invoker,
2645f9996aaSopenharmony_ci                           [
2655f9996aaSopenharmony_ci                             "testonly",
2665f9996aaSopenharmony_ci                             "zipfile_name",
2675f9996aaSopenharmony_ci                             "sdk_modules",
2685f9996aaSopenharmony_ci                             "sdk_type",
2695f9996aaSopenharmony_ci                             "sdk_class",
2705f9996aaSopenharmony_ci                             "deps",
2715f9996aaSopenharmony_ci                           ])
2725f9996aaSopenharmony_ci    sdk_toolchain = sdk_toolchains.darwin
2735f9996aaSopenharmony_ci    sdk_system = sdk_system_darwin
2745f9996aaSopenharmony_ci  }
2755f9996aaSopenharmony_ci}
2765f9996aaSopenharmony_ci
2775f9996aaSopenharmony_citemplate("make_ohos_sdk_modules") {
2785f9996aaSopenharmony_ci  make_sdk_modules(target_name) {
2795f9996aaSopenharmony_ci    forward_variables_from(invoker,
2805f9996aaSopenharmony_ci                           [
2815f9996aaSopenharmony_ci                             "testonly",
2825f9996aaSopenharmony_ci                             "zipfile_name",
2835f9996aaSopenharmony_ci                             "sdk_modules",
2845f9996aaSopenharmony_ci                             "sdk_type",
2855f9996aaSopenharmony_ci                             "deps",
2865f9996aaSopenharmony_ci                           ])
2875f9996aaSopenharmony_ci    sdk_toolchain = sdk_toolchains.ohos
2885f9996aaSopenharmony_ci    sdk_system = sdk_system_ohos
2895f9996aaSopenharmony_ci  }
2905f9996aaSopenharmony_ci}
2915f9996aaSopenharmony_ci
2925f9996aaSopenharmony_citemplate("current_sdk") {
2935f9996aaSopenharmony_ci  # parse the sdk description file
2945f9996aaSopenharmony_ci  forward_variables_from(invoker,
2955f9996aaSopenharmony_ci                         [
2965f9996aaSopenharmony_ci                           "sdk_desc_file",
2975f9996aaSopenharmony_ci                           "sdk_class",
2985f9996aaSopenharmony_ci                         ])
2995f9996aaSopenharmony_ci
3005f9996aaSopenharmony_ci  hap_build_sdk_description_file = "${generated_files_dir}/${sdk_class}/${sdk_class}_sdk_description_hap.json"
3015f9996aaSopenharmony_ci  hap_build_sdk_config_parser =
3025f9996aaSopenharmony_ci      "//build/ohos/sdk/generate_hap_build_sdk_config.py"
3035f9996aaSopenharmony_ci  hap_build_sdk_args = [
3045f9996aaSopenharmony_ci    "--sdk-description-file",
3055f9996aaSopenharmony_ci    rebase_path(sdk_desc_file, root_build_dir),
3065f9996aaSopenharmony_ci    "--output-hap-build-sdk-desc-file",
3075f9996aaSopenharmony_ci    rebase_path(hap_build_sdk_description_file, root_build_dir),
3085f9996aaSopenharmony_ci  ]
3095f9996aaSopenharmony_ci  exec_script(hap_build_sdk_config_parser, hap_build_sdk_args)
3105f9996aaSopenharmony_ci
3115f9996aaSopenharmony_ci  sdk_desc_file = hap_build_sdk_description_file
3125f9996aaSopenharmony_ci  sdk_parse_script = "//build/ohos/sdk/parse_sdk_description.py"
3135f9996aaSopenharmony_ci
3145f9996aaSopenharmony_ci  gen_sdk_modules_gni =
3155f9996aaSopenharmony_ci      "${generated_files_dir}/${sdk_class}/${sdk_class}_sdk_modules.gni"
3165f9996aaSopenharmony_ci  gen_sdk_module_install_paths =
3175f9996aaSopenharmony_ci      "${generated_files_dir}/${sdk_class}/${sdk_class}_sdk_install_paths.json"
3185f9996aaSopenharmony_ci  gen_sdk_types_file =
3195f9996aaSopenharmony_ci      "${generated_files_dir}/${sdk_class}/generated_sdk_types.txt"
3205f9996aaSopenharmony_ci
3215f9996aaSopenharmony_ci  parse_args = [
3225f9996aaSopenharmony_ci    "--sdk-description-file",
3235f9996aaSopenharmony_ci    rebase_path(sdk_desc_file, root_build_dir),
3245f9996aaSopenharmony_ci    "--sdk-modules-gni",
3255f9996aaSopenharmony_ci    rebase_path(gen_sdk_modules_gni, root_build_dir),
3265f9996aaSopenharmony_ci    "--sdk-install-info-file",
3275f9996aaSopenharmony_ci    rebase_path(gen_sdk_module_install_paths, root_build_dir),
3285f9996aaSopenharmony_ci    "--sdk-types-file",
3295f9996aaSopenharmony_ci    rebase_path(gen_sdk_types_file, root_build_dir),
3305f9996aaSopenharmony_ci    "--base-platform",
3315f9996aaSopenharmony_ci    "phone",
3325f9996aaSopenharmony_ci    "--variant-to-product",
3335f9996aaSopenharmony_ci    rebase_path("//build/ohos/sdk/variant_to_product.json", root_build_dir),
3345f9996aaSopenharmony_ci    "--source-root-dir",
3355f9996aaSopenharmony_ci    rebase_path("//", root_build_dir),
3365f9996aaSopenharmony_ci    "--node-js",
3375f9996aaSopenharmony_ci    rebase_path(nodejs, root_build_dir),
3385f9996aaSopenharmony_ci  ]
3395f9996aaSopenharmony_ci  foreach(p, target_platform_list) {
3405f9996aaSopenharmony_ci    parse_args += [
3415f9996aaSopenharmony_ci      "--platforms",
3425f9996aaSopenharmony_ci      p,
3435f9996aaSopenharmony_ci    ]
3445f9996aaSopenharmony_ci  }
3455f9996aaSopenharmony_ci
3465f9996aaSopenharmony_ci  exec_script(sdk_parse_script, parse_args)
3475f9996aaSopenharmony_ci
3485f9996aaSopenharmony_ci  sdk_types = read_file(gen_sdk_types_file, "list lines")
3495f9996aaSopenharmony_ci
3505f9996aaSopenharmony_ci  generate_all_types_sdk_script = "//build/ohos/sdk/generate_all_types_sdk.py"
3515f9996aaSopenharmony_ci  generated_build_gn = "${generated_files_dir}/${sdk_class}/BUILD.gn"
3525f9996aaSopenharmony_ci  generate_args = [
3535f9996aaSopenharmony_ci    "--sdk-modules",
3545f9996aaSopenharmony_ci    "ohos_sdk_modules",
3555f9996aaSopenharmony_ci    "--output",
3565f9996aaSopenharmony_ci    rebase_path(generated_build_gn, root_build_dir),
3575f9996aaSopenharmony_ci    "--current-dir",
3585f9996aaSopenharmony_ci    get_path_info(sdk_base_build_gn, "dir"),
3595f9996aaSopenharmony_ci    "--generated-sdk-modules-gni",
3605f9996aaSopenharmony_ci    gen_sdk_modules_gni,
3615f9996aaSopenharmony_ci    "--type2displayname",
3625f9996aaSopenharmony_ci    rebase_path("//build/ohos/sdk/type_to_display_name.json", root_build_dir),
3635f9996aaSopenharmony_ci    "--api-version",
3645f9996aaSopenharmony_ci    api_version,
3655f9996aaSopenharmony_ci    "--release-type",
3665f9996aaSopenharmony_ci    release_type,
3675f9996aaSopenharmony_ci    "--meta-version",
3685f9996aaSopenharmony_ci    meta_version,
3695f9996aaSopenharmony_ci    "--sdk-class",
3705f9996aaSopenharmony_ci    sdk_class,
3715f9996aaSopenharmony_ci  ]
3725f9996aaSopenharmony_ci
3735f9996aaSopenharmony_ci  if (use_current_sdk) {
3745f9996aaSopenharmony_ci    generate_args += [ "--use-current-sdk" ]
3755f9996aaSopenharmony_ci  }
3765f9996aaSopenharmony_ci
3775f9996aaSopenharmony_ci  generate_args += [
3785f9996aaSopenharmony_ci    "--sdk-systems",
3795f9996aaSopenharmony_ci    "linux",
3805f9996aaSopenharmony_ci  ]
3815f9996aaSopenharmony_ci
3825f9996aaSopenharmony_ci  foreach(sdk_type, sdk_types) {
3835f9996aaSopenharmony_ci    generate_args += [
3845f9996aaSopenharmony_ci      "--sdk-types",
3855f9996aaSopenharmony_ci      sdk_type,
3865f9996aaSopenharmony_ci    ]
3875f9996aaSopenharmony_ci  }
3885f9996aaSopenharmony_ci
3895f9996aaSopenharmony_ci  exec_script(generate_all_types_sdk_script, generate_args)
3905f9996aaSopenharmony_ci
3915f9996aaSopenharmony_ci  group(target_name) {
3925f9996aaSopenharmony_ci    deps = []
3935f9996aaSopenharmony_ci    deps += [ "${generated_files_dir}/${sdk_class}:generated_ohos_sdk" ]
3945f9996aaSopenharmony_ci  }
3955f9996aaSopenharmony_ci}
396