# Copyright (c) 2021 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}/build/chip/tools.gni")

assert(chip_build_tools)

executable("chip-cert") {
  sources = [
    "CertUtils.cpp",
    "Cmd_ConvertCert.cpp",
    "Cmd_ConvertKey.cpp",
    "Cmd_GenAttCert.cpp",
    "Cmd_GenCD.cpp",
    "Cmd_GenCert.cpp",
    "Cmd_PrintCD.cpp",
    "Cmd_PrintCert.cpp",
    "Cmd_ResignCert.cpp",
    "Cmd_ValidateAttCert.cpp",
    "Cmd_ValidateCert.cpp",
    "GeneralUtils.cpp",
    "KeyUtils.cpp",
    "chip-cert.cpp",
    "chip-cert.h",
  ]

  public_configs = [ "${chip_root}/src/crypto:openssl_config" ]

  cflags = [ "-Wconversion" ]

  public_deps = [
    "${chip_root}/src/credentials",
    "${chip_root}/src/crypto",
    "${chip_root}/src/lib/asn1",
    "${chip_root}/src/lib/core",
    "${chip_root}/src/lib/support",
  ]

  output_dir = root_out_dir
}
