Loading rust/binary.go +1 −2 Original line number Diff line number Diff line Loading @@ -106,8 +106,7 @@ func (binary *binaryDecorator) nativeCoverage() bool { func (binary *binaryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Path { fileName := binary.getStem(ctx) + ctx.toolchain().ExecutableSuffix() srcPath, paths := srcPathFromModuleSrcs(ctx, binary.baseCompiler.Properties.Srcs) deps.SrcDeps = append(deps.SrcDeps, paths...) srcPath, _ := srcPathFromModuleSrcs(ctx, binary.baseCompiler.Properties.Srcs) outputFile := android.PathForModuleOut(ctx, fileName) binary.unstrippedOutputFile = outputFile Loading rust/library.go +1 −2 Original line number Diff line number Diff line Loading @@ -368,8 +368,7 @@ func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) F func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Path { var outputFile android.WritablePath srcPath, paths := srcPathFromModuleSrcs(ctx, library.baseCompiler.Properties.Srcs) deps.SrcDeps = append(deps.SrcDeps, paths...) srcPath, _ := srcPathFromModuleSrcs(ctx, library.baseCompiler.Properties.Srcs) flags.RustFlags = append(flags.RustFlags, deps.depFlags...) Loading rust/proc_macro.go +1 −2 Original line number Diff line number Diff line Loading @@ -65,8 +65,7 @@ func (procMacro *procMacroDecorator) compile(ctx ModuleContext, flags Flags, dep fileName := procMacro.getStem(ctx) + ctx.toolchain().ProcMacroSuffix() outputFile := android.PathForModuleOut(ctx, fileName) srcPath, paths := srcPathFromModuleSrcs(ctx, procMacro.baseCompiler.Properties.Srcs) deps.SrcDeps = append(deps.SrcDeps, paths...) srcPath, _ := srcPathFromModuleSrcs(ctx, procMacro.baseCompiler.Properties.Srcs) procMacro.unstrippedOutputFile = outputFile Loading rust/rust.go +39 −0 Original line number Diff line number Diff line Loading @@ -743,6 +743,8 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { directProcMacroDeps := []*Module{} directSharedLibDeps := [](cc.LinkableInterface){} directStaticLibDeps := [](cc.LinkableInterface){} directSrcProvidersDeps := []*Module{} directSrcDeps := [](android.SourceFileProducer){} ctx.VisitDirectDeps(func(dep android.Module) { depName := ctx.OtherModuleName(dep) Loading Loading @@ -776,6 +778,24 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { case procMacroDepTag: directProcMacroDeps = append(directProcMacroDeps, rustDep) mod.Properties.AndroidMkProcMacroLibs = append(mod.Properties.AndroidMkProcMacroLibs, depName) case android.SourceDepTag: // Since these deps are added in path_properties.go via AddDependencies, we need to ensure the correct // OS/Arch variant is used. var helper string if ctx.Host() { helper = "missing 'host_supported'?" } else { helper = "device module defined?" } if dep.Target().Os != ctx.Os() { ctx.ModuleErrorf("OS mismatch on dependency %q (%s)", dep.Name(), helper) return } else if dep.Target().Arch.ArchType != ctx.Arch().ArchType { ctx.ModuleErrorf("Arch mismatch on dependency %q (%s)", dep.Name(), helper) return } directSrcProvidersDeps = append(directSrcProvidersDeps, rustDep) } //Append the dependencies exportedDirs Loading @@ -793,6 +813,14 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { } if srcDep, ok := dep.(android.SourceFileProducer); ok { switch depTag { case android.SourceDepTag: // These are usually genrules which don't have per-target variants. directSrcDeps = append(directSrcDeps, srcDep) } } if ccDep, ok := dep.(cc.LinkableInterface); ok { //Handle C dependencies if _, ok := ccDep.(*Module); !ok { Loading Loading @@ -868,11 +896,22 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { sharedLibDepFiles = append(sharedLibDepFiles, dep.OutputFile().Path()) } var srcProviderDepFiles android.Paths for _, dep := range directSrcProvidersDeps { srcs, _ := dep.OutputFiles("") srcProviderDepFiles = append(srcProviderDepFiles, srcs...) } for _, dep := range directSrcDeps { srcs := dep.Srcs() srcProviderDepFiles = append(srcProviderDepFiles, srcs...) } depPaths.RLibs = append(depPaths.RLibs, rlibDepFiles...) depPaths.DyLibs = append(depPaths.DyLibs, dylibDepFiles...) depPaths.SharedLibs = append(depPaths.SharedLibs, sharedLibDepFiles...) depPaths.StaticLibs = append(depPaths.StaticLibs, staticLibDepFiles...) depPaths.ProcMacros = append(depPaths.ProcMacros, procMacroDepFiles...) depPaths.SrcDeps = append(depPaths.SrcDeps, srcProviderDepFiles...) // Dedup exported flags from dependencies depPaths.linkDirs = android.FirstUniqueStrings(depPaths.linkDirs) Loading rust/rust_test.go +20 −0 Original line number Diff line number Diff line Loading @@ -291,6 +291,26 @@ func TestSourceProviderDeps(t *testing.T) { } } func TestSourceProviderTargetMismatch(t *testing.T) { // This might error while building the dependency tree or when calling depsToPaths() depending on the lunched // target, which results in two different errors. So don't check the error, just confirm there is one. testRustError(t, ".*", ` rust_proc_macro { name: "libprocmacro", srcs: [ "foo.rs", ":libbindings", ], crate_name: "procmacro", } rust_bindgen { name: "libbindings", stem: "bindings", wrapper_src: "src/any.h", } `) } // Test to make sure proc_macros use host variants when building device modules. func TestProcMacroDeviceDeps(t *testing.T) { ctx := testRust(t, ` Loading Loading
rust/binary.go +1 −2 Original line number Diff line number Diff line Loading @@ -106,8 +106,7 @@ func (binary *binaryDecorator) nativeCoverage() bool { func (binary *binaryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Path { fileName := binary.getStem(ctx) + ctx.toolchain().ExecutableSuffix() srcPath, paths := srcPathFromModuleSrcs(ctx, binary.baseCompiler.Properties.Srcs) deps.SrcDeps = append(deps.SrcDeps, paths...) srcPath, _ := srcPathFromModuleSrcs(ctx, binary.baseCompiler.Properties.Srcs) outputFile := android.PathForModuleOut(ctx, fileName) binary.unstrippedOutputFile = outputFile Loading
rust/library.go +1 −2 Original line number Diff line number Diff line Loading @@ -368,8 +368,7 @@ func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) F func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Path { var outputFile android.WritablePath srcPath, paths := srcPathFromModuleSrcs(ctx, library.baseCompiler.Properties.Srcs) deps.SrcDeps = append(deps.SrcDeps, paths...) srcPath, _ := srcPathFromModuleSrcs(ctx, library.baseCompiler.Properties.Srcs) flags.RustFlags = append(flags.RustFlags, deps.depFlags...) Loading
rust/proc_macro.go +1 −2 Original line number Diff line number Diff line Loading @@ -65,8 +65,7 @@ func (procMacro *procMacroDecorator) compile(ctx ModuleContext, flags Flags, dep fileName := procMacro.getStem(ctx) + ctx.toolchain().ProcMacroSuffix() outputFile := android.PathForModuleOut(ctx, fileName) srcPath, paths := srcPathFromModuleSrcs(ctx, procMacro.baseCompiler.Properties.Srcs) deps.SrcDeps = append(deps.SrcDeps, paths...) srcPath, _ := srcPathFromModuleSrcs(ctx, procMacro.baseCompiler.Properties.Srcs) procMacro.unstrippedOutputFile = outputFile Loading
rust/rust.go +39 −0 Original line number Diff line number Diff line Loading @@ -743,6 +743,8 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { directProcMacroDeps := []*Module{} directSharedLibDeps := [](cc.LinkableInterface){} directStaticLibDeps := [](cc.LinkableInterface){} directSrcProvidersDeps := []*Module{} directSrcDeps := [](android.SourceFileProducer){} ctx.VisitDirectDeps(func(dep android.Module) { depName := ctx.OtherModuleName(dep) Loading Loading @@ -776,6 +778,24 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { case procMacroDepTag: directProcMacroDeps = append(directProcMacroDeps, rustDep) mod.Properties.AndroidMkProcMacroLibs = append(mod.Properties.AndroidMkProcMacroLibs, depName) case android.SourceDepTag: // Since these deps are added in path_properties.go via AddDependencies, we need to ensure the correct // OS/Arch variant is used. var helper string if ctx.Host() { helper = "missing 'host_supported'?" } else { helper = "device module defined?" } if dep.Target().Os != ctx.Os() { ctx.ModuleErrorf("OS mismatch on dependency %q (%s)", dep.Name(), helper) return } else if dep.Target().Arch.ArchType != ctx.Arch().ArchType { ctx.ModuleErrorf("Arch mismatch on dependency %q (%s)", dep.Name(), helper) return } directSrcProvidersDeps = append(directSrcProvidersDeps, rustDep) } //Append the dependencies exportedDirs Loading @@ -793,6 +813,14 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { } if srcDep, ok := dep.(android.SourceFileProducer); ok { switch depTag { case android.SourceDepTag: // These are usually genrules which don't have per-target variants. directSrcDeps = append(directSrcDeps, srcDep) } } if ccDep, ok := dep.(cc.LinkableInterface); ok { //Handle C dependencies if _, ok := ccDep.(*Module); !ok { Loading Loading @@ -868,11 +896,22 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { sharedLibDepFiles = append(sharedLibDepFiles, dep.OutputFile().Path()) } var srcProviderDepFiles android.Paths for _, dep := range directSrcProvidersDeps { srcs, _ := dep.OutputFiles("") srcProviderDepFiles = append(srcProviderDepFiles, srcs...) } for _, dep := range directSrcDeps { srcs := dep.Srcs() srcProviderDepFiles = append(srcProviderDepFiles, srcs...) } depPaths.RLibs = append(depPaths.RLibs, rlibDepFiles...) depPaths.DyLibs = append(depPaths.DyLibs, dylibDepFiles...) depPaths.SharedLibs = append(depPaths.SharedLibs, sharedLibDepFiles...) depPaths.StaticLibs = append(depPaths.StaticLibs, staticLibDepFiles...) depPaths.ProcMacros = append(depPaths.ProcMacros, procMacroDepFiles...) depPaths.SrcDeps = append(depPaths.SrcDeps, srcProviderDepFiles...) // Dedup exported flags from dependencies depPaths.linkDirs = android.FirstUniqueStrings(depPaths.linkDirs) Loading
rust/rust_test.go +20 −0 Original line number Diff line number Diff line Loading @@ -291,6 +291,26 @@ func TestSourceProviderDeps(t *testing.T) { } } func TestSourceProviderTargetMismatch(t *testing.T) { // This might error while building the dependency tree or when calling depsToPaths() depending on the lunched // target, which results in two different errors. So don't check the error, just confirm there is one. testRustError(t, ".*", ` rust_proc_macro { name: "libprocmacro", srcs: [ "foo.rs", ":libbindings", ], crate_name: "procmacro", } rust_bindgen { name: "libbindings", stem: "bindings", wrapper_src: "src/any.h", } `) } // Test to make sure proc_macros use host variants when building device modules. func TestProcMacroDeviceDeps(t *testing.T) { ctx := testRust(t, ` Loading