15f9996aaSopenharmony_ci# Copyright (c) 2021-2024 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/ohos.gni")
155f9996aaSopenharmony_ci
165f9996aaSopenharmony_cihdf_fwk_path = "//drivers/hdf_core/framework"
175f9996aaSopenharmony_cihdf_uhdf_path = "//drivers/hdf_core/adapter/uhdf2"
185f9996aaSopenharmony_ciidl_tool_path = "//foundation/ability/idl_tool/idl_tool_2"
195f9996aaSopenharmony_ci
205f9996aaSopenharmony_ciidl_root = "//foundation/ability/idl_tool"
215f9996aaSopenharmony_ciidl_build_deps = ""
225f9996aaSopenharmony_ci
235f9996aaSopenharmony_cibuild_root = "//build"
245f9996aaSopenharmony_citoolchain_linux = "$build_root/toolchain/linux:clang_x64"
255f9996aaSopenharmony_ciif (host_cpu == "arm64") {
265f9996aaSopenharmony_ci  toolchain_mac = "$build_root/toolchain/mac:clang_arm64"
275f9996aaSopenharmony_ci} else {
285f9996aaSopenharmony_ci  toolchain_mac = "$build_root/toolchain/mac:clang_x64"
295f9996aaSopenharmony_ci}
305f9996aaSopenharmony_citoolchain_win = "$build_root/toolchain/mingw:mingw_x86_64"
315f9996aaSopenharmony_ciif (ohos_indep_compiler_enable) {
325f9996aaSopenharmony_ci  idl_build_path =
335f9996aaSopenharmony_ci      "//binarys/foundation/ability/idl_tool/innerapis/idl/clang_x64/libs"
345f9996aaSopenharmony_ci} else {
355f9996aaSopenharmony_ci  if (host_toolchain == toolchain_mac) {
365f9996aaSopenharmony_ci    idl_out_root =
375f9996aaSopenharmony_ci        get_label_info("$idl_root:idl($toolchain_mac)", "root_out_dir")
385f9996aaSopenharmony_ci    idl_build_deps = [ "$idl_root:idl($toolchain_mac)" ]
395f9996aaSopenharmony_ci  } else if (host_toolchain == toolchain_win) {
405f9996aaSopenharmony_ci    idl_out_root =
415f9996aaSopenharmony_ci        get_label_info("$idl_root:idl($toolchain_win)", "root_out_dir")
425f9996aaSopenharmony_ci    idl_build_deps = [ "$idl_root:idl($toolchain_win)" ]
435f9996aaSopenharmony_ci  } else {
445f9996aaSopenharmony_ci    idl_out_root =
455f9996aaSopenharmony_ci        get_label_info("$idl_root:idl($toolchain_linux)", "root_out_dir")
465f9996aaSopenharmony_ci    idl_build_deps = [ "$idl_root:idl($toolchain_linux)" ]
475f9996aaSopenharmony_ci  }
485f9996aaSopenharmony_ci  idl_build_path = idl_out_root + "/ability/idl_tool"
495f9996aaSopenharmony_ci}
505f9996aaSopenharmony_ci
515f9996aaSopenharmony_citemplate("hdi") {
525f9996aaSopenharmony_ci  assert(defined(invoker.sources), "sources must be set")
535f9996aaSopenharmony_ci  assert(defined(invoker.language), "language must be set")
545f9996aaSopenharmony_ci  assert(defined(invoker.subsystem_name), "subsystem_name must be set")
555f9996aaSopenharmony_ci  assert(defined(invoker.part_name), "part_name must be set")
565f9996aaSopenharmony_ci
575f9996aaSopenharmony_ci  # the module_name is an obsolete option
585f9996aaSopenharmony_ci  if (defined(invoker.module_name)) {
595f9996aaSopenharmony_ci    print(invoker.module_name)
605f9996aaSopenharmony_ci  }
615f9996aaSopenharmony_ci
625f9996aaSopenharmony_ci  # system type
635f9996aaSopenharmony_ci  system = "full"
645f9996aaSopenharmony_ci
655f9996aaSopenharmony_ci  # generate mode, the default value is "ipc", the optional values are "ipc" or "passthrough"
665f9996aaSopenharmony_ci  mode = "ipc"
675f9996aaSopenharmony_ci  if (defined(invoker.mode)) {
685f9996aaSopenharmony_ci    assert(invoker.mode == "ipc" || invoker.mode == "passthrough",
695f9996aaSopenharmony_ci           "hdi mode must be 'ipc' or 'passthrough'")
705f9996aaSopenharmony_ci    mode = invoker.mode
715f9996aaSopenharmony_ci  }
725f9996aaSopenharmony_ci
735f9996aaSopenharmony_ci  assert(invoker.language == "c" || invoker.language == "cpp",
745f9996aaSopenharmony_ci         "the language must be set to 'c' or 'cpp'")
755f9996aaSopenharmony_ci  language = invoker.language
765f9996aaSopenharmony_ci
775f9996aaSopenharmony_ci  imports = []
785f9996aaSopenharmony_ci  if (defined(invoker.imports)) {
795f9996aaSopenharmony_ci    imports += invoker.imports
805f9996aaSopenharmony_ci  }
815f9996aaSopenharmony_ci
825f9996aaSopenharmony_ci  root_package = "ohos.hdi"
835f9996aaSopenharmony_ci  root_path = rebase_path("//drivers/interface")
845f9996aaSopenharmony_ci  if (defined(invoker.root)) {
855f9996aaSopenharmony_ci    package_path_map = string_split(invoker.root, ":")
865f9996aaSopenharmony_ci    root_package = package_path_map[0]
875f9996aaSopenharmony_ci    root_path = rebase_path(package_path_map[1])
885f9996aaSopenharmony_ci  }
895f9996aaSopenharmony_ci  root_package_path = "${root_package}:${root_path}"
905f9996aaSopenharmony_ci
915f9996aaSopenharmony_ci  # set base directory of hdi files, set this parameter to your component name if you are using external idl files.
925f9996aaSopenharmony_ci  if (defined(invoker.base_dir)) {
935f9996aaSopenharmony_ci    root_path += invoker.base_dir
945f9996aaSopenharmony_ci  }
955f9996aaSopenharmony_ci
965f9996aaSopenharmony_ci  sources_gen_dir = get_path_info("${root_path}/", "gen_dir")
975f9996aaSopenharmony_ci  get_build_info_args = [
985f9996aaSopenharmony_ci    "-s",
995f9996aaSopenharmony_ci    system,
1005f9996aaSopenharmony_ci    "-m",
1015f9996aaSopenharmony_ci    mode,
1025f9996aaSopenharmony_ci    "-l",
1035f9996aaSopenharmony_ci    invoker.language,
1045f9996aaSopenharmony_ci    "-o",
1055f9996aaSopenharmony_ci    sources_gen_dir,
1065f9996aaSopenharmony_ci    "-r",
1075f9996aaSopenharmony_ci    root_package_path,
1085f9996aaSopenharmony_ci  ]
1095f9996aaSopenharmony_ci  foreach(idl_file, invoker.sources) {
1105f9996aaSopenharmony_ci    get_build_info_args += [ "-f" ]
1115f9996aaSopenharmony_ci    get_build_info_args += [ rebase_path(idl_file) ]
1125f9996aaSopenharmony_ci  }
1135f9996aaSopenharmony_ci
1145f9996aaSopenharmony_ci  foreach(import_info, imports) {
1155f9996aaSopenharmony_ci    get_build_info_args += [
1165f9996aaSopenharmony_ci      "--import",
1175f9996aaSopenharmony_ci      import_info,
1185f9996aaSopenharmony_ci    ]
1195f9996aaSopenharmony_ci  }
1205f9996aaSopenharmony_ci
1215f9996aaSopenharmony_ci  hdi_build_info = exec_script(
1225f9996aaSopenharmony_ci          rebase_path("//build/config/components/hdi/build_hdi_files_info.py"),
1235f9996aaSopenharmony_ci          get_build_info_args,
1245f9996aaSopenharmony_ci          "json")
1255f9996aaSopenharmony_ci  assert(defined(hdi_build_info.include_dirs), "missing include_dirs")
1265f9996aaSopenharmony_ci  assert(defined(hdi_build_info.out_dir), "out_dir")
1275f9996aaSopenharmony_ci  assert(defined(hdi_build_info.version), "missing version")
1285f9996aaSopenharmony_ci  assert(defined(hdi_build_info.sources), "missing sources")
1295f9996aaSopenharmony_ci  assert(defined(hdi_build_info.proxy_sources), "missing proxy_sources")
1305f9996aaSopenharmony_ci  assert(defined(hdi_build_info.stub_sources), "missing stub_sources")
1315f9996aaSopenharmony_ci  assert(defined(hdi_build_info.proxy_deps), "missing proxy_deps")
1325f9996aaSopenharmony_ci  assert(defined(hdi_build_info.stub_deps), "missing stub_deps")
1335f9996aaSopenharmony_ci  assert(defined(hdi_build_info.header_deps), "missing header_deps")
1345f9996aaSopenharmony_ci
1355f9996aaSopenharmony_ci  idl_headers_config = "$target_name" + "_idl_headers_config"
1365f9996aaSopenharmony_ci  config("$idl_headers_config") {
1375f9996aaSopenharmony_ci    if (ohos_indep_compiler_enable) {
1385f9996aaSopenharmony_ci      include_dirs = hdi_build_info.include_dirs
1395f9996aaSopenharmony_ci    } else {
1405f9996aaSopenharmony_ci      include_dirs = [
1415f9996aaSopenharmony_ci        "$hdf_uhdf_path/include/hdi",
1425f9996aaSopenharmony_ci        "$hdf_uhdf_path/osal/include",
1435f9996aaSopenharmony_ci        "$hdf_uhdf_path/ipc/include",
1445f9996aaSopenharmony_ci        "$hdf_fwk_path/include/utils",
1455f9996aaSopenharmony_ci        "//drivers/hdf_core/interfaces/inner_api/utils",
1465f9996aaSopenharmony_ci        "//drivers/hdf_core/interfaces/inner_api/osal/uhdf",
1475f9996aaSopenharmony_ci        "//drivers/hdf_core/interfaces/inner_api/hdi",
1485f9996aaSopenharmony_ci      ]
1495f9996aaSopenharmony_ci      include_dirs += hdi_build_info.include_dirs
1505f9996aaSopenharmony_ci    }
1515f9996aaSopenharmony_ci  }
1525f9996aaSopenharmony_ci
1535f9996aaSopenharmony_ci  action("idl_gen") {
1545f9996aaSopenharmony_ci    # deps = [ "$idl_tool_path:build_hdi_gen" ]
1555f9996aaSopenharmony_ci    if (!ohos_indep_compiler_enable) {
1565f9996aaSopenharmony_ci      deps = idl_build_deps
1575f9996aaSopenharmony_ci    }
1585f9996aaSopenharmony_ci    script = "/usr/bin/env"
1595f9996aaSopenharmony_ci    if (defined(ohos_lite)) {
1605f9996aaSopenharmony_ci      script = "//build/lite/run_shell_cmd.py"
1615f9996aaSopenharmony_ci    }
1625f9996aaSopenharmony_ci
1635f9996aaSopenharmony_ci    idl_sources = invoker.sources
1645f9996aaSopenharmony_ci    inputs = invoker.sources
1655f9996aaSopenharmony_ci    outputs = hdi_build_info.sources
1665f9996aaSopenharmony_ci
1675f9996aaSopenharmony_ci    args = [
1685f9996aaSopenharmony_ci      rebase_path("${idl_build_path}") + "/idl",
1695f9996aaSopenharmony_ci      "--intf-type",
1705f9996aaSopenharmony_ci      "hdi",
1715f9996aaSopenharmony_ci      "--system",
1725f9996aaSopenharmony_ci      system,
1735f9996aaSopenharmony_ci      "--mode",
1745f9996aaSopenharmony_ci      mode,
1755f9996aaSopenharmony_ci      "-d",
1765f9996aaSopenharmony_ci      rebase_path(hdi_build_info.out_dir),
1775f9996aaSopenharmony_ci    ]
1785f9996aaSopenharmony_ci
1795f9996aaSopenharmony_ci    if (language == "c") {
1805f9996aaSopenharmony_ci      args += [ "--gen-c" ]
1815f9996aaSopenharmony_ci    } else if (language == "cpp") {
1825f9996aaSopenharmony_ci      args += [ "--gen-cpp" ]
1835f9996aaSopenharmony_ci    }
1845f9996aaSopenharmony_ci
1855f9996aaSopenharmony_ci    foreach(idl_file, idl_sources) {
1865f9996aaSopenharmony_ci      args += [ "-c" ]
1875f9996aaSopenharmony_ci      args += [ rebase_path(idl_file) ]
1885f9996aaSopenharmony_ci    }
1895f9996aaSopenharmony_ci    args += [
1905f9996aaSopenharmony_ci      "-r",
1915f9996aaSopenharmony_ci      root_package_path,
1925f9996aaSopenharmony_ci    ]
1935f9996aaSopenharmony_ci  }
1945f9996aaSopenharmony_ci
1955f9996aaSopenharmony_ci  lib_client = "lib" + target_name + "_proxy" + "_" + hdi_build_info.version
1965f9996aaSopenharmony_ci  ohos_shared_library(lib_client) {
1975f9996aaSopenharmony_ci    if (defined(invoker.sources)) {
1985f9996aaSopenharmony_ci      sources = hdi_build_info.proxy_sources
1995f9996aaSopenharmony_ci      public_configs = [ ":$idl_headers_config" ]
2005f9996aaSopenharmony_ci      deps = [ ":idl_gen" ]
2015f9996aaSopenharmony_ci      if (is_standard_system) {
2025f9996aaSopenharmony_ci        if (defined(invoker.deps)) {
2035f9996aaSopenharmony_ci          deps += invoker.deps
2045f9996aaSopenharmony_ci        }
2055f9996aaSopenharmony_ci
2065f9996aaSopenharmony_ci        public_deps = []
2075f9996aaSopenharmony_ci        if (defined(invoker.sequenceable_pub_deps)) {
2085f9996aaSopenharmony_ci          public_deps += invoker.sequenceable_pub_deps
2095f9996aaSopenharmony_ci        }
2105f9996aaSopenharmony_ci
2115f9996aaSopenharmony_ci        public_deps += hdi_build_info.proxy_deps
2125f9996aaSopenharmony_ci
2135f9996aaSopenharmony_ci        external_deps = [
2145f9996aaSopenharmony_ci          "c_utils:utils",
2155f9996aaSopenharmony_ci          "hdf_core:libhdf_utils",
2165f9996aaSopenharmony_ci          "hdf_core:libhdi",
2175f9996aaSopenharmony_ci          "hdf_core:libpub_utils",
2185f9996aaSopenharmony_ci          "hilog:libhilog",
2195f9996aaSopenharmony_ci        ]
2205f9996aaSopenharmony_ci        if (defined(invoker.sequenceable_ext_deps)) {
2215f9996aaSopenharmony_ci          external_deps += invoker.sequenceable_ext_deps
2225f9996aaSopenharmony_ci        }
2235f9996aaSopenharmony_ci        if (invoker.language == "c") {
2245f9996aaSopenharmony_ci          external_deps += [ "hdf_core:libhdf_ipc_adapter" ]
2255f9996aaSopenharmony_ci        } else if (invoker.language == "cpp") {
2265f9996aaSopenharmony_ci          external_deps += [ "ipc:ipc_single" ]
2275f9996aaSopenharmony_ci        }
2285f9996aaSopenharmony_ci      } else {
2295f9996aaSopenharmony_ci        external_deps = [ "hilog:libhilog" ]
2305f9996aaSopenharmony_ci      }
2315f9996aaSopenharmony_ci
2325f9996aaSopenharmony_ci      if (defined(invoker.innerapi_tags)) {
2335f9996aaSopenharmony_ci        innerapi_tags = invoker.innerapi_tags
2345f9996aaSopenharmony_ci      }
2355f9996aaSopenharmony_ci      shlib_type = "hdi_proxy"
2365f9996aaSopenharmony_ci      if (defined(invoker.install_images)) {
2375f9996aaSopenharmony_ci        install_images = invoker.install_images
2385f9996aaSopenharmony_ci      } else {
2395f9996aaSopenharmony_ci        install_images = [ system_base_dir ]
2405f9996aaSopenharmony_ci      }
2415f9996aaSopenharmony_ci
2425f9996aaSopenharmony_ci      subsystem_name = invoker.subsystem_name
2435f9996aaSopenharmony_ci      partname_list = string_split(invoker.part_name, "_")
2445f9996aaSopenharmony_ci      if (partname_list[0] == "drivers") {
2455f9996aaSopenharmony_ci        part_name = invoker.part_name
2465f9996aaSopenharmony_ci      } else {
2475f9996aaSopenharmony_ci        part_name = invoker.part_name + "_interface"
2485f9996aaSopenharmony_ci      }
2495f9996aaSopenharmony_ci
2505f9996aaSopenharmony_ci      if (defined(invoker.stack_protector_ret)) {
2515f9996aaSopenharmony_ci        stack_protector_ret = invoker.stack_protector_ret
2525f9996aaSopenharmony_ci      }
2535f9996aaSopenharmony_ci
2545f9996aaSopenharmony_ci      if (defined(invoker.sanitize)) {
2555f9996aaSopenharmony_ci        sanitize = invoker.sanitize
2565f9996aaSopenharmony_ci      }
2575f9996aaSopenharmony_ci
2585f9996aaSopenharmony_ci      if (defined(invoker.cflags)) {
2595f9996aaSopenharmony_ci        cflags = invoker.cflags
2605f9996aaSopenharmony_ci      }
2615f9996aaSopenharmony_ci
2625f9996aaSopenharmony_ci      if (defined(invoker.cflags_cc)) {
2635f9996aaSopenharmony_ci        cflags_cc = invoker.cflags_cc
2645f9996aaSopenharmony_ci      }
2655f9996aaSopenharmony_ci
2665f9996aaSopenharmony_ci      if (defined(invoker.branch_protector_ret)) {
2675f9996aaSopenharmony_ci        branch_protector_ret = invoker.branch_protector_ret
2685f9996aaSopenharmony_ci      }
2695f9996aaSopenharmony_ci    }
2705f9996aaSopenharmony_ci  }
2715f9996aaSopenharmony_ci
2725f9996aaSopenharmony_ci  if (mode == "ipc") {
2735f9996aaSopenharmony_ci    lib_server = "lib" + target_name + "_stub" + "_" + hdi_build_info.version
2745f9996aaSopenharmony_ci    ohos_shared_library(lib_server) {
2755f9996aaSopenharmony_ci      if (defined(invoker.sources)) {
2765f9996aaSopenharmony_ci        sources = hdi_build_info.stub_sources
2775f9996aaSopenharmony_ci        public_configs = [ ":$idl_headers_config" ]
2785f9996aaSopenharmony_ci
2795f9996aaSopenharmony_ci        deps = [ ":idl_gen" ]
2805f9996aaSopenharmony_ci        if (is_standard_system) {
2815f9996aaSopenharmony_ci          if (defined(invoker.deps)) {
2825f9996aaSopenharmony_ci            deps += invoker.deps
2835f9996aaSopenharmony_ci          }
2845f9996aaSopenharmony_ci          public_deps = []
2855f9996aaSopenharmony_ci          if (defined(invoker.sequenceable_pub_deps)) {
2865f9996aaSopenharmony_ci            public_deps += invoker.sequenceable_pub_deps
2875f9996aaSopenharmony_ci          }
2885f9996aaSopenharmony_ci
2895f9996aaSopenharmony_ci          public_deps += hdi_build_info.stub_deps
2905f9996aaSopenharmony_ci
2915f9996aaSopenharmony_ci          external_deps = [
2925f9996aaSopenharmony_ci            "c_utils:utils",
2935f9996aaSopenharmony_ci            "hdf_core:libhdf_utils",
2945f9996aaSopenharmony_ci            "hdf_core:libhdi",
2955f9996aaSopenharmony_ci            "hilog:libhilog",
2965f9996aaSopenharmony_ci          ]
2975f9996aaSopenharmony_ci          if (defined(invoker.sequenceable_ext_deps)) {
2985f9996aaSopenharmony_ci            external_deps += invoker.sequenceable_ext_deps
2995f9996aaSopenharmony_ci          }
3005f9996aaSopenharmony_ci          if (invoker.language == "c") {
3015f9996aaSopenharmony_ci            external_deps += [
3025f9996aaSopenharmony_ci              "hdf_core:libhdf_ipc_adapter",
3035f9996aaSopenharmony_ci              "hdf_core:libhdf_utils",
3045f9996aaSopenharmony_ci            ]
3055f9996aaSopenharmony_ci          } else if (invoker.language == "cpp") {
3065f9996aaSopenharmony_ci            external_deps += [ "ipc:ipc_single" ]
3075f9996aaSopenharmony_ci          }
3085f9996aaSopenharmony_ci        } else {
3095f9996aaSopenharmony_ci          external_deps = [ "hilog:libhilog" ]
3105f9996aaSopenharmony_ci        }
3115f9996aaSopenharmony_ci
3125f9996aaSopenharmony_ci        shlib_type = "hdi_stub"
3135f9996aaSopenharmony_ci        install_images = [ chipset_base_dir ]
3145f9996aaSopenharmony_ci        subsystem_name = invoker.subsystem_name
3155f9996aaSopenharmony_ci        part_name = invoker.part_name
3165f9996aaSopenharmony_ci
3175f9996aaSopenharmony_ci        if (defined(invoker.stack_protector_ret)) {
3185f9996aaSopenharmony_ci          stack_protector_ret = invoker.stack_protector_ret
3195f9996aaSopenharmony_ci        }
3205f9996aaSopenharmony_ci
3215f9996aaSopenharmony_ci        if (defined(invoker.sanitize)) {
3225f9996aaSopenharmony_ci          sanitize = invoker.sanitize
3235f9996aaSopenharmony_ci        }
3245f9996aaSopenharmony_ci
3255f9996aaSopenharmony_ci        if (defined(invoker.cflags)) {
3265f9996aaSopenharmony_ci          cflags = invoker.cflags
3275f9996aaSopenharmony_ci        }
3285f9996aaSopenharmony_ci
3295f9996aaSopenharmony_ci        if (defined(invoker.cflags_cc)) {
3305f9996aaSopenharmony_ci          cflags_cc = invoker.cflags_cc
3315f9996aaSopenharmony_ci        }
3325f9996aaSopenharmony_ci
3335f9996aaSopenharmony_ci        if (defined(invoker.branch_protector_ret)) {
3345f9996aaSopenharmony_ci          branch_protector_ret = invoker.branch_protector_ret
3355f9996aaSopenharmony_ci        }
3365f9996aaSopenharmony_ci      }
3375f9996aaSopenharmony_ci    }
3385f9996aaSopenharmony_ci  }
3395f9996aaSopenharmony_ci
3405f9996aaSopenharmony_ci  # generate code and shared library
3415f9996aaSopenharmony_ci  group("$target_name" + "_idl_target") {
3425f9996aaSopenharmony_ci    deps = [ ":$lib_client" ]
3435f9996aaSopenharmony_ci    if (mode == "ipc") {
3445f9996aaSopenharmony_ci      deps += [ ":$lib_server" ]
3455f9996aaSopenharmony_ci    }
3465f9996aaSopenharmony_ci  }
3475f9996aaSopenharmony_ci
3485f9996aaSopenharmony_ci  # only generate code and provide header file path
3495f9996aaSopenharmony_ci  # usage example: external_deps = [ "drivers_interface_xxx:xxx_idl_headers" ]
3505f9996aaSopenharmony_ci  # this target has been replaced by 'idl_headers_target', please use 'idl_headers_target'
3515f9996aaSopenharmony_ci  group("$target_name" + "_idl_headers") {
3525f9996aaSopenharmony_ci    public_configs = [ ":$idl_headers_config" ]
3535f9996aaSopenharmony_ci    deps = [ ":idl_gen" ]
3545f9996aaSopenharmony_ci  }
3555f9996aaSopenharmony_ci
3565f9996aaSopenharmony_ci  # only generate code and provide header file path
3575f9996aaSopenharmony_ci  # usage example: external_deps = [ "drivers_interface_xxx:xxx_idl_headers_1.0" ]
3585f9996aaSopenharmony_ci  idl_headers_target = target_name + "_idl_headers_" + hdi_build_info.version
3595f9996aaSopenharmony_ci  group(idl_headers_target) {
3605f9996aaSopenharmony_ci    public_configs = [ ":$idl_headers_config" ]
3615f9996aaSopenharmony_ci    deps = [ ":idl_gen" ]
3625f9996aaSopenharmony_ci    public_deps = hdi_build_info.header_deps
3635f9996aaSopenharmony_ci  }
3645f9996aaSopenharmony_ci}
365