# 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 = [ ":foomatic_shell" ]
  if (use.test) {
    deps += [ ":foomatic_shell_test" ]
  }
  if (use.fuzzer) {
    deps += [ ":foomatic_shell_fuzzer" ]
  }
}

pkg_config("target_defaults") {
  pkg_deps = [
    "libbrillo",
    "libchrome",
  ]
}

executable("foomatic_shell") {
  sources = [
    "grammar.cc",
    "grammar.h",
    "main.cc",
    "parser.cc",
    "parser.h",
    "process_launcher.cc",
    "process_launcher.h",
    "scanner.cc",
    "scanner.h",
    "shell.cc",
    "shell.h",
    "verifier.cc",
    "verifier.h",
  ]
  configs += [ ":target_defaults" ]
}

if (use.test) {
  executable("foomatic_shell_test") {
    sources = [
      "grammar.h",
      "parser.cc",
      "parser.h",
      "parser_test.cc",
      "scanner.cc",
      "scanner.h",
      "scanner_test.cc",
    ]
    configs += [
      "//common-mk:test",
      ":target_defaults",
    ]
    deps = [ "//common-mk/testrunner" ]
  }
}

if (use.fuzzer) {
  pkg_config("libchrome_test_config") {
    pkg_deps = [
      "libchrome",
      "libchrome-test",
    ]
  }
  executable("foomatic_shell_fuzzer") {
    sources = [
      "grammar.h",
      "parser.cc",
      "parser.h",
      "parser_fuzzer.cc",
      "scanner.cc",
      "scanner.h",
    ]
    configs += [
      "//common-mk/common_fuzzer",
      ":libchrome_test_config",
    ]
  }
}
