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

assert(is_fuchsia)

import("fuchsia_sdk_pkg.gni")

config("sdk_lib_dirs_config") {
  visibility = [ ":*" ]
  lib_dirs = [ "sdk/arch/${target_cpu}/lib" ]
}

fuchsia_sdk_pkg("async") {
  sources = [
    "include/lib/async/dispatcher.h",
    "include/lib/async/receiver.h",
    "include/lib/async/task.h",
    "include/lib/async/time.h",
    "include/lib/async/trap.h",
    "include/lib/async/wait.h",
    "ops.c",
  ]
}

# async-default keep a per-thread dispatcher for async.
fuchsia_sdk_pkg("async_default") {
  package_name = "async-default"
  sources = [
    "include/lib/async/default.h",
  ]

  libs = [ "async-default" ]
}

fuchsia_sdk_pkg("fdio") {
  sources = [
    "include/lib/fdio/debug.h",
    "include/lib/fdio/io.h",
    "include/lib/fdio/limits.h",
    "include/lib/fdio/module.modulemap",
    "include/lib/fdio/namespace.h",
    "include/lib/fdio/private.h",
    "include/lib/fdio/remoteio.h",
    "include/lib/fdio/socket.h",
    "include/lib/fdio/spawn.h",
    "include/lib/fdio/util.h",
    "include/lib/fdio/vfs.h",
    "include/lib/fdio/watcher.h",
  ]

  libs = [ "fdio" ]
}

fuchsia_sdk_pkg("fidl") {
  # FIDL headers include async headers. These dependencies needs to be public
  # to ensure that dependent targets get correct include paths.
  public_deps = [
    ":async",
    ":async_default",
  ]

  sources = [
    "builder.cpp",
    "decoding.cpp",
    "encoding.cpp",
    "formatting.cpp",
    "include/lib/fidl/coding.h",
    "include/lib/fidl/cpp/builder.h",
    "include/lib/fidl/cpp/message.h",
    "include/lib/fidl/cpp/message_buffer.h",
    "include/lib/fidl/cpp/message_builder.h",
    "include/lib/fidl/cpp/message_part.h",
    "include/lib/fidl/cpp/string_view.h",
    "include/lib/fidl/cpp/vector_view.h",
    "include/lib/fidl/internal.h",
    "message.cpp",
    "message_buffer.cpp",
    "message_builder.cpp",
    "validating.cpp",
  ]
}

fuchsia_sdk_pkg("fidl_cpp") {
  public_deps = [
    ":fidl",
    ":fidl_cpp_sync",
    ":fit",
    ":zx",
  ]
  sources = [
    "clone.cc",
    "include/lib/fidl/cpp/binding.h",
    "include/lib/fidl/cpp/binding_set.h",
    "include/lib/fidl/cpp/clone.h",
    "include/lib/fidl/cpp/interface_ptr.h",
    "include/lib/fidl/cpp/interface_ptr_set.h",
    "include/lib/fidl/cpp/internal/header.h",
    "include/lib/fidl/cpp/internal/implementation.h",
    "include/lib/fidl/cpp/internal/message_handler.h",
    "include/lib/fidl/cpp/internal/message_reader.h",
    "include/lib/fidl/cpp/internal/pending_response.h",
    "include/lib/fidl/cpp/internal/proxy.h",
    "include/lib/fidl/cpp/internal/proxy_controller.h",
    "include/lib/fidl/cpp/internal/stub.h",
    "include/lib/fidl/cpp/internal/stub_controller.h",
    "include/lib/fidl/cpp/internal/weak_stub_controller.h",
    "include/lib/fidl/cpp/optional.h",
    "include/lib/fidl/cpp/string.h",
    "include/lib/fidl/cpp/thread_safe_binding_set.h",
    "internal/message_handler.cc",
    "internal/message_reader.cc",
    "internal/pending_response.cc",
    "internal/proxy.cc",
    "internal/proxy_controller.cc",
    "internal/stub.cc",
    "internal/stub_controller.cc",
    "internal/weak_stub_controller.cc",
    "string.cc",
  ]
}

