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