diff --git a/cc/cc.go b/cc/cc.go
index 5dfc563..e890aa0 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -501,7 +501,7 @@
 	return String(c.Properties.Sdk_version)
 }
 
-func (c *Module) IncludeDirs(ctx android.BaseModuleContext) android.Paths {
+func (c *Module) IncludeDirs() android.Paths {
 	if c.linker != nil {
 		if library, ok := c.linker.(exportedFlagsProducer); ok {
 			return library.exportedDirs()
@@ -2027,10 +2027,11 @@
 				}
 			}
 
+			depPaths.IncludeDirs = append(depPaths.IncludeDirs, ccDep.IncludeDirs()...)
+
 			// Exporting flags only makes sense for cc.Modules
 			if _, ok := ccDep.(*Module); ok {
 				if i, ok := ccDep.(*Module).linker.(exportedFlagsProducer); ok {
-					depPaths.IncludeDirs = append(depPaths.IncludeDirs, i.exportedDirs()...)
 					depPaths.SystemIncludeDirs = append(depPaths.SystemIncludeDirs, i.exportedSystemDirs()...)
 					depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders, i.exportedDeps()...)
 					depPaths.Flags = append(depPaths.Flags, i.exportedFlags()...)
diff --git a/cc/linkable.go b/cc/linkable.go
index cfbaffe..2efefea 100644
--- a/cc/linkable.go
+++ b/cc/linkable.go
@@ -13,7 +13,7 @@
 
 	OutputFile() android.OptionalPath
 
-	IncludeDirs(ctx android.BaseModuleContext) android.Paths
+	IncludeDirs() android.Paths
 	SetDepsInLinkOrder([]android.Path)
 	GetDepsInLinkOrder() []android.Path
 
diff --git a/rust/library.go b/rust/library.go
index adf6e95..386ea47 100644
--- a/rust/library.go
+++ b/rust/library.go
@@ -78,6 +78,7 @@
 	MutatedProperties    LibraryMutatedProperties
 	distFile             android.OptionalPath
 	unstrippedOutputFile android.Path
+	includeDirs          android.Paths
 }
 
 type libraryInterface interface {
@@ -311,6 +312,13 @@
 
 	return deps
 }
+func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) Flags {
+	flags = library.baseCompiler.compilerFlags(ctx, flags)
+	if library.shared() || library.static() {
+		library.includeDirs = append(library.includeDirs, android.PathsForModuleSrc(ctx, library.Properties.Include_dirs)...)
+	}
+	return flags
+}
 
 func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Path {
 	var outputFile android.WritablePath
diff --git a/rust/rust.go b/rust/rust.go
index 612e257..dc7ebf9 100644
--- a/rust/rust.go
+++ b/rust/rust.go
@@ -246,10 +246,10 @@
 	return false
 }
 
-func (mod *Module) IncludeDirs(ctx android.BaseModuleContext) android.Paths {
+func (mod *Module) IncludeDirs() android.Paths {
 	if mod.compiler != nil {
 		if library, ok := mod.compiler.(*libraryDecorator); ok {
-			return android.PathsForSource(ctx, library.Properties.Include_dirs)
+			return library.includeDirs
 		}
 	}
 	panic(fmt.Errorf("IncludeDirs called on non-library module: %q", mod.BaseModuleName()))
