summaryrefslogtreecommitdiff
path: root/common/module.go
diff options
context:
space:
mode:
Diffstat (limited to 'common/module.go')
-rw-r--r--common/module.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/common/module.go b/common/module.go
index e03b006e5..a3de5f6bd 100644
--- a/common/module.go
+++ b/common/module.go
@@ -15,7 +15,9 @@
package common
import (
+ "fmt"
"path/filepath"
+ "strings"
"android/soong"
"android/soong/glob"
@@ -363,6 +365,7 @@ func (a *AndroidModuleBase) GenerateBuildActions(ctx blueprint.ModuleContext) {
androidBaseContextImpl: a.androidBaseContextFactory(ctx),
installDeps: a.computeInstallDeps(ctx),
installFiles: a.installFiles,
+ missingDeps: ctx.GetMissingDependencies(),
}
if !a.Enabled() {
@@ -397,9 +400,28 @@ type androidModuleContext struct {
installDeps Paths
installFiles Paths
checkbuildFiles Paths
+ missingDeps []string
+}
+
+func (a *androidModuleContext) ninjaError(outputs []string, err error) {
+ a.ModuleContext.Build(pctx, blueprint.BuildParams{
+ Rule: ErrorRule,
+ Outputs: outputs,
+ Optional: true,
+ Args: map[string]string{
+ "error": err.Error(),
+ },
+ })
+ return
}
func (a *androidModuleContext) Build(pctx blueprint.PackageContext, params blueprint.BuildParams) {
+ if a.missingDeps != nil {
+ a.ninjaError(params.Outputs, fmt.Errorf("module %s missing dependencies: %s\n",
+ a.ModuleName(), strings.Join(a.missingDeps, ", ")))
+ return
+ }
+
params.Optional = true
a.ModuleContext.Build(pctx, params)
}
@@ -425,9 +447,19 @@ func (a *androidModuleContext) ModuleBuild(pctx blueprint.PackageContext, params
bparams.Implicits = append(bparams.Implicits, params.Implicit.String())
}
+ if a.missingDeps != nil {
+ a.ninjaError(bparams.Outputs, fmt.Errorf("module %s missing dependencies: %s\n",
+ a.ModuleName(), strings.Join(a.missingDeps, ", ")))
+ return
+ }
+
a.ModuleContext.Build(pctx, bparams)
}
+func (a *androidModuleContext) GetMissingDependencies() []string {
+ return a.missingDeps
+}
+
func (a *androidBaseContextImpl) Arch() Arch {
return a.arch
}