# Copyright 2018 The Fuchsia 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("//peridot/build/executable_package.gni")

group("all") {
  public_deps = [
    ":linear_ranker",
    ":ranker",
  ]
}

source_set("ranker") {
  sources = [
    "ranker.cc",
    "ranker.h",
  ]

  deps = [
    "//peridot/public/fidl/fuchsia.modular",
  ]

  public_deps = [
    "//peridot/bin/suggestion_engine:models",
  ]
}

source_set("linear_ranker") {
  sources = [
    "linear_ranker.cc",
    "linear_ranker.h",
  ]

  deps = [
    ":ranker",
    "//garnet/public/lib/fxl",
    "//peridot/public/fidl/fuchsia.modular",
  ]

  public_deps = [
    "//peridot/bin/suggestion_engine/ranking_features:ranking_feature",
  ]
}

executable("linear_ranker_unittest") {
  testonly = true

  sources = [
    "linear_ranker_unittest.cc",
  ]

  deps = [
    ":linear_ranker",
    "//garnet/public/lib/gtest",
    "//third_party/googletest:gtest_main",
  ]
}
