# Copyright 2021 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("rust_cxx_ffi_library.gni")

group("tests") {
  testonly = true
  deps = [ "examples/basic:tests" ]
}

# A library of useful types for working with CXX within Fuchsia.
rust_cxx_ffi_library("fuchsia-cxx") {
  rust_sources = [
    "src/lib.rs",
    "src/result.rs",
  ]
  bridge_sources = [ "src/result.rs" ]
  rust_deps = [
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:cxx",
  ]

  cpp_sources = [
    "result.cc",
    "result.h",
  ]
  public_deps = [
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxc",
  ]
}

# Included automatically by rust_cxx_ffi_library.gni targets
source_set("cxx_lib") {
  # This visibility list exists so that we can review new usages of cxx to build Rust/C++ FFIs as
  # they are created, since it is still new to Fuchsia.
  #
  # You are welcome to add new usages and entries to this list, and add the OWNERS of this
  # directory to the review. If you are doing something novel with cxx, it would be a good idea to
  # reach out ahead of time with to be sure your usage sounds OK.
  #
  # It is recommended that you read https://docs.rs/cxx first to understand how cxx works, and to
  # understand what cxx does (and does not) do. All C++ code is still "unsafe" from the Rust
  # perspective; cxx just helps with building the Rust side of the FFI layer safely.
  visibility = [
    ":*",
    "examples/*",
  ]

  cxx_crate = "//third_party/rust_crates/vendor/cxx"
  sources = [
    "$cxx_crate/include/cxx.h",
    "$cxx_crate/src/cxx.cc",
  ]
  defines = [ "RUST_CXX_NO_EXCEPTIONS" ]

  # Ensure that we static link the C++ stdlib even in Rust targets that include this (hence public_)
  if (current_os == "fuchsia") {
    public_configs = [ "//build/config/fuchsia:static_cpp_standard_library" ]
  }
}
