diff --git a/cc/androidmk.go b/cc/androidmk.go
index 676ae30..a4d7fcf 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -100,6 +100,10 @@
 		if len(exportedIncludes) > 0 {
 			fmt.Fprintln(w, "LOCAL_EXPORT_C_INCLUDE_DIRS :=", strings.Join(exportedIncludes, " "))
 		}
+		exportedIncludeDeps := library.exportedFlagsDeps()
+		if len(exportedIncludeDeps) > 0 {
+			fmt.Fprintln(w, "LOCAL_EXPORT_C_INCLUDE_DEPS :=", strings.Join(exportedIncludeDeps.Strings(), " "))
+		}
 
 		fmt.Fprintln(w, "LOCAL_BUILT_MODULE_STEM := $(LOCAL_MODULE)"+outputFile.Ext())
 
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...)
 				}
 			}
 
diff --git a/cc/library.go b/cc/library.go
index cc5ff15..7cc587f 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -117,7 +117,8 @@
 type flagExporter struct {
 	Properties FlagExporterProperties
 
-	flags []string
+	flags     []string
+	flagsDeps android.Paths
 }
 
 func (f *flagExporter) exportIncludes(ctx ModuleContext, inc string) {
@@ -131,12 +132,21 @@
 	f.flags = append(f.flags, flags...)
 }
 
+func (f *flagExporter) reexportDeps(deps android.Paths) {
+	f.flagsDeps = append(f.flagsDeps, deps...)
+}
+
 func (f *flagExporter) exportedFlags() []string {
 	return f.flags
 }
 
+func (f *flagExporter) exportedFlagsDeps() android.Paths {
+	return f.flagsDeps
+}
+
 type exportedFlagsProducer interface {
 	exportedFlags() []string
+	exportedFlagsDeps() android.Paths
 }
 
 var _ exportedFlagsProducer = (*flagExporter)(nil)
@@ -445,6 +455,7 @@
 
 	library.exportIncludes(ctx, "-I")
 	library.reexportFlags(deps.ReexportedFlags)
+	library.reexportDeps(deps.ReexportedFlagsDeps)
 
 	return out
 }
