# Copyright (c) 2023-2024 Project CHIP Authors
#
# 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_overrides/chip.gni")
import("${chip_root}/examples/common/pigweed/pigweed_rpcs.gni")
import("${chip_root}/src/app/chip_data_model.gni")

config("config") {
  include_dirs = [ "include" ]
}

chip_data_model("evse-common") {
  zap_file = "evse-app.zap"
  is_server = true
}

source_set("evse-common-lib") {
  sources = [
    "src/ChargingTargetsMemMgr.cpp",
    "src/energy-evse-mode.cpp",
  ]

  public_configs = [ ":config" ]

  public_deps = [
    "${chip_root}/examples/energy-management/device-energy-management:device-energy-management",
    "${chip_root}/examples/energy-management/electrical-sensor:electrical-sensor",
    "${chip_root}/examples/energy-management/utils:energy-management-utils",
    "${chip_root}/src/app",
    "${chip_root}/src/app/clusters/energy-evse-server",
    "${chip_root}/src/lib/core",
    "${chip_root}/src/protocols/interaction_model",
    "${chip_root}/src/system",
  ]
}
