# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//common-mk/proto_library.gni")

group("all") {
  deps = [ ":hardware_verifier-goprotos" ]
}

config("target_defaults") {
  # Manually add the include path so that the generated .pb.h files can
  # include runtime_probe.pb.h properly.
  cflags = [ "-I${sysroot}/usr/include/runtime_probe/proto_bindings" ]
}

# This library is used by the BUILD.gn of the parent directory and therefore we
# do not depend on it at "all" target.
proto_library("hardware_verifier-protos") {
  configs = [ ":target_defaults" ]
  proto_in_dir = "./"
  proto_out_dir = "include/hardware_verifier"
  proto_lib_dirs = [ "${sysroot}/usr/include/chromeos/dbus/runtime_probe" ]
  sources = [ "${proto_in_dir}/hardware_verifier.proto" ]
}

goproto_library("hardware_verifier-goprotos") {
  import_mapping =
      [ "runtime_probe.proto=chromiumos/system_api/runtime_probe_proto" ]
  proto_in_dir = "./"
  proto_out_dir = "go/src/chromiumos/hardware_verifier"
  proto_lib_dirs = [ "${sysroot}/usr/include/chromeos/dbus/runtime_probe" ]
  sources = [ "${proto_in_dir}/hardware_verifier.proto" ]
}
