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
This commit is contained in:
Colin Cross
2021-10-25 15:40:32 -07:00
parent 3e3eda6eb6
commit acfcc1f682
6 changed files with 29 additions and 7 deletions

View File

@@ -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 {
return filepath.Join(c.soongOutDir, "host", c.PrebuiltOS(), "bin")
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
}

View File

@@ -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)
}

View File

@@ -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())
}

View File

@@ -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())

View File

@@ -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

View File

@@ -786,7 +786,11 @@ func (c *configImpl) PrebuiltOS() string {
}
func (c *configImpl) HostToolDir() string {
return filepath.Join(c.SoongOutDir(), "host", c.PrebuiltOS(), "bin")
if c.SkipKatiNinja() {
return filepath.Join(c.SoongOutDir(), "host", c.PrebuiltOS(), "bin")
} else {
return filepath.Join(c.OutDir(), "host", c.PrebuiltOS(), "bin")
}
}
func (c *configImpl) NamedGlobFile(name string) string {