# Copyright 2022 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/rust/rust_target.gni")

# Defines a shared_library containing just Rust code. Has the same variables
# available as a rust_static_library. See rust_static_library.gni for
# documentation.
template("rust_shared_library") {
  exclude_forwards = TESTONLY_AND_VISIBILITY + [ "configs" ]
  rust_target(target_name) {
    forward_variables_from(invoker, "*", exclude_forwards)
    forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
    if (defined(invoker.configs)) {
      library_configs = []
      library_configs = invoker.configs
    }
    target_type = "shared_library"
    crate_type = "cdylib"
  }
}

set_defaults("rust_shared_library") {
  configs = default_shared_library_configs
}
