# Copyright (c) 2023-2026 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("../extdevmgr.gni")

if (external_device_manager_enable_service) {
  ohos_shared_library("driver_extension_manager") {
    install_enable = true
    sources = [
      "${ext_mgr_path}/services/native/driver_extension_manager/src/driver_ext_mgr_types.cpp",
      "native/driver_extension_manager/src/driver_ext_mgr.cpp",
      "native/driver_extension_manager/src/event_config.cpp",
      "native/driver_extension_manager/src/ext_permission_manager.cpp",
    ]

    include_dirs = [
      "${ext_mgr_path}/services/native/driver_extension_manager/include",
      "${ext_mgr_path}/interfaces/ddk/usb/",
      "${ext_mgr_path}/interfaces/innerkits/",
      "${ext_mgr_path}/services/native/driver_extension_manager/include/drivers_hisysevent",
      "${ext_mgr_path}/services/native/driver_extension_manager/include/drivers_pkg_manager",
      "${ext_mgr_path}/services/native/driver_extension_manager/include/device_manager",
      "${ext_mgr_path}/services/native/driver_extension_manager/include/bus_extension/core",
      "${ext_mgr_path}/services/native/driver_extension_manager/include/bus_extension/usb",
      "${ext_mgr_path}/services/native/driver_extension_manager/include/device_notification",
    ]
    configs = [ "${utils_path}:utils_config" ]
    deps = [
      "${ext_mgr_path}/interfaces/innerkits:external_device_manager_stub",
      "${ext_mgr_path}/services/native/driver_extension_manager/profile:peripheral_fault_notifier_config",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_fault_icon",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_locale_path",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_base",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_bo_CN",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_ug",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_zh_CN",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_zh_HK",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_zh_TW",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_zz_ZX",
      "${ext_mgr_path}/services/native/driver_extension_manager/src/bus_extension/core:driver_extension_bus_core",
      "${ext_mgr_path}/services/native/driver_extension_manager/src/device_manager:driver_extension_device_manager",
      "${ext_mgr_path}/services/native/driver_extension_manager/src/device_notification:notification_peripheral",
      "${ext_mgr_path}/services/native/driver_extension_manager/src/drivers_hisysevent:report_sys_event",
      "${ext_mgr_path}/services/native/driver_extension_manager/src/drivers_pkg_manager:drivers_pkg_manager",
    ]
    external_deps = [
      "ability_runtime:ability_manager",
      "access_token:libaccesstoken_sdk",
      "access_token:libtokenid_sdk",
      "bundle_framework:appexecfwk_base",
      "bundle_framework:appexecfwk_core",
      "bundle_framework:libappexecfwk_common",
      "cJSON:cjson",
      "c_utils:utils",
      "distributed_notification_service:ans_innerkits",
      "hilog:libhilog",
      "hisysevent:libhisysevent",
      "i18n:intl_util",
      "ipc:ipc_core",
      "safwk:system_ability_fwk",
      "samgr:samgr_proxy",
    ]
    cflags_cc = [
      "-fno-asynchronous-unwind-tables",
      "-fno-unwind-tables",
      "-Os",
    ]
    branch_protector_ret = "pac_ret"
    sanitize = {
      cfi = true
      cfi_cross_dso = true
      cfi_no_nvcall = true
      cfi_vcall_icall_only = true
      debug = false
    }

    shlib_type = "sa"
    subsystem_name = "hdf"
    part_name = "external_device_manager"
  }
} else {
  group("driver_extension_manager") {}
}

################################################################################################################

config("driver_extension_manager_test_public_config") {
  include_dirs = [
    "${ext_mgr_path}/services/native/driver_extension_manager/include",
    "${ext_mgr_path}/interfaces/ddk/usb/",
    "${ext_mgr_path}/interfaces/innerkits/",
    "${ext_mgr_path}/utils/include/",
    "${ext_mgr_path}/services/native/driver_extension_manager/include/drivers_pkg_manager",
  ]
}

if (external_device_manager_enable_service) {
  ohos_static_library("driver_extension_manager_test") {
    branch_protector_ret = "pac_ret"
    sanitize = {
      cfi = true
      cfi_cross_dso = true
      debug = false
    }
    sources = [
      "${ext_mgr_path}/services/native/driver_extension_manager/src/driver_ext_mgr_types.cpp",
      "native/driver_extension_manager/src/driver_ext_mgr.cpp",
      "native/driver_extension_manager/src/event_config.cpp",
      "native/driver_extension_manager/src/ext_permission_manager.cpp",
    ]

    public_configs = [ ":driver_extension_manager_test_public_config" ]

    include_dirs = [
      "${ext_mgr_path}/interfaces/ddk/usb/",
      "${ext_mgr_path}/services/native/driver_extension_manager/include/device_manager",
      "${ext_mgr_path}/services/native/driver_extension_manager/include/drivers_hisysevent",
      "${ext_mgr_path}/services/native/driver_extension_manager/include/bus_extension/core",
      "${ext_mgr_path}/services/native/driver_extension_manager/include/device_notification",
    ]

    configs = [ "${utils_path}:utils_config" ]
    deps = [
      "${ext_mgr_path}/interfaces/innerkits:external_device_manager_stub",
      "${ext_mgr_path}/services/native/driver_extension_manager/profile:peripheral_fault_notifier_config",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_fault_icon",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_locale_path",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_base",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_bo_CN",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_ug",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_zh_CN",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_zh_HK",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_zh_TW",
      "${ext_mgr_path}/services/native/driver_extension_manager/resources:peripheral_notification_zz_ZX",
      "${ext_mgr_path}/services/native/driver_extension_manager/src/bus_extension/core:driver_extension_bus_core",
      "${ext_mgr_path}/services/native/driver_extension_manager/src/device_manager:driver_extension_device_manager",
      "${ext_mgr_path}/services/native/driver_extension_manager/src/device_notification:notification_peripheral",
      "${ext_mgr_path}/services/native/driver_extension_manager/src/drivers_hisysevent:report_sys_event",
      "${ext_mgr_path}/services/native/driver_extension_manager/src/drivers_pkg_manager:drivers_pkg_manager",
    ]
    external_deps = [
      "ability_runtime:ability_manager",
      "access_token:libaccesstoken_sdk",
      "access_token:libtokenid_sdk",
      "bundle_framework:appexecfwk_base",
      "bundle_framework:appexecfwk_core",
      "bundle_framework:libappexecfwk_common",
      "cJSON:cjson",
      "c_utils:utils",
      "distributed_notification_service:ans_innerkits",
      "hilog:libhilog",
      "i18n:intl_util",
      "ipc:ipc_core",
      "safwk:system_ability_fwk",
      "samgr:samgr_proxy",
    ]

    subsystem_name = "hdf"
    part_name = "external_device_manager"
  }
} else {
  group("driver_extension_manager_test") {}
}