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

Commit acfcc1f6 authored by Colin Cross's avatar Colin Cross
Browse files

Move cc module installation into Soong

Move cc module installation rules into Soong by overriding
InstallBypassMake.  Update the locations that find host tools
to look in the Make installation directory instead of the Soong
installation directory, which will no longer be used.

The methods that find host tools are also used on go binaries,
so update the config methods that tell Blueprint where to install
go binaries to the Make installation directory too.

Bug: 204136549
Test: m checkbuild
Change-Id: Id172592c195e506102982a4af0084f6d9c68a896
parent 3e3eda6e
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -564,11 +564,18 @@ func (c *config) SetAllowMissingDependencies() {
// BlueprintToolLocation returns the directory containing build system tools
// from Blueprint, like soong_zip and merge_zips.
func (c *config) HostToolDir() string {
	if c.KatiEnabled() {
		return filepath.Join(c.outDir, "host", c.PrebuiltOS(), "bin")
	} else {
		return filepath.Join(c.soongOutDir, "host", c.PrebuiltOS(), "bin")
	}
}

func (c *config) HostToolPath(ctx PathContext, tool string) Path {
	path := pathForInstall(ctx, ctx.Config().BuildOS, ctx.Config().BuildArch, "bin", false, tool)
	if ctx.Config().KatiEnabled() {
		path = path.ToMakePath()
	}
	return path
}

@@ -578,6 +585,9 @@ func (c *config) HostJNIToolPath(ctx PathContext, lib string) Path {
		ext = ".dylib"
	}
	path := pathForInstall(ctx, ctx.Config().BuildOS, ctx.Config().BuildArch, "lib64", false, lib+ext)
	if ctx.Config().KatiEnabled() {
		path = path.ToMakePath()
	}
	return path
}

+3 −0
Original line number Diff line number Diff line
@@ -465,6 +465,9 @@ func (p OutputPaths) Strings() []string {
// PathForGoBinary returns the path to the installed location of a bootstrap_go_binary module.
func PathForGoBinary(ctx PathContext, goBinary bootstrap.GoBinaryTool) Path {
	goBinaryInstallDir := pathForInstall(ctx, ctx.Config().BuildOS, ctx.Config().BuildArch, "bin", false)
	if ctx.Config().KatiEnabled() {
		goBinaryInstallDir = goBinaryInstallDir.ToMakePath()
	}
	rel := Rel(ctx, goBinaryInstallDir.String(), goBinary.InstallPath())
	return goBinaryInstallDir.Join(ctx, rel)
}
+8 −0
Original line number Diff line number Diff line
@@ -839,6 +839,14 @@ func sboxPathForToolRel(ctx BuilderContext, path Path) string {
		// The tool is in the Soong output directory, it will be copied to __SBOX_OUT_DIR__/tools/out
		return filepath.Join(sboxToolsSubDir, "out", relOutSoong)
	}
	if ctx.Config().KatiEnabled() {
		toolDir = toolDir.ToMakePath()
		relOut, isRelOut, _ := maybeRelErr(toolDir.String(), path.String())
		if isRelOut {
			// The tool is in the Make output directory, it will be copied to __SBOX_OUT_DIR__/tools/out
			return filepath.Join(sboxToolsSubDir, "out", relOut)
		}
	}
	// The tool is in the source directory, it will be copied to __SBOX_OUT_DIR__/tools/src
	return filepath.Join(sboxToolsSubDir, "src", path.String())
}
+0 −5
Original line number Diff line number Diff line
@@ -450,11 +450,6 @@ func (installer *baseInstaller) AndroidMkEntries(ctx AndroidMkContext, entries *
	if installer.path == (android.InstallPath{}) {
		return
	}
	// Soong installation is only supported for host modules. Have Make
	// installation trigger Soong installation.
	if ctx.Target().Os.Class == android.Host {
		entries.OutputFile = android.OptionalPathForPath(installer.path)
	}

	entries.ExtraEntries = append(entries.ExtraEntries, func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
		path, file := filepath.Split(installer.path.ToMakePath().String())
+2 −0
Original line number Diff line number Diff line
@@ -1365,6 +1365,8 @@ func (c *Module) InstallInRoot() bool {
	return c.installer != nil && c.installer.installInRoot()
}

func (c *Module) InstallBypassMake() bool { return true }

type baseModuleContext struct {
	android.BaseModuleContext
	moduleContextImpl
Loading