tree 7e54691cad149c34f372453134832f33fe1b8c6e
parent bd99dbf98cbdefe18a4128189665c5761263bcfb
author danakj <danakj@chromium.org> 1648153087 -0400
committer Commit Bot <commit-bot@chromium.org> 1648237071 +0000

Make library inheritance for consistent for Rust libraries

Previously C libraries, and CDYLIB libraries would be inherited for
linking through an rlib. But DYLIB libraries would not be. Proc macros
would be inherited through a group, but not through a Rust library. And
proc macros would be inherited for linking as a direct dependency but
not as a transitive one.

There was inconsistency of what Rust targets should be inherited (ie
collected) for linking by a C linking target.

We improve this by removing or consolidating conditionals, which helps
to make the system more consistent.

a) Don't inherit transitive libraries through a Rust Dylib or Rlib
   differently than other final or non-final targets respectively.
   For linking purposes they are the same.

b) Since inherited_libraries_ and rust_linkable_inherited_libs_ are now
   the same thing, we can remove the latter.

c) Consistently avoid adding proc macros, or their dependencies, to
   inherited_libraries_, as they are never linked into a final target.
   They are only passed to the Rust compiler with --extern.

The NinjaCBinaryTargetWriterTest.LinkingWithRustLibraryDepsOnDylib test
demonstrates the bug fix, which allows Rust Dylib targets to be
inherited into the linker through an rlib.

The NinjaCBinaryTargetWriterTest.LinkingWithRustLibraryDepsOnCdylib
test passed before this change, but provides a regression test.

The NinjaRustBinaryTargetWriterTest.DylibDeps test was inadvertently
demonstrating the bug as well, but for public deps through a Dylib. A
binary depended a dylib ("direct") which then transitively publicly-
depended on another dylib ("mylib"). Since the binary has access to
mylib and could make calls to it, the transitive shared library needs
to be included in the inherited libraries of the binary as well. That
way if the binary was linked by a C linker, it would know all the
required Rust libraries. This is now done. We augment the test to also
show that a private dependency from the middle dylib ("direct") onto
another dylib ("private_dylib") will not add the private-transitive
shared library into the linker for the binary.

The NinjaRustBinaryTargetWriterTest.RlibDepsAcrossGroups test
changes to not inherit implicit dependencies on proc macro libraries,
as they would not need to be linked with the Rust library by a C linker.
This more accurately represents to a C linker what the Rust linker would
implicitly do. While the proc-macro is given to rustc in a --extern flag
the Rust compiler would not add it to the linking line.

The NinjaRustBinaryTargetWriterTest.GroupDeps test has a binary that
depends on a group which publicly-depends on an rlib. Rlibs were not
normally inherited (by checking !RustValues::IsRustLibrary()) however
since it was through a group, it was being inherited for linking
incorrectly.

An example of a BUILD.gn which failed to link (missing symbols from the
dylib) before this change, but builds after:

shared_library("rust_so") {
  crate_type = "dylib"
  crate_root = "rust_so.rs"
  sources = [ "rust_so.rs" ]
}

rust_library("rust_stdlib") {
  crate_type = "staticlib"
  crate_root = "rust_lib.rs"
}

rust_library("rust_lib") {
  crate_root = "rust_lib.rs"
  sources = [ "rust_lib.rs" ]
  deps = [":rust_so"]
}

executable("exe") {
  sources = [ "exe.c" ]
  deps = [
    ":rust_lib",
  ]
}

This also fixes a bug in the RUST_LIBRARY branch that is no longer a
special case, and thus removes the bug. We were inheriting all
transitive dependencies from _ourselves_ when depending on an rlib,
which would incorrectly pull in transitive dependencies from previously
traversed dependencies. In particular if one of those was a shared
library, we'd pull in things that were private deps in the shared
library and linked into it, and which should not be visible/inherited
into the current target.

We add a test which brackets an rlib dependency with shared library
dependencies and verifies the static libs inside the shared libraries
do not get inherited (which they do before this CL).

Bug: 276
Change-Id: Ie50ea2ae21fc6da7dcdbb7259726f67f74c61beb
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/13180
Reviewed-by: Tyler Mandry <tmandry@google.com>
Reviewed-by: David Turner <digit@google.com>
Reviewed-by: Brett Wilson <brettw@chromium.org>
Commit-Queue: Brett Wilson <brettw@chromium.org>
