# 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.

##########################################
# Though under //zircon, this build file #
# is meant to be used in the Fuchsia GN  #
# build.                                 #
# See fxb/36548.                         #
##########################################

assert(!defined(zx) || zx != "/",
       "This file can only be used in the Fuchsia GN build.")

import("//build/unification/zx_library.gni")

zx_library("image-format") {
  sdk = "source"
  sdk_headers = [ "lib/image-format/image_format.h" ]
  sources = [ "image_format.cc" ]
  public_deps = [ "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c" ]
  deps = [
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fidl",
  ]
}

zx_library("image-format-llcpp") {
  sdk = "source"
  sdk_headers = [ "lib/image-format-llcpp/image-format-llcpp.h" ]
  sources = [ "image-format-llcpp.cc" ]
  public_deps = [
    ":image-format",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_llcpp",
  ]
  deps = [
    ":image-format",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_llcpp",
  ]
}
