# Copyright 2013 The Flutter 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("../tools/impeller.gni")

impeller_component("archivist") {
  public = [
    "archivable.h",
    "archive.h",
    "archive_location.h",
  ]

  sources = [
    "archivable.cc",
    "archivable.h",
    "archive.cc",
    "archive.h",
    "archive_class_registration.cc",
    "archive_class_registration.h",
    "archive_database.cc",
    "archive_database.h",
    "archive_location.cc",
    "archive_statement.cc",
    "archive_statement.h",
    "archive_transaction.cc",
    "archive_transaction.h",
    "archive_vector.cc",
    "archive_vector.h",
  ]

  public_deps = [ "../base" ]

  deps = [
    "//flutter/fml",
    "//third_party/sqlite",
  ]
}

impeller_component("archivist_unittests") {
  testonly = true
  sources = [
    "archivist_fixture.cc",
    "archivist_fixture.h",
    "archivist_unittests.cc",
  ]
  deps = [
    ":archivist",
    "//flutter/testing",
  ]
}
