# Copyright 2016 The Chromium 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("//testing/test.gni")

group("catalog") {
  testonly = true
  deps = [
    ":lib",
  ]
}

source_set("constants") {
  sources = [
    "store.cc",
    "store.h",
  ]
}

component("lib") {
  sources = [
    "catalog.cc",
    "catalog.h",
    "constants.cc",
    "constants.h",
    "entry.cc",
    "entry.h",
    "entry_cache.cc",
    "entry_cache.h",
    "instance.cc",
    "instance.h",
    "service_options.cc",
    "service_options.h",
  ]

  configs += [ "//build/config/compiler:wexit_time_destructors" ]

  deps = [
    ":constants",
    "//base",
    "//components/services/filesystem:lib",
    "//services/catalog/public/cpp",
    "//services/catalog/public/mojom",
    "//services/service_manager/public/cpp",
  ]

  public_deps = [
    # directory.mojom.h is #included by catalog.h
    "//components/services/filesystem/public/interfaces",
  ]

  output_name = "catalog_lib"

  defines = [ "IS_CATALOG_IMPL" ]
}