fuchsia_sdk_pkg("fidl_cpp_sync") {
  public_deps = [
    ":fidl",
    ":fit",
    ":zx",
  ]
  sources = [
    "coding_traits.cc",
    "decoder.cc",
    "encoder.cc",
    "include/lib/fidl/cpp/array.h",
    "include/lib/fidl/cpp/coding_traits.h",
    "include/lib/fidl/cpp/comparison.h",
    "include/lib/fidl/cpp/decoder.h",
    "include/lib/fidl/cpp/encoder.h",
    "include/lib/fidl/cpp/interface_handle.h",
    "include/lib/fidl/cpp/interface_request.h",
    "include/lib/fidl/cpp/internal/logging.h",
    "include/lib/fidl/cpp/internal/synchronous_proxy.h",
    "include/lib/fidl/cpp/synchronous_interface_ptr.h",
    "include/lib/fidl/cpp/traits.h",
    "include/lib/fidl/cpp/vector.h",
    "internal/logging.cc",
    "internal/synchronous_proxy.cc",
  ]
}

fuchsia_sdk_pkg("fit") {
  sources = [
    "include/lib/fit/function.h",
  ]
}

fuchsia_sdk_pkg("svc") {
  sources = [
    "include/lib/svc/dir.h",
  ]

  libs = [ "svc" ]
}

fuchsia_sdk_pkg("zx") {
  sources = [
    "channel.cpp",
    "event.cpp",
    "eventpair.cpp",
    "fifo.cpp",
    "guest.cpp",
    "include/lib/zx/bti.h",
    "include/lib/zx/channel.h",
    "include/lib/zx/event.h",
    "include/lib/zx/eventpair.h",
    "include/lib/zx/fifo.h",
    "include/lib/zx/guest.h",
    "include/lib/zx/handle.h",
    "include/lib/zx/interrupt.h",
    "include/lib/zx/job.h",
    "include/lib/zx/log.h",
    "include/lib/zx/object.h",
    "include/lib/zx/object_traits.h",
    "include/lib/zx/pmt.h",
    "include/lib/zx/port.h",
    "include/lib/zx/process.h",
    "include/lib/zx/resource.h",
    "include/lib/zx/socket.h",
    "include/lib/zx/task.h",
    "include/lib/zx/thread.h",
    "include/lib/zx/time.h",
    "include/lib/zx/timer.h",
    "include/lib/zx/vmar.h",
    "include/lib/zx/vmo.h",
    "interrupt.cpp",
    "job.cpp",
    "log.cpp",
    "port.cpp",
    "process.cpp",
    "resource.cpp",
    "socket.cpp",
    "thread.cpp",
    "timer.cpp",
    "vmar.cpp",
    "vmo.cpp",
  ]
}

copy("vulkan_layers") {
  sources = [
    "sdk/pkg/vulkan_layers/data/vulkan/explicit_layer.d/VkLayer_core_validation.json",
    "sdk/pkg/vulkan_layers/data/vulkan/explicit_layer.d/VkLayer_image_pipe_swapchain.json",
    "sdk/pkg/vulkan_layers/data/vulkan/explicit_layer.d/VkLayer_object_tracker.json",
    "sdk/pkg/vulkan_layers/data/vulkan/explicit_layer.d/VkLayer_parameter_validation.json",
    "sdk/pkg/vulkan_layers/data/vulkan/explicit_layer.d/VkLayer_standard_validation.json",
    "sdk/pkg/vulkan_layers/data/vulkan/explicit_layer.d/VkLayer_threading.json",
    "sdk/pkg/vulkan_layers/data/vulkan/explicit_layer.d/VkLayer_unique_objects.json",
  ]

  outputs = [
    "${root_gen_dir}/data/vulkan/explicit_layer.d/{{source_file_part}}",
  ]
}
