# Copyright 2019 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("//src/graphics/lib/compute/gn/build_rules.gni")

config("config") {
  # Unlike the sources here, clients use "common/..." to include the headers.
  include_dirs = [ graphics_compute_dir ]
}

source_set("common") {
  public_configs = [ ":config" ]
  public = [
    "file_utils.h",
    "macros.h",
    "util.h",
  ]
  sources = [
    "file_utils.c",
    "file_utils.h",
    "macros.h",
    "util.c",
    "util.h",
  ]
}

graphics_compute_unittests("common_unittests") {
  sources = [
    "file_utils_unittest.cc",
    "util_unittests.cc",
  ]
  deps = [ ":common" ]
}
