Merge changes from topic "soong-cc-install"

* changes:
  Move cc module installation into Soong
  Temporarily add method to get java binary tool
This commit is contained in:
Colin Cross
2021-11-05 17:14:59 +00:00
committed by Gerrit Code Review
8 changed files with 46 additions and 9 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
}
@@ -585,6 +595,11 @@ func (c *config) HostJavaToolPath(ctx PathContext, path string) Path {
return PathForOutput(ctx, "host", c.PrebuiltOS(), "framework", path)
}
func (c *config) HostJavaBinToolPath(ctx PathContext, tool string) Path {
path := pathForInstall(ctx, ctx.Config().BuildOS, ctx.Config().BuildArch, "bin", false, tool)
return path
}
// PrebuiltOS returns the name of the host OS used in prebuilts directories.
func (c *config) PrebuiltOS() string {
switch runtime.GOOS {

View File

@@ -177,6 +177,16 @@ func (p PackageContext) HostBinToolVariable(name, path string) blueprint.Variabl
})
}
// HostJavaBinToolVariable returns a Variable whose value is the path to a host java tool
// in the bin directory for host java targets. It may only be called during a Go
// package's initialization - either from the init() function or as part of a
// package-scoped variable's initialization.
func (p PackageContext) HostJavaBinToolVariable(name, path string) blueprint.Variable {
return p.VariableFunc(name, func(ctx PackageVarContext) string {
return ctx.Config().HostJavaBinToolPath(ctx, path).String()
})
}
// HostJNIToolVariable returns a Variable whose value is the path to a host tool
// in the lib directory for host targets. It may only be called during a Go
// package's initialization - either from the init() function or as part of a

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

@@ -124,8 +124,8 @@ func init() {
pctx.HostBinToolVariable("Zip2ZipCmd", "zip2zip")
pctx.HostBinToolVariable("ZipSyncCmd", "zipsync")
pctx.HostBinToolVariable("ApiCheckCmd", "apicheck")
pctx.HostBinToolVariable("D8Cmd", "d8")
pctx.HostBinToolVariable("R8Cmd", "r8-compat-proguard")
pctx.HostJavaBinToolVariable("D8Cmd", "d8")
pctx.HostJavaBinToolVariable("R8Cmd", "r8-compat-proguard")
pctx.HostBinToolVariable("HiddenAPICmd", "hiddenapi")
pctx.HostBinToolVariable("ExtractApksCmd", "extract_apks")
pctx.VariableFunc("TurbineJar", func(ctx android.PackageVarContext) string {

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 {