# 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("//build/components.gni")
import("//build/rust/rustc_library.gni")

# TODO(https://fxbug.dev/323626438): Remove the cstr crate when all use cases for the cstr!()
# can be supported directly by C-string literals.
#
# In general, C-string literals should be preferred over using the cstr!() macro. There are
# however some cases where C-string literals are known not to be sufficient:
#
#  - inside of a token tree parsed by the syn crate: https://github.com/dtolnay/syn/issues/1502
#  - creating a C-string literal from an identifier inside of a macro implementation,
#    i.e., stringify!() does not have a C-string literal equivalent.
#
cstr_full_deps_allowlist = [
  "//src/connectivity/network/netstack-proxy:*",
  "//src/connectivity/wlan/lib/mlme/rust:*",
  "//src/lib/cstr:*",
  "//src/lib/pty:*",
  "//src/lib/trace/rust/bench:*",
  "//src/storage/fxfs/trace:*",
]

rustc_library("cstr") {
  visibility = cstr_full_deps_allowlist
  with_unit_tests = true
  edition = "2021"
  deps = [ "//third_party/rust_crates:static_assertions" ]

  sources = [ "src/lib.rs" ]
}

fuchsia_unittest_package("cstr-test") {
  deps = [ ":cstr_test" ]
  test_specs = {
    environments = [ emu_env ]
  }
}

group("tests") {
  testonly = true
  deps = [ ":cstr-test" ]
}
