Rust library linking fixes
- Hide universal binary dependency for rust Without a darwin_arm64 libstd prebuilt, many rust binaries are not possible to build as a universal binary anyway. This fixes an intermediate error with compiling rust FFI targets, where C++ shared library dependencies for both architectures were combined into the same linker command. There is still an outstanding problem with C++ executable targets that include rust FFI library targets, as the rust FFI library targets fail to find a proper libstd to build the arm64 side of the universal executable. - Use dynamic_lib instead of soname This matches similar logic in cc/library.go : linkerFlags for including shared libraries. Bug: 291830024 Test: m libkmr_cf_ffi (when enabled for darwin) Change-Id: I1d6b6a7855c6649b93ab6592ea43b17c6e37b3a3
This commit is contained in:
@@ -466,7 +466,15 @@ func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) F
|
||||
library.includeDirs = append(library.includeDirs, android.PathsForModuleSrc(ctx, library.Properties.Include_dirs)...)
|
||||
}
|
||||
if library.shared() {
|
||||
flags.LinkFlags = append(flags.LinkFlags, "-Wl,-soname="+library.sharedLibFilename(ctx))
|
||||
if ctx.Darwin() {
|
||||
flags.LinkFlags = append(
|
||||
flags.LinkFlags,
|
||||
"-dynamic_lib",
|
||||
"-install_name @rpath/"+library.sharedLibFilename(ctx),
|
||||
)
|
||||
} else {
|
||||
flags.LinkFlags = append(flags.LinkFlags, "-Wl,-soname="+library.sharedLibFilename(ctx))
|
||||
}
|
||||
}
|
||||
|
||||
return flags
|
||||
|
Reference in New Issue
Block a user