# 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/pkg_config.gni")

group("all") {
  deps = [ ":croslog" ]
  if (use.test) {
    deps += [ ":croslog_testrunner" ]
  }
}

static_library("libcroslog_static") {
  sources = [
    "config.cc",
    "config.h",
    "file_change_watcher.cc",
    "file_change_watcher.h",
    "log_entry.cc",
    "log_entry.h",
    "log_line_reader.cc",
    "log_line_reader.h",
    "log_parser.h",
    "log_parser_syslog.cc",
    "log_parser_syslog.h",
    "multiplexer.cc",
    "multiplexer.h",
    "viewer_plaintext.cc",
    "viewer_plaintext.h",
  ]
  configs += [ ":target_defaults" ]
}

pkg_config("target_defaults") {
  pkg_deps = [ "libchrome-${libbase_ver}" ]
}

executable("croslog") {
  configs += [ ":target_defaults" ]

  sources = [ "main.cc" ]
  install_path = "sbin"
  deps = [ ":libcroslog_static" ]
}

if (use.test) {
  pkg_config("croslog_testrunner_config") {
    pkg_deps = [ "libchrome-test-${libbase_ver}" ]
  }

  executable("croslog_testrunner") {
    sources = [
      "config_test.cc",
      "file_change_watcher_test.cc",
      "log_line_reader_test.cc",
      "log_parser_syslog_test.cc",
      "multiplexer_test.cc",
      "testrunner.cc",
    ]
    run_test = true
    defines = [ "UNIT_TEST" ]
    configs += [
      "//common-mk:test",
      ":croslog_testrunner_config",
      ":target_defaults",
    ]
    deps = [ ":libcroslog_static" ]
  }
}
