# Copyright (c) 2022-2024 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("//build/ohos.gni")
import("//foundation/arkui/ace_engine/ace_config.gni")

common_napi_libs = [
  # napi .so needs to be all lower case
  "arkui/componentutils",
  "arkui/component_snapshot",
  "arkui/drag_controller",
  "arkui/focus_controller",
  "arkui/smart_gesture_controller",
  "arkui/inspector",
  "arkui/observer",
  "arkui/performancemonitor",
  "arkui/text_menu_controller",
  "arkui/ui_material",
  "configuration",
  "device",
  "font",
  "grid",
  "measure",
  "mediaquery",
  "overlay",
  "prompt",
  "promptaction",
  "router",
  "animator",
  "atomic_service_bar",
  "luminance_sampler",
  "graphics/display_sync",
]

if (is_arkui_x) {
  common_napi_libs += [ "arkui/drawabledescriptor" ]
}

if (!is_arkui_x) {
  common_napi_libs += [
    "arkui/container_utils",
    "arkui/color_sampler",
  ]
}

template("ace_napi_lib") {
  forward_variables_from(invoker, "*")

  target_names = string_split(target_name, "/")
  prefix_dir = target_names[0]

  module_path = prefix_dir
  install_dir = ""
  if (prefix_dir != target_name) {
    module_path = target_names[1]
    install_dir = "/" + prefix_dir
  }

  module_name = string_replace(module_path, "_", "")

  ohos_shared_library(module_name) {
    if (current_os == "ohos") {
      sanitize = {
        integer_overflow = true
        boundary_sanitize = true
        debug = ace_sanitize_debug
      }
    }
    deps = [ "$ace_root/interfaces/napi/kits/${module_path}:${module_name}_static_${platform}" ]
    cflags = []
    ldflags = []
    sources = []
    defines = []
    include_dirs = []
    if (ace_engine_feature_enable_coverage) {
      cflags += [ "--coverage" ]
      ldflags += [ "--coverage" ]
    }
    if (use_hilog) {
      external_deps = [ "hilog:libhilog" ]
    }
    relative_install_dir = "module" + install_dir
    part_name = ace_engine_part
    subsystem_name = ace_engine_subsystem
  }
}