# 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("rankers") {
  public_deps = [
    ":linear_ranker",
    ":ranker",
  ]
}

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

  deps = [
    "//sdk/fidl/fuchsia.modular",
  ]

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

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

  deps = [
    ":ranker",
    "//sdk/fidl/fuchsia.modular",
    "//src/lib/fxl",
  ]

  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",
  ]
}
