Handle dependencies with export_generated_headers
This sets up the proper dependencies within Soong by adding the imported
dependencies into GeneratedHeaders, and re-exporting them as necessary.
It also exports them to Make using the new LOCAL_EXPORT_C_INCLUDE_DEPS.
Bug: 31742855
Test: Inspection, build hardware/interfaces (pending)
Change-Id: I6a10ceec377a97966baa9d4876b90fcda391dd01
diff --git a/cc/cc.go b/cc/cc.go
index 66c47c1..9a19812 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -80,6 +80,7 @@
GeneratedHeaders android.Paths
Flags, ReexportedFlags []string
+ ReexportedFlagsDeps android.Paths
CrtBegin, CrtEnd android.OptionalPath
}
@@ -760,6 +761,8 @@
depPaths.Flags = append(depPaths.Flags, flags)
if tag == genHeaderExportDepTag {
depPaths.ReexportedFlags = append(depPaths.ReexportedFlags, flags)
+ depPaths.ReexportedFlagsDeps = append(depPaths.ReexportedFlagsDeps,
+ genRule.GeneratedSourceFiles()...)
}
} else {
ctx.ModuleErrorf("module %q is not a genrule", name)
@@ -799,10 +802,13 @@
if t, ok := tag.(dependencyTag); ok && t.library {
if i, ok := cc.linker.(exportedFlagsProducer); ok {
flags := i.exportedFlags()
+ deps := i.exportedFlagsDeps()
depPaths.Flags = append(depPaths.Flags, flags...)
+ depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders, deps...)
if t.reexportFlags {
depPaths.ReexportedFlags = append(depPaths.ReexportedFlags, flags...)
+ depPaths.ReexportedFlagsDeps = append(depPaths.ReexportedFlagsDeps, deps...)
}
}