Loading rust/androidmk.go +4 −0 Original line number Diff line number Diff line Loading @@ -178,6 +178,10 @@ func (proto *protobufDecorator) AndroidMk(ctx AndroidMkContext, ret *android.And } func (compiler *baseCompiler) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) { if compiler.path == (android.InstallPath{}) { return } var unstrippedOutputFile android.OptionalPath // Soong installation is only supported for host modules. Have Make // installation trigger Soong installation. Loading rust/binary_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ func TestBinaryLinkage(t *testing.T) { fizzBuzzHost := ctx.ModuleForTests("fizz-buzz", "linux_glibc_x86_64").Module().(*Module) fizzBuzzDevice := ctx.ModuleForTests("fizz-buzz", "android_arm64_armv8-a").Module().(*Module) if !android.InList("libfoo", fizzBuzzHost.Properties.AndroidMkRlibs) { if !android.InList("libfoo.rlib-std", fizzBuzzHost.Properties.AndroidMkRlibs) { t.Errorf("rustlibs dependency libfoo should be an rlib dep for host modules") } Loading rust/compiler.go +8 −11 Original line number Diff line number Diff line Loading @@ -146,8 +146,13 @@ func (compiler *baseCompiler) coverageOutputZipPath() android.OptionalPath { panic("baseCompiler does not implement coverageOutputZipPath()") } func (compiler *baseCompiler) static() bool { func (compiler *baseCompiler) staticStd(ctx *depsContext) bool { // For devices, we always link stdlibs in as dylibs by default. if ctx.Device() { return false } else { return true } } var _ compiler = (*baseCompiler)(nil) Loading Loading @@ -221,15 +226,7 @@ func (compiler *baseCompiler) compilerDeps(ctx DepsContext, deps Deps) Deps { stdlib = stdlib + "_" + ctx.toolchain().RustTriple() } // For devices, we always link stdlibs in as dylibs except for ffi static libraries. // (rustc does not support linking libstd as a dylib for ffi static libraries) if ctx.Host() { deps.Rustlibs = append(deps.Rustlibs, stdlib) } else if ctx.RustModule().compiler.static() { deps.Rlibs = append(deps.Rlibs, stdlib) } else { deps.Dylibs = append(deps.Dylibs, stdlib) } deps.Stdlibs = append(deps.Stdlibs, stdlib) } } return deps Loading rust/compiler_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ func TestStdDeviceLinkage(t *testing.T) { crate_name: "foo", }`) fizz := ctx.ModuleForTests("fizz", "android_arm64_armv8-a").Module().(*Module) fooRlib := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_rlib").Module().(*Module) fooRlib := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_rlib_dylib-std").Module().(*Module) fooDylib := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_dylib").Module().(*Module) if !android.InList("libstd", fizz.Properties.AndroidMkDylibs) { Loading rust/coverage_test.go +2 −2 Original line number Diff line number Diff line Loading @@ -154,12 +154,12 @@ func TestCoverageZip(t *testing.T) { } // Make sure the expected inputs are provided to the zip rule. if !android.SuffixInList(fizzZipInputs, "android_arm64_armv8-a_rlib_cov/librlib.gcno") || if !android.SuffixInList(fizzZipInputs, "android_arm64_armv8-a_rlib_dylib-std_cov/librlib.gcno") || !android.SuffixInList(fizzZipInputs, "android_arm64_armv8-a_static_cov/libbaz.gcno") || !android.SuffixInList(fizzZipInputs, "android_arm64_armv8-a_cov/fizz.gcno") { t.Fatalf("missing expected coverage files for rust 'fizz' binary: %#v", fizzZipInputs) } if !android.SuffixInList(libfooZipInputs, "android_arm64_armv8-a_rlib_cov/librlib.gcno") || if !android.SuffixInList(libfooZipInputs, "android_arm64_armv8-a_rlib_dylib-std_cov/librlib.gcno") || !android.SuffixInList(libfooZipInputs, "android_arm64_armv8-a_dylib_cov/libfoo.dylib.gcno") { t.Fatalf("missing expected coverage files for rust 'fizz' binary: %#v", libfooZipInputs) } Loading Loading
rust/androidmk.go +4 −0 Original line number Diff line number Diff line Loading @@ -178,6 +178,10 @@ func (proto *protobufDecorator) AndroidMk(ctx AndroidMkContext, ret *android.And } func (compiler *baseCompiler) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) { if compiler.path == (android.InstallPath{}) { return } var unstrippedOutputFile android.OptionalPath // Soong installation is only supported for host modules. Have Make // installation trigger Soong installation. Loading
rust/binary_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ func TestBinaryLinkage(t *testing.T) { fizzBuzzHost := ctx.ModuleForTests("fizz-buzz", "linux_glibc_x86_64").Module().(*Module) fizzBuzzDevice := ctx.ModuleForTests("fizz-buzz", "android_arm64_armv8-a").Module().(*Module) if !android.InList("libfoo", fizzBuzzHost.Properties.AndroidMkRlibs) { if !android.InList("libfoo.rlib-std", fizzBuzzHost.Properties.AndroidMkRlibs) { t.Errorf("rustlibs dependency libfoo should be an rlib dep for host modules") } Loading
rust/compiler.go +8 −11 Original line number Diff line number Diff line Loading @@ -146,8 +146,13 @@ func (compiler *baseCompiler) coverageOutputZipPath() android.OptionalPath { panic("baseCompiler does not implement coverageOutputZipPath()") } func (compiler *baseCompiler) static() bool { func (compiler *baseCompiler) staticStd(ctx *depsContext) bool { // For devices, we always link stdlibs in as dylibs by default. if ctx.Device() { return false } else { return true } } var _ compiler = (*baseCompiler)(nil) Loading Loading @@ -221,15 +226,7 @@ func (compiler *baseCompiler) compilerDeps(ctx DepsContext, deps Deps) Deps { stdlib = stdlib + "_" + ctx.toolchain().RustTriple() } // For devices, we always link stdlibs in as dylibs except for ffi static libraries. // (rustc does not support linking libstd as a dylib for ffi static libraries) if ctx.Host() { deps.Rustlibs = append(deps.Rustlibs, stdlib) } else if ctx.RustModule().compiler.static() { deps.Rlibs = append(deps.Rlibs, stdlib) } else { deps.Dylibs = append(deps.Dylibs, stdlib) } deps.Stdlibs = append(deps.Stdlibs, stdlib) } } return deps Loading
rust/compiler_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ func TestStdDeviceLinkage(t *testing.T) { crate_name: "foo", }`) fizz := ctx.ModuleForTests("fizz", "android_arm64_armv8-a").Module().(*Module) fooRlib := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_rlib").Module().(*Module) fooRlib := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_rlib_dylib-std").Module().(*Module) fooDylib := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_dylib").Module().(*Module) if !android.InList("libstd", fizz.Properties.AndroidMkDylibs) { Loading
rust/coverage_test.go +2 −2 Original line number Diff line number Diff line Loading @@ -154,12 +154,12 @@ func TestCoverageZip(t *testing.T) { } // Make sure the expected inputs are provided to the zip rule. if !android.SuffixInList(fizzZipInputs, "android_arm64_armv8-a_rlib_cov/librlib.gcno") || if !android.SuffixInList(fizzZipInputs, "android_arm64_armv8-a_rlib_dylib-std_cov/librlib.gcno") || !android.SuffixInList(fizzZipInputs, "android_arm64_armv8-a_static_cov/libbaz.gcno") || !android.SuffixInList(fizzZipInputs, "android_arm64_armv8-a_cov/fizz.gcno") { t.Fatalf("missing expected coverage files for rust 'fizz' binary: %#v", fizzZipInputs) } if !android.SuffixInList(libfooZipInputs, "android_arm64_armv8-a_rlib_cov/librlib.gcno") || if !android.SuffixInList(libfooZipInputs, "android_arm64_armv8-a_rlib_dylib-std_cov/librlib.gcno") || !android.SuffixInList(libfooZipInputs, "android_arm64_armv8-a_dylib_cov/libfoo.dylib.gcno") { t.Fatalf("missing expected coverage files for rust 'fizz' binary: %#v", libfooZipInputs) } Loading