Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 88f2b1ce authored by Ivan Lozano's avatar Ivan Lozano
Browse files

Change stdlib linkage for C libraries.

Rust C libraries cannot currently depend on dylibs. This prevents device
libraries from attempting to link the stdlib dynamically, instead using
rlibs.

Bug: 144861059
Test: Simple Rust library compiles as a shared/static library.
Change-Id: I38e5aae90e50ddcc5fc72d5a8d1820d92955cf48
parent c6e9f92c
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ import (
	"strings"

	"android/soong/android"
	"android/soong/rust/config"
)

func init() {
@@ -304,6 +305,15 @@ func (library *libraryDecorator) compilerProps() []interface{} {
}

func (library *libraryDecorator) compilerDeps(ctx DepsContext, deps Deps) Deps {

	// TODO(b/144861059) Remove if C libraries support dylib linkage in the future.
	if !ctx.Host() && (library.static() || library.shared()) {
		library.setNoStdlibs()
		for _, stdlib := range config.Stdlibs {
			deps.Rlibs = append(deps.Rlibs, stdlib+".static")
		}
	}

	deps = library.baseCompiler.compilerDeps(ctx, deps)

	if ctx.toolchain().Bionic() && (library.dylib() || library.shared()) {