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

Commit 70e0a07b authored by Ivan Lozano's avatar Ivan Lozano
Browse files

Check Rust dep is a Module before checking target.

The Target checks against the os type and arch type occur before we
determine a dependency is a rust.Module / cc.Module. This meant
rust_defaults would fail this check, preventing them from being used.

Bug: 140963307
Test: make a rust_binary_host using rust_defaults.
Change-Id: Ibf43635f14ad367b4ce8016a2196f8c645b36bfe
parent d2ac6985
Loading
Loading
Loading
Loading
+20 −9
Original line number Diff line number Diff line
@@ -334,17 +334,19 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
	ctx.VisitDirectDeps(func(dep android.Module) {
		depName := ctx.OtherModuleName(dep)
		depTag := ctx.OtherModuleDependencyTag(dep)
		if dep.Target().Os != ctx.Os() {

		if rustDep, ok := dep.(*Module); ok {
			//Handle Rust Modules

			if rustDep.Target().Os != ctx.Os() {
				ctx.ModuleErrorf("OS mismatch between %q and %q", ctx.ModuleName(), depName)
				return
			}
		if dep.Target().Arch.ArchType != ctx.Arch().ArchType {
			if rustDep.Target().Arch.ArchType != ctx.Arch().ArchType {
				ctx.ModuleErrorf("Arch mismatch between %q and %q", ctx.ModuleName(), depName)
				return
			}

		if rustDep, ok := dep.(*Module); ok {
			//Handle Rust Modules
			linkFile := rustDep.outputFile
			if !linkFile.Valid() {
				ctx.ModuleErrorf("Invalid output file when adding dep %q to %q", depName, ctx.ModuleName())
@@ -393,8 +395,17 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
			}

		} else if ccDep, ok := dep.(*cc.Module); ok {

			//Handle C dependencies

			if ccDep.Target().Os != ctx.Os() {
				ctx.ModuleErrorf("OS mismatch between %q and %q", ctx.ModuleName(), depName)
				return
			}
			if ccDep.Target().Arch.ArchType != ctx.Arch().ArchType {
				ctx.ModuleErrorf("Arch mismatch between %q and %q", ctx.ModuleName(), depName)
				return
			}

			linkFile := ccDep.OutputFile()
			linkPath := linkPathFromFilePath(linkFile.Path())
			libName := libNameFromFilePath(linkFile.Path())