Switch PackageContext functions to take a ctx
am: 54daaf0371
Change-Id: I10fc75e9be9aaa930f05bb0a559aceb87a056120
This commit is contained in:
@@ -47,6 +47,9 @@ type configErrorWrapper struct {
|
|||||||
|
|
||||||
var _ PathContext = &configErrorWrapper{}
|
var _ PathContext = &configErrorWrapper{}
|
||||||
var _ errorfContext = &configErrorWrapper{}
|
var _ errorfContext = &configErrorWrapper{}
|
||||||
|
var _ PackageVarContext = &configErrorWrapper{}
|
||||||
|
var _ PackagePoolContext = &configErrorWrapper{}
|
||||||
|
var _ PackageRuleContext = &configErrorWrapper{}
|
||||||
|
|
||||||
func (e *configErrorWrapper) Config() Config {
|
func (e *configErrorWrapper) Config() Config {
|
||||||
return e.config
|
return e.config
|
||||||
@@ -62,33 +65,56 @@ func (e *configErrorWrapper) Fs() pathtools.FileSystem {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PackageVarContext interface {
|
||||||
|
PathContext
|
||||||
|
errorfContext
|
||||||
|
}
|
||||||
|
|
||||||
|
type PackagePoolContext PackageVarContext
|
||||||
|
type PackageRuleContext PackageVarContext
|
||||||
|
|
||||||
// VariableFunc wraps blueprint.PackageContext.VariableFunc, converting the interface{} config
|
// VariableFunc wraps blueprint.PackageContext.VariableFunc, converting the interface{} config
|
||||||
// argument to a Config.
|
// argument to a PackageVarContext.
|
||||||
func (p PackageContext) VariableFunc(name string,
|
func (p PackageContext) VariableFunc(name string,
|
||||||
f func(Config) (string, error)) blueprint.Variable {
|
f func(PackageVarContext) string) blueprint.Variable {
|
||||||
|
|
||||||
return p.PackageContext.VariableFunc(name, func(config interface{}) (string, error) {
|
return p.PackageContext.VariableFunc(name, func(config interface{}) (string, error) {
|
||||||
return f(config.(Config))
|
ctx := &configErrorWrapper{p, config.(Config), nil}
|
||||||
|
ret := f(ctx)
|
||||||
|
if len(ctx.errors) > 0 {
|
||||||
|
return "", ctx.errors[0]
|
||||||
|
}
|
||||||
|
return ret, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// PoolFunc wraps blueprint.PackageContext.PoolFunc, converting the interface{} config
|
// PoolFunc wraps blueprint.PackageContext.PoolFunc, converting the interface{} config
|
||||||
// argument to a Config.
|
// argument to a Context that supports Config().
|
||||||
func (p PackageContext) PoolFunc(name string,
|
func (p PackageContext) PoolFunc(name string,
|
||||||
f func(Config) (blueprint.PoolParams, error)) blueprint.Pool {
|
f func(PackagePoolContext) blueprint.PoolParams) blueprint.Pool {
|
||||||
|
|
||||||
return p.PackageContext.PoolFunc(name, func(config interface{}) (blueprint.PoolParams, error) {
|
return p.PackageContext.PoolFunc(name, func(config interface{}) (blueprint.PoolParams, error) {
|
||||||
return f(config.(Config))
|
ctx := &configErrorWrapper{p, config.(Config), nil}
|
||||||
|
params := f(ctx)
|
||||||
|
if len(ctx.errors) > 0 {
|
||||||
|
return params, ctx.errors[0]
|
||||||
|
}
|
||||||
|
return params, nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// RuleFunc wraps blueprint.PackageContext.RuleFunc, converting the interface{} config
|
// RuleFunc wraps blueprint.PackageContext.RuleFunc, converting the interface{} config
|
||||||
// argument to a Config.
|
// argument to a Context that supports Config().
|
||||||
func (p PackageContext) RuleFunc(name string,
|
func (p PackageContext) RuleFunc(name string,
|
||||||
f func(Config) (blueprint.RuleParams, error), argNames ...string) blueprint.Rule {
|
f func(PackageRuleContext) blueprint.RuleParams, argNames ...string) blueprint.Rule {
|
||||||
|
|
||||||
return p.PackageContext.RuleFunc(name, func(config interface{}) (blueprint.RuleParams, error) {
|
return p.PackageContext.RuleFunc(name, func(config interface{}) (blueprint.RuleParams, error) {
|
||||||
return f(config.(Config))
|
ctx := &configErrorWrapper{p, config.(Config), nil}
|
||||||
|
params := f(ctx)
|
||||||
|
if len(ctx.errors) > 0 {
|
||||||
|
return params, ctx.errors[0]
|
||||||
|
}
|
||||||
|
return params, nil
|
||||||
}, argNames...)
|
}, argNames...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,13 +123,8 @@ func (p PackageContext) RuleFunc(name string,
|
|||||||
// initialization - either from the init() function or as part of a
|
// initialization - either from the init() function or as part of a
|
||||||
// package-scoped variable's initialization.
|
// package-scoped variable's initialization.
|
||||||
func (p PackageContext) SourcePathVariable(name, path string) blueprint.Variable {
|
func (p PackageContext) SourcePathVariable(name, path string) blueprint.Variable {
|
||||||
return p.VariableFunc(name, func(config Config) (string, error) {
|
return p.VariableFunc(name, func(ctx PackageVarContext) string {
|
||||||
ctx := &configErrorWrapper{p, config, []error{}}
|
return safePathForSource(ctx, path).String()
|
||||||
p := safePathForSource(ctx, path)
|
|
||||||
if len(ctx.errors) > 0 {
|
|
||||||
return "", ctx.errors[0]
|
|
||||||
}
|
|
||||||
return p.String(), nil
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -112,17 +133,13 @@ func (p PackageContext) SourcePathVariable(name, path string) blueprint.Variable
|
|||||||
// called during a Go package's initialization - either from the init()
|
// called during a Go package's initialization - either from the init()
|
||||||
// function or as part of a package-scoped variable's initialization.
|
// function or as part of a package-scoped variable's initialization.
|
||||||
func (p PackageContext) SourcePathsVariable(name, separator string, paths ...string) blueprint.Variable {
|
func (p PackageContext) SourcePathsVariable(name, separator string, paths ...string) blueprint.Variable {
|
||||||
return p.VariableFunc(name, func(config Config) (string, error) {
|
return p.VariableFunc(name, func(ctx PackageVarContext) string {
|
||||||
ctx := &configErrorWrapper{p, config, []error{}}
|
|
||||||
var ret []string
|
var ret []string
|
||||||
for _, path := range paths {
|
for _, path := range paths {
|
||||||
p := safePathForSource(ctx, path)
|
p := safePathForSource(ctx, path)
|
||||||
if len(ctx.errors) > 0 {
|
|
||||||
return "", ctx.errors[0]
|
|
||||||
}
|
|
||||||
ret = append(ret, p.String())
|
ret = append(ret, p.String())
|
||||||
}
|
}
|
||||||
return strings.Join(ret, separator), nil
|
return strings.Join(ret, separator)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,13 +149,9 @@ func (p PackageContext) SourcePathsVariable(name, separator string, paths ...str
|
|||||||
// It may only be called during a Go package's initialization - either from the init() function or
|
// 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.
|
// as part of a package-scoped variable's initialization.
|
||||||
func (p PackageContext) SourcePathVariableWithEnvOverride(name, path, env string) blueprint.Variable {
|
func (p PackageContext) SourcePathVariableWithEnvOverride(name, path, env string) blueprint.Variable {
|
||||||
return p.VariableFunc(name, func(config Config) (string, error) {
|
return p.VariableFunc(name, func(ctx PackageVarContext) string {
|
||||||
ctx := &configErrorWrapper{p, config, []error{}}
|
|
||||||
p := safePathForSource(ctx, path)
|
p := safePathForSource(ctx, path)
|
||||||
if len(ctx.errors) > 0 {
|
return ctx.Config().GetenvWithDefault(env, p.String())
|
||||||
return "", ctx.errors[0]
|
|
||||||
}
|
|
||||||
return config.GetenvWithDefault(env, p.String()), nil
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,22 +160,13 @@ func (p PackageContext) SourcePathVariableWithEnvOverride(name, path, env string
|
|||||||
// package's initialization - either from the init() function or as part of a
|
// package's initialization - either from the init() function or as part of a
|
||||||
// package-scoped variable's initialization.
|
// package-scoped variable's initialization.
|
||||||
func (p PackageContext) HostBinToolVariable(name, path string) blueprint.Variable {
|
func (p PackageContext) HostBinToolVariable(name, path string) blueprint.Variable {
|
||||||
return p.VariableFunc(name, func(config Config) (string, error) {
|
return p.VariableFunc(name, func(ctx PackageVarContext) string {
|
||||||
po, err := p.HostBinToolPath(config, path)
|
return p.HostBinToolPath(ctx, path).String()
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return po.String(), nil
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p PackageContext) HostBinToolPath(config Config, path string) (Path, error) {
|
func (p PackageContext) HostBinToolPath(ctx PackageVarContext, path string) Path {
|
||||||
ctx := &configErrorWrapper{p, config, []error{}}
|
return PathForOutput(ctx, "host", ctx.Config().PrebuiltOS(), "bin", path)
|
||||||
pa := PathForOutput(ctx, "host", ctx.config.PrebuiltOS(), "bin", path)
|
|
||||||
if len(ctx.errors) > 0 {
|
|
||||||
return nil, ctx.errors[0]
|
|
||||||
}
|
|
||||||
return pa, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// HostJNIToolVariable returns a Variable whose value is the path to a host tool
|
// HostJNIToolVariable returns a Variable whose value is the path to a host tool
|
||||||
@@ -170,26 +174,17 @@ func (p PackageContext) HostBinToolPath(config Config, path string) (Path, error
|
|||||||
// package's initialization - either from the init() function or as part of a
|
// package's initialization - either from the init() function or as part of a
|
||||||
// package-scoped variable's initialization.
|
// package-scoped variable's initialization.
|
||||||
func (p PackageContext) HostJNIToolVariable(name, path string) blueprint.Variable {
|
func (p PackageContext) HostJNIToolVariable(name, path string) blueprint.Variable {
|
||||||
return p.VariableFunc(name, func(config Config) (string, error) {
|
return p.VariableFunc(name, func(ctx PackageVarContext) string {
|
||||||
po, err := p.HostJNIToolPath(config, path)
|
return p.HostJNIToolPath(ctx, path).String()
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return po.String(), nil
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p PackageContext) HostJNIToolPath(config Config, path string) (Path, error) {
|
func (p PackageContext) HostJNIToolPath(ctx PackageVarContext, path string) Path {
|
||||||
ctx := &configErrorWrapper{p, config, []error{}}
|
|
||||||
ext := ".so"
|
ext := ".so"
|
||||||
if runtime.GOOS == "darwin" {
|
if runtime.GOOS == "darwin" {
|
||||||
ext = ".dylib"
|
ext = ".dylib"
|
||||||
}
|
}
|
||||||
pa := PathForOutput(ctx, "host", ctx.config.PrebuiltOS(), "lib64", path+ext)
|
return PathForOutput(ctx, "host", ctx.Config().PrebuiltOS(), "lib64", path+ext)
|
||||||
if len(ctx.errors) > 0 {
|
|
||||||
return nil, ctx.errors[0]
|
|
||||||
}
|
|
||||||
return pa, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// HostJavaToolVariable returns a Variable whose value is the path to a host
|
// HostJavaToolVariable returns a Variable whose value is the path to a host
|
||||||
@@ -197,23 +192,13 @@ func (p PackageContext) HostJNIToolPath(config Config, path string) (Path, error
|
|||||||
// during a Go package's initialization - either from the init() function or as
|
// during a Go package's initialization - either from the init() function or as
|
||||||
// part of a package-scoped variable's initialization.
|
// part of a package-scoped variable's initialization.
|
||||||
func (p PackageContext) HostJavaToolVariable(name, path string) blueprint.Variable {
|
func (p PackageContext) HostJavaToolVariable(name, path string) blueprint.Variable {
|
||||||
return p.VariableFunc(name, func(config Config) (string, error) {
|
return p.VariableFunc(name, func(ctx PackageVarContext) string {
|
||||||
ctx := &configErrorWrapper{p, config, []error{}}
|
return p.HostJavaToolPath(ctx, path).String()
|
||||||
p := PathForOutput(ctx, "host", ctx.config.PrebuiltOS(), "framework", path)
|
|
||||||
if len(ctx.errors) > 0 {
|
|
||||||
return "", ctx.errors[0]
|
|
||||||
}
|
|
||||||
return p.String(), nil
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p PackageContext) HostJavaToolPath(config Config, path string) (Path, error) {
|
func (p PackageContext) HostJavaToolPath(ctx PackageVarContext, path string) Path {
|
||||||
ctx := &configErrorWrapper{p, config, []error{}}
|
return PathForOutput(ctx, "host", ctx.Config().PrebuiltOS(), "framework", path)
|
||||||
pa := PathForOutput(ctx, "host", ctx.config.PrebuiltOS(), "framework", path)
|
|
||||||
if len(ctx.errors) > 0 {
|
|
||||||
return nil, ctx.errors[0]
|
|
||||||
}
|
|
||||||
return pa, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// IntermediatesPathVariable returns a Variable whose value is the intermediate
|
// IntermediatesPathVariable returns a Variable whose value is the intermediate
|
||||||
@@ -221,13 +206,8 @@ func (p PackageContext) HostJavaToolPath(config Config, path string) (Path, erro
|
|||||||
// package's initialization - either from the init() function or as part of a
|
// package's initialization - either from the init() function or as part of a
|
||||||
// package-scoped variable's initialization.
|
// package-scoped variable's initialization.
|
||||||
func (p PackageContext) IntermediatesPathVariable(name, path string) blueprint.Variable {
|
func (p PackageContext) IntermediatesPathVariable(name, path string) blueprint.Variable {
|
||||||
return p.VariableFunc(name, func(config Config) (string, error) {
|
return p.VariableFunc(name, func(ctx PackageVarContext) string {
|
||||||
ctx := &configErrorWrapper{p, config, []error{}}
|
return PathForIntermediates(ctx, path).String()
|
||||||
p := PathForIntermediates(ctx, path)
|
|
||||||
if len(ctx.errors) > 0 {
|
|
||||||
return "", ctx.errors[0]
|
|
||||||
}
|
|
||||||
return p.String(), nil
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -238,21 +218,17 @@ func (p PackageContext) IntermediatesPathVariable(name, path string) blueprint.V
|
|||||||
func (p PackageContext) PrefixedExistentPathsForSourcesVariable(
|
func (p PackageContext) PrefixedExistentPathsForSourcesVariable(
|
||||||
name, prefix string, paths []string) blueprint.Variable {
|
name, prefix string, paths []string) blueprint.Variable {
|
||||||
|
|
||||||
return p.VariableFunc(name, func(config Config) (string, error) {
|
return p.VariableFunc(name, func(ctx PackageVarContext) string {
|
||||||
ctx := &configErrorWrapper{p, config, []error{}}
|
|
||||||
paths := ExistentPathsForSources(ctx, paths)
|
paths := ExistentPathsForSources(ctx, paths)
|
||||||
if len(ctx.errors) > 0 {
|
return JoinWithPrefix(paths.Strings(), prefix)
|
||||||
return "", ctx.errors[0]
|
|
||||||
}
|
|
||||||
return JoinWithPrefix(paths.Strings(), prefix), nil
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// AndroidStaticRule wraps blueprint.StaticRule and provides a default Pool if none is specified
|
// AndroidStaticRule wraps blueprint.StaticRule and provides a default Pool if none is specified
|
||||||
func (p PackageContext) AndroidStaticRule(name string, params blueprint.RuleParams,
|
func (p PackageContext) AndroidStaticRule(name string, params blueprint.RuleParams,
|
||||||
argNames ...string) blueprint.Rule {
|
argNames ...string) blueprint.Rule {
|
||||||
return p.AndroidRuleFunc(name, func(Config) (blueprint.RuleParams, error) {
|
return p.AndroidRuleFunc(name, func(PackageRuleContext) blueprint.RuleParams {
|
||||||
return params, nil
|
return params
|
||||||
}, argNames...)
|
}, argNames...)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -263,14 +239,14 @@ func (p PackageContext) AndroidGomaStaticRule(name string, params blueprint.Rule
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p PackageContext) AndroidRuleFunc(name string,
|
func (p PackageContext) AndroidRuleFunc(name string,
|
||||||
f func(Config) (blueprint.RuleParams, error), argNames ...string) blueprint.Rule {
|
f func(PackageRuleContext) blueprint.RuleParams, argNames ...string) blueprint.Rule {
|
||||||
return p.RuleFunc(name, func(config Config) (blueprint.RuleParams, error) {
|
return p.RuleFunc(name, func(ctx PackageRuleContext) blueprint.RuleParams {
|
||||||
params, err := f(config)
|
params := f(ctx)
|
||||||
if config.UseGoma() && params.Pool == nil {
|
if ctx.Config().UseGoma() && params.Pool == nil {
|
||||||
// When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
|
// When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
|
||||||
// local parallelism value
|
// local parallelism value
|
||||||
params.Pool = localPool
|
params.Pool = localPool
|
||||||
}
|
}
|
||||||
return params, err
|
return params
|
||||||
}, argNames...)
|
}, argNames...)
|
||||||
}
|
}
|
||||||
|
@@ -197,10 +197,10 @@ var (
|
|||||||
_ = pctx.SourcePathVariable("sAbiDiffer", "prebuilts/clang-tools/${config.HostPrebuiltTag}/bin/header-abi-diff")
|
_ = pctx.SourcePathVariable("sAbiDiffer", "prebuilts/clang-tools/${config.HostPrebuiltTag}/bin/header-abi-diff")
|
||||||
|
|
||||||
sAbiDiff = pctx.AndroidRuleFunc("sAbiDiff",
|
sAbiDiff = pctx.AndroidRuleFunc("sAbiDiff",
|
||||||
func(config android.Config) (blueprint.RuleParams, error) {
|
func(ctx android.PackageRuleContext) blueprint.RuleParams {
|
||||||
|
|
||||||
commandStr := "($sAbiDiffer $allowFlags -lib $libName -arch $arch -check-all-apis -o ${out} -new $in -old $referenceDump)"
|
commandStr := "($sAbiDiffer $allowFlags -lib $libName -arch $arch -check-all-apis -o ${out} -new $in -old $referenceDump)"
|
||||||
distDir := config.ProductVariables.DistDir
|
distDir := ctx.Config().ProductVariables.DistDir
|
||||||
if distDir != nil && *distDir != "" {
|
if distDir != nil && *distDir != "" {
|
||||||
distAbiDiffDir := *distDir + "/abidiffs/"
|
distAbiDiffDir := *distDir + "/abidiffs/"
|
||||||
commandStr += " || (mkdir -p " + distAbiDiffDir + " && cp ${out} " + distAbiDiffDir + " && exit 1)"
|
commandStr += " || (mkdir -p " + distAbiDiffDir + " && cp ${out} " + distAbiDiffDir + " && exit 1)"
|
||||||
@@ -208,7 +208,7 @@ var (
|
|||||||
return blueprint.RuleParams{
|
return blueprint.RuleParams{
|
||||||
Command: commandStr,
|
Command: commandStr,
|
||||||
CommandDeps: []string{"$sAbiDiffer"},
|
CommandDeps: []string{"$sAbiDiffer"},
|
||||||
}, nil
|
}
|
||||||
},
|
},
|
||||||
"allowFlags", "referenceDump", "libName", "arch")
|
"allowFlags", "referenceDump", "libName", "arch")
|
||||||
|
|
||||||
|
@@ -180,26 +180,26 @@ func init() {
|
|||||||
[]string{"libnativehelper/include_deprecated"})
|
[]string{"libnativehelper/include_deprecated"})
|
||||||
|
|
||||||
pctx.SourcePathVariable("ClangDefaultBase", ClangDefaultBase)
|
pctx.SourcePathVariable("ClangDefaultBase", ClangDefaultBase)
|
||||||
pctx.VariableFunc("ClangBase", func(config android.Config) (string, error) {
|
pctx.VariableFunc("ClangBase", func(ctx android.PackageVarContext) string {
|
||||||
if override := config.Getenv("LLVM_PREBUILTS_BASE"); override != "" {
|
if override := ctx.Config().Getenv("LLVM_PREBUILTS_BASE"); override != "" {
|
||||||
return override, nil
|
return override
|
||||||
}
|
}
|
||||||
return "${ClangDefaultBase}", nil
|
return "${ClangDefaultBase}"
|
||||||
})
|
})
|
||||||
pctx.VariableFunc("ClangVersion", func(config android.Config) (string, error) {
|
pctx.VariableFunc("ClangVersion", func(ctx android.PackageVarContext) string {
|
||||||
if override := config.Getenv("LLVM_PREBUILTS_VERSION"); override != "" {
|
if override := ctx.Config().Getenv("LLVM_PREBUILTS_VERSION"); override != "" {
|
||||||
return override, nil
|
return override
|
||||||
}
|
}
|
||||||
return ClangDefaultVersion, nil
|
return ClangDefaultVersion
|
||||||
})
|
})
|
||||||
pctx.StaticVariable("ClangPath", "${ClangBase}/${HostPrebuiltTag}/${ClangVersion}")
|
pctx.StaticVariable("ClangPath", "${ClangBase}/${HostPrebuiltTag}/${ClangVersion}")
|
||||||
pctx.StaticVariable("ClangBin", "${ClangPath}/bin")
|
pctx.StaticVariable("ClangBin", "${ClangPath}/bin")
|
||||||
|
|
||||||
pctx.VariableFunc("ClangShortVersion", func(config android.Config) (string, error) {
|
pctx.VariableFunc("ClangShortVersion", func(ctx android.PackageVarContext) string {
|
||||||
if override := config.Getenv("LLVM_RELEASE_VERSION"); override != "" {
|
if override := ctx.Config().Getenv("LLVM_RELEASE_VERSION"); override != "" {
|
||||||
return override, nil
|
return override
|
||||||
}
|
}
|
||||||
return ClangDefaultShortVersion, nil
|
return ClangDefaultShortVersion
|
||||||
})
|
})
|
||||||
pctx.StaticVariable("ClangAsanLibDir", "${ClangBase}/linux-x86/${ClangVersion}/lib64/clang/${ClangShortVersion}/lib/linux")
|
pctx.StaticVariable("ClangAsanLibDir", "${ClangBase}/linux-x86/${ClangVersion}/lib64/clang/${ClangShortVersion}/lib/linux")
|
||||||
if runtime.GOOS == "darwin" {
|
if runtime.GOOS == "darwin" {
|
||||||
@@ -222,11 +222,11 @@ func init() {
|
|||||||
"frameworks/rs/script_api/include",
|
"frameworks/rs/script_api/include",
|
||||||
})
|
})
|
||||||
|
|
||||||
pctx.VariableFunc("CcWrapper", func(config android.Config) (string, error) {
|
pctx.VariableFunc("CcWrapper", func(ctx android.PackageVarContext) string {
|
||||||
if override := config.Getenv("CC_WRAPPER"); override != "" {
|
if override := ctx.Config().Getenv("CC_WRAPPER"); override != "" {
|
||||||
return override + " ", nil
|
return override + " "
|
||||||
}
|
}
|
||||||
return "", nil
|
return ""
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -15,9 +15,8 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
|
||||||
|
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -25,9 +24,9 @@ func init() {
|
|||||||
// Global tidy checks include only google*, performance*,
|
// Global tidy checks include only google*, performance*,
|
||||||
// and misc-macro-parentheses, but not google-readability*
|
// and misc-macro-parentheses, but not google-readability*
|
||||||
// or google-runtime-references.
|
// or google-runtime-references.
|
||||||
pctx.VariableFunc("TidyDefaultGlobalChecks", func(config android.Config) (string, error) {
|
pctx.VariableFunc("TidyDefaultGlobalChecks", func(ctx android.PackageVarContext) string {
|
||||||
if override := config.Getenv("DEFAULT_GLOBAL_TIDY_CHECKS"); override != "" {
|
if override := ctx.Config().Getenv("DEFAULT_GLOBAL_TIDY_CHECKS"); override != "" {
|
||||||
return override, nil
|
return override
|
||||||
}
|
}
|
||||||
return strings.Join([]string{
|
return strings.Join([]string{
|
||||||
"-*",
|
"-*",
|
||||||
@@ -36,14 +35,14 @@ func init() {
|
|||||||
"performance*",
|
"performance*",
|
||||||
"-google-readability*",
|
"-google-readability*",
|
||||||
"-google-runtime-references",
|
"-google-runtime-references",
|
||||||
}, ","), nil
|
}, ",")
|
||||||
})
|
})
|
||||||
|
|
||||||
// There are too many clang-tidy warnings in external and vendor projects.
|
// There are too many clang-tidy warnings in external and vendor projects.
|
||||||
// Enable only some google checks for these projects.
|
// Enable only some google checks for these projects.
|
||||||
pctx.VariableFunc("TidyExternalVendorChecks", func(config android.Config) (string, error) {
|
pctx.VariableFunc("TidyExternalVendorChecks", func(ctx android.PackageVarContext) string {
|
||||||
if override := config.Getenv("DEFAULT_EXTERNAL_VENDOR_TIDY_CHECKS"); override != "" {
|
if override := ctx.Config().Getenv("DEFAULT_EXTERNAL_VENDOR_TIDY_CHECKS"); override != "" {
|
||||||
return override, nil
|
return override
|
||||||
}
|
}
|
||||||
return strings.Join([]string{
|
return strings.Join([]string{
|
||||||
"-*",
|
"-*",
|
||||||
@@ -54,7 +53,7 @@ func init() {
|
|||||||
"-google-readability*",
|
"-google-readability*",
|
||||||
"-google-runtime-int",
|
"-google-runtime-int",
|
||||||
"-google-runtime-references",
|
"-google-runtime-references",
|
||||||
}, ","), nil
|
}, ",")
|
||||||
})
|
})
|
||||||
|
|
||||||
// Give warnings to header files only in selected directories.
|
// Give warnings to header files only in selected directories.
|
||||||
|
@@ -15,7 +15,6 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -107,26 +106,28 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
pctx.VariableFunc("macSdkPath", func(config android.Config) (string, error) {
|
pctx.VariableFunc("macSdkPath", func(ctx android.PackageVarContext) string {
|
||||||
xcodeselect := config.HostSystemTool("xcode-select")
|
xcodeselect := ctx.Config().HostSystemTool("xcode-select")
|
||||||
bytes, err := exec.Command(xcodeselect, "--print-path").Output()
|
bytes, err := exec.Command(xcodeselect, "--print-path").Output()
|
||||||
return strings.TrimSpace(string(bytes)), err
|
if err != nil {
|
||||||
|
ctx.Errorf("xcode-select failed with: %q", err.Error())
|
||||||
|
}
|
||||||
|
return strings.TrimSpace(string(bytes))
|
||||||
})
|
})
|
||||||
pctx.VariableFunc("macSdkRoot", func(config android.Config) (string, error) {
|
pctx.VariableFunc("macSdkRoot", func(ctx android.PackageVarContext) string {
|
||||||
return xcrunSdk(config, "--show-sdk-path")
|
return xcrunSdk(ctx, "--show-sdk-path")
|
||||||
})
|
})
|
||||||
pctx.StaticVariable("macMinVersion", "10.8")
|
pctx.StaticVariable("macMinVersion", "10.8")
|
||||||
pctx.VariableFunc("MacArPath", func(config android.Config) (string, error) {
|
pctx.VariableFunc("MacArPath", func(ctx android.PackageVarContext) string {
|
||||||
return xcrun(config, "--find", "ar")
|
return xcrun(ctx, "--find", "ar")
|
||||||
})
|
})
|
||||||
|
|
||||||
pctx.VariableFunc("MacStripPath", func(config android.Config) (string, error) {
|
pctx.VariableFunc("MacStripPath", func(ctx android.PackageVarContext) string {
|
||||||
return xcrun(config, "--find", "strip")
|
return xcrun(ctx, "--find", "strip")
|
||||||
})
|
})
|
||||||
|
|
||||||
pctx.VariableFunc("MacToolPath", func(config android.Config) (string, error) {
|
pctx.VariableFunc("MacToolPath", func(ctx android.PackageVarContext) string {
|
||||||
path, err := xcrun(config, "--find", "ld")
|
return filepath.Dir(xcrun(ctx, "--find", "ld"))
|
||||||
return filepath.Dir(path), err
|
|
||||||
})
|
})
|
||||||
|
|
||||||
pctx.StaticVariable("DarwinGccVersion", darwinGccVersion)
|
pctx.StaticVariable("DarwinGccVersion", darwinGccVersion)
|
||||||
@@ -156,33 +157,38 @@ func init() {
|
|||||||
pctx.StaticVariable("DarwinX8664YasmFlags", "-f macho -m amd64")
|
pctx.StaticVariable("DarwinX8664YasmFlags", "-f macho -m amd64")
|
||||||
}
|
}
|
||||||
|
|
||||||
func xcrun(config android.Config, args ...string) (string, error) {
|
func xcrun(ctx android.PackageVarContext, args ...string) string {
|
||||||
xcrun := config.HostSystemTool("xcrun")
|
xcrun := ctx.Config().HostSystemTool("xcrun")
|
||||||
bytes, err := exec.Command(xcrun, args...).Output()
|
bytes, err := exec.Command(xcrun, args...).Output()
|
||||||
return strings.TrimSpace(string(bytes)), err
|
if err != nil {
|
||||||
|
ctx.Errorf("xcrun failed with: %q", err.Error())
|
||||||
|
}
|
||||||
|
return strings.TrimSpace(string(bytes))
|
||||||
}
|
}
|
||||||
|
|
||||||
func xcrunSdk(config android.Config, arg string) (string, error) {
|
func xcrunSdk(ctx android.PackageVarContext, arg string) string {
|
||||||
xcrun := config.HostSystemTool("xcrun")
|
xcrun := ctx.Config().HostSystemTool("xcrun")
|
||||||
if selected := config.Getenv("MAC_SDK_VERSION"); selected != "" {
|
if selected := ctx.Config().Getenv("MAC_SDK_VERSION"); selected != "" {
|
||||||
if !inList(selected, darwinSupportedSdkVersions) {
|
if !inList(selected, darwinSupportedSdkVersions) {
|
||||||
return "", fmt.Errorf("MAC_SDK_VERSION %s isn't supported: %q", selected, darwinSupportedSdkVersions)
|
ctx.Errorf("MAC_SDK_VERSION %s isn't supported: %q", selected, darwinSupportedSdkVersions)
|
||||||
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes, err := exec.Command(xcrun, "--sdk", "macosx"+selected, arg).Output()
|
bytes, err := exec.Command(xcrun, "--sdk", "macosx"+selected, arg).Output()
|
||||||
if err == nil {
|
if err != nil {
|
||||||
return strings.TrimSpace(string(bytes)), err
|
ctx.Errorf("MAC_SDK_VERSION %s is not installed", selected)
|
||||||
}
|
}
|
||||||
return "", fmt.Errorf("MAC_SDK_VERSION %s is not installed", selected)
|
return strings.TrimSpace(string(bytes))
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, sdk := range darwinSupportedSdkVersions {
|
for _, sdk := range darwinSupportedSdkVersions {
|
||||||
bytes, err := exec.Command(xcrun, "--sdk", "macosx"+sdk, arg).Output()
|
bytes, err := exec.Command(xcrun, "--sdk", "macosx"+sdk, arg).Output()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return strings.TrimSpace(string(bytes)), err
|
return strings.TrimSpace(string(bytes))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "", fmt.Errorf("Could not find a supported mac sdk: %q", darwinSupportedSdkVersions)
|
ctx.Errorf("Could not find a supported mac sdk: %q", darwinSupportedSdkVersions)
|
||||||
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
type toolchainDarwin struct {
|
type toolchainDarwin struct {
|
||||||
|
@@ -66,9 +66,9 @@ func init() {
|
|||||||
|
|
||||||
pctx.VariableConfigMethod("hostPrebuiltTag", android.Config.PrebuiltOS)
|
pctx.VariableConfigMethod("hostPrebuiltTag", android.Config.PrebuiltOS)
|
||||||
|
|
||||||
pctx.VariableFunc("JavaHome", func(config android.Config) (string, error) {
|
pctx.VariableFunc("JavaHome", func(ctx android.PackageVarContext) string {
|
||||||
// This is set up and guaranteed by soong_ui
|
// This is set up and guaranteed by soong_ui
|
||||||
return config.Getenv("ANDROID_JAVA_HOME"), nil
|
return ctx.Config().Getenv("ANDROID_JAVA_HOME")
|
||||||
})
|
})
|
||||||
|
|
||||||
pctx.SourcePathVariable("JavaToolchain", "${JavaHome}/bin")
|
pctx.SourcePathVariable("JavaToolchain", "${JavaHome}/bin")
|
||||||
@@ -89,38 +89,27 @@ func init() {
|
|||||||
pctx.HostBinToolVariable("SoongZipCmd", "soong_zip")
|
pctx.HostBinToolVariable("SoongZipCmd", "soong_zip")
|
||||||
pctx.HostBinToolVariable("MergeZipsCmd", "merge_zips")
|
pctx.HostBinToolVariable("MergeZipsCmd", "merge_zips")
|
||||||
pctx.HostBinToolVariable("Zip2ZipCmd", "zip2zip")
|
pctx.HostBinToolVariable("Zip2ZipCmd", "zip2zip")
|
||||||
pctx.VariableFunc("DxCmd", func(config android.Config) (string, error) {
|
pctx.VariableFunc("DxCmd", func(ctx android.PackageVarContext) string {
|
||||||
|
config := ctx.Config()
|
||||||
if config.IsEnvFalse("USE_D8") {
|
if config.IsEnvFalse("USE_D8") {
|
||||||
if config.UnbundledBuild() || config.IsPdkBuild() {
|
if config.UnbundledBuild() || config.IsPdkBuild() {
|
||||||
return "prebuilts/build-tools/common/bin/dx", nil
|
return "prebuilts/build-tools/common/bin/dx"
|
||||||
} else {
|
} else {
|
||||||
path, err := pctx.HostBinToolPath(config, "dx")
|
return pctx.HostBinToolPath(ctx, "dx").String()
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return path.String(), nil
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
path, err := pctx.HostBinToolPath(config, "d8-compat-dx")
|
return pctx.HostBinToolPath(ctx, "d8-compat-dx").String()
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return path.String(), nil
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
pctx.HostBinToolVariable("D8Cmd", "d8")
|
pctx.HostBinToolVariable("D8Cmd", "d8")
|
||||||
pctx.HostBinToolVariable("R8Cmd", "r8-compat-proguard")
|
pctx.HostBinToolVariable("R8Cmd", "r8-compat-proguard")
|
||||||
|
|
||||||
pctx.VariableFunc("TurbineJar", func(config android.Config) (string, error) {
|
pctx.VariableFunc("TurbineJar", func(ctx android.PackageVarContext) string {
|
||||||
turbine := "turbine.jar"
|
turbine := "turbine.jar"
|
||||||
if config.UnbundledBuild() {
|
if ctx.Config().UnbundledBuild() {
|
||||||
return "prebuilts/build-tools/common/framework/" + turbine, nil
|
return "prebuilts/build-tools/common/framework/" + turbine
|
||||||
} else {
|
} else {
|
||||||
path, err := pctx.HostJavaToolPath(config, turbine)
|
return pctx.HostJavaToolPath(ctx, turbine).String()
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return path.String(), nil
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -131,25 +120,21 @@ func init() {
|
|||||||
|
|
||||||
pctx.HostBinToolVariable("SoongJavacWrapper", "soong_javac_wrapper")
|
pctx.HostBinToolVariable("SoongJavacWrapper", "soong_javac_wrapper")
|
||||||
|
|
||||||
pctx.VariableFunc("JavacWrapper", func(config android.Config) (string, error) {
|
pctx.VariableFunc("JavacWrapper", func(ctx android.PackageVarContext) string {
|
||||||
if override := config.Getenv("JAVAC_WRAPPER"); override != "" {
|
if override := ctx.Config().Getenv("JAVAC_WRAPPER"); override != "" {
|
||||||
return override + " ", nil
|
return override + " "
|
||||||
}
|
}
|
||||||
return "", nil
|
return ""
|
||||||
})
|
})
|
||||||
|
|
||||||
pctx.HostJavaToolVariable("JacocoCLIJar", "jacoco-cli.jar")
|
pctx.HostJavaToolVariable("JacocoCLIJar", "jacoco-cli.jar")
|
||||||
|
|
||||||
hostBinToolVariableWithPrebuilt := func(name, prebuiltDir, tool string) {
|
hostBinToolVariableWithPrebuilt := func(name, prebuiltDir, tool string) {
|
||||||
pctx.VariableFunc(name, func(config android.Config) (string, error) {
|
pctx.VariableFunc(name, func(ctx android.PackageVarContext) string {
|
||||||
if config.UnbundledBuild() || config.IsPdkBuild() {
|
if ctx.Config().UnbundledBuild() || ctx.Config().IsPdkBuild() {
|
||||||
return filepath.Join(prebuiltDir, runtime.GOOS, "bin", tool), nil
|
return filepath.Join(prebuiltDir, runtime.GOOS, "bin", tool)
|
||||||
} else {
|
} else {
|
||||||
if path, err := pctx.HostBinToolPath(config, tool); err != nil {
|
return pctx.HostBinToolPath(ctx, tool).String()
|
||||||
return "", err
|
|
||||||
} else {
|
|
||||||
return path.String(), nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@@ -27,8 +27,8 @@ var (
|
|||||||
|
|
||||||
// Wrapper that grabs value of val late so it can be initialized by a later module's init function
|
// Wrapper that grabs value of val late so it can be initialized by a later module's init function
|
||||||
func errorProneVar(name string, val *string) {
|
func errorProneVar(name string, val *string) {
|
||||||
pctx.VariableFunc(name, func(config android.Config) (string, error) {
|
pctx.VariableFunc(name, func(android.PackageVarContext) string {
|
||||||
return *val, nil
|
return *val
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user