Classify Rust static libraries as final Rust static libraries are used from C/C++ code and therefore require all dependencies to be linked in as we cannot link their (Rust) dependencies directly as we would with the non-complete_static_lib case. Change-Id: I4fe7e52a863ff09472f44848cd5b76beb111d29a Reviewed-on: https://gn-review.googlesource.com/c/gn/+/6820 Commit-Queue: Petr Hosek <phosek@google.com> Reviewed-by: Brett Wilson <brettw@chromium.org>
diff --git a/src/gn/target.cc b/src/gn/target.cc index 5c2e721..0d76159 100644 --- a/src/gn/target.cc +++ b/src/gn/target.cc
@@ -416,7 +416,12 @@ output_type_ == LOADABLE_MODULE || output_type_ == ACTION || output_type_ == ACTION_FOREACH || output_type_ == COPY_FILES || output_type_ == CREATE_BUNDLE || output_type_ == RUST_PROC_MACRO || - (output_type_ == STATIC_LIBRARY && complete_static_lib_); + (output_type_ == STATIC_LIBRARY && + (complete_static_lib_ || + // Rust static libraries may be used from C/C++ code and therefore + // require all dependencies to be linked in as we cannot link their + // (Rust) dependencies directly as we would for C/C++. + source_types_used_.RustSourceUsed())); } DepsIteratorRange Target::GetDeps(DepsIterationType type) const {