diff --git a/cc/compiler.go b/cc/compiler.go
index 32d98e4..0184ee9 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -100,6 +100,7 @@
 
 type baseCompiler struct {
 	Properties BaseCompilerProperties
+	Proto      ProtoProperties
 	deps       android.Paths
 }
 
@@ -123,6 +124,10 @@
 	deps.GeneratedSources = append(deps.GeneratedSources, compiler.Properties.Generated_sources...)
 	deps.GeneratedHeaders = append(deps.GeneratedHeaders, compiler.Properties.Generated_headers...)
 
+	if compiler.hasProto() {
+		deps = protoDeps(ctx, deps, &compiler.Proto)
+	}
+
 	return deps
 }
 
@@ -160,11 +165,7 @@
 				"${config.CommonNativehelperInclude}")
 		}
 
-		flags.GlobalFlags = append(flags.GlobalFlags, []string{
-			"-I" + android.PathForModuleSrc(ctx).String(),
-			"-I" + android.PathForModuleOut(ctx).String(),
-			"-I" + android.PathForModuleGen(ctx).String(),
-		}...)
+		flags.GlobalFlags = append(flags.GlobalFlags, "-I"+android.PathForModuleSrc(ctx).String())
 	}
 
 	if ctx.sdk() {
@@ -321,9 +322,23 @@
 		flags.CFlags = append(flags.CFlags, "-DANDROID_STRICT")
 	}
 
+	if compiler.hasProto() {
+		flags = protoFlags(ctx, flags, &compiler.Proto)
+	}
+
 	return flags
 }
 
+func (compiler *baseCompiler) hasProto() bool {
+	for _, src := range compiler.Properties.Srcs {
+		if filepath.Ext(src) == ".proto" {
+			return true
+		}
+	}
+
+	return false
+}
+
 var gnuToCReplacer = strings.NewReplacer("gnu", "c")
 
 func ndkPathDeps(ctx ModuleContext) android.Paths {
