diff --git a/android/config.go b/android/config.go
index 21a7233..b7aac02 100644
--- a/android/config.go
+++ b/android/config.go
@@ -369,6 +369,10 @@
 	return false
 }
 
+func (c *config) UseGoma() bool {
+	return Bool(c.ProductVariables.UseGoma)
+}
+
 func (c *config) LibartImgHostBaseAddress() string {
 	return "0x60000000"
 }
diff --git a/android/defs.go b/android/defs.go
index 9c6527d..6e28de7 100644
--- a/android/defs.go
+++ b/android/defs.go
@@ -28,7 +28,7 @@
 	// A phony rule that is not the built-in Ninja phony rule.  The built-in
 	// phony rule has special behavior that is sometimes not desired.  See the
 	// Ninja docs for more details.
-	Phony = pctx.StaticRule("Phony",
+	Phony = pctx.AndroidStaticRule("Phony",
 		blueprint.RuleParams{
 			Command:     "# phony $out",
 			Description: "phony $out",
@@ -37,7 +37,7 @@
 	// GeneratedFile is a rule for indicating that a given file was generated
 	// while running soong.  This allows the file to be cleaned up if it ever
 	// stops being generated by soong.
-	GeneratedFile = pctx.StaticRule("GeneratedFile",
+	GeneratedFile = pctx.AndroidStaticRule("GeneratedFile",
 		blueprint.RuleParams{
 			Command:     "# generated $out",
 			Description: "generated $out",
@@ -45,7 +45,7 @@
 		})
 
 	// A copy rule.
-	Cp = pctx.StaticRule("Cp",
+	Cp = pctx.AndroidStaticRule("Cp",
 		blueprint.RuleParams{
 			Command:     "cp $cpPreserveSymlinks $cpFlags $in $out",
 			Description: "cp $out",
@@ -53,26 +53,29 @@
 		"cpFlags")
 
 	// A timestamp touch rule.
-	Touch = pctx.StaticRule("Touch",
+	Touch = pctx.AndroidStaticRule("Touch",
 		blueprint.RuleParams{
 			Command:     "touch $out",
 			Description: "touch $out",
 		})
 
 	// A symlink rule.
-	Symlink = pctx.StaticRule("Symlink",
+	Symlink = pctx.AndroidStaticRule("Symlink",
 		blueprint.RuleParams{
 			Command:     "ln -f -s $fromPath $out",
 			Description: "symlink $out",
 		},
 		"fromPath")
 
-	ErrorRule = pctx.StaticRule("Error",
+	ErrorRule = pctx.AndroidStaticRule("Error",
 		blueprint.RuleParams{
 			Command:     `echo "$error" && false`,
 			Description: "error building $out",
 		},
 		"error")
+
+	// Used only when USE_GOMA=true is set, to restrict non-goma jobs to the local parallelism value
+	localPool = blueprint.NewBuiltinPool("local_pool")
 )
 
 func init() {
diff --git a/android/glob.go b/android/glob.go
index 34b3de4..0457cbc 100644
--- a/android/glob.go
+++ b/android/glob.go
@@ -43,7 +43,7 @@
 
 	// globRule rule traverses directories to produce a list of files that match $glob
 	// and writes it to $out if it has changed, and writes the directories to $out.d
-	globRule = pctx.StaticRule("globRule",
+	globRule = pctx.AndroidStaticRule("globRule",
 		blueprint.RuleParams{
 			Command:     fmt.Sprintf(`%s -o $out $excludes "$glob"`, globCmd),
 			CommandDeps: []string{globCmd},
diff --git a/android/package_ctx.go b/android/package_ctx.go
index 56ba2d8..ee826c8 100644
--- a/android/package_ctx.go
+++ b/android/package_ctx.go
@@ -131,3 +131,35 @@
 		return JoinWithPrefix(paths.Strings(), prefix), nil
 	})
 }
+
+type RuleParams struct {
+	blueprint.RuleParams
+	GomaSupported bool
+}
+
+// AndroidStaticRule wraps blueprint.StaticRule and provides a default Pool if none is specified
+func (p AndroidPackageContext) AndroidStaticRule(name string, params blueprint.RuleParams,
+	argNames ...string) blueprint.Rule {
+	return p.AndroidRuleFunc(name, func(interface{}) (blueprint.RuleParams, error) {
+		return params, nil
+	}, argNames...)
+}
+
+// AndroidGomaStaticRule wraps blueprint.StaticRule but uses goma's parallelism if goma is enabled
+func (p AndroidPackageContext) AndroidGomaStaticRule(name string, params blueprint.RuleParams,
+	argNames ...string) blueprint.Rule {
+	return p.StaticRule(name, params, argNames...)
+}
+
+func (p AndroidPackageContext) AndroidRuleFunc(name string,
+	f func(interface{}) (blueprint.RuleParams, error), argNames ...string) blueprint.Rule {
+	return p.PackageContext.RuleFunc(name, func(config interface{}) (blueprint.RuleParams, error) {
+		params, err := f(config)
+		if config.(Config).UseGoma() && params.Pool == nil {
+			// When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
+			// local parallelism value
+			params.Pool = localPool
+		}
+		return params, err
+	}, argNames...)
+}
diff --git a/android/variable.go b/android/variable.go
index be2407d..b99e485 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -101,6 +101,7 @@
 	Cpusets                    *bool `json:",omitempty"`
 	Schedboost                 *bool `json:",omitempty"`
 	Binder32bit                *bool `json:",omitempty"`
+	UseGoma                    *bool `json:",omitempty"`
 
 	DevicePrefer32BitExecutables *bool `json:",omitempty"`
 	HostPrefer32BitExecutables   *bool `json:",omitempty"`
diff --git a/cc/builder.go b/cc/builder.go
index f016cbd..a84ba08 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -39,7 +39,7 @@
 var (
 	pctx = android.NewPackageContext("android/soong/cc")
 
-	cc = pctx.StaticRule("cc",
+	cc = pctx.AndroidGomaStaticRule("cc",
 		blueprint.RuleParams{
 			Depfile:     "${out}.d",
 			Deps:        blueprint.DepsGCC,
@@ -49,7 +49,7 @@
 		},
 		"ccCmd", "cFlags")
 
-	ld = pctx.StaticRule("ld",
+	ld = pctx.AndroidStaticRule("ld",
 		blueprint.RuleParams{
 			Command: "$ldCmd ${crtBegin} @${out}.rsp " +
 				"${libFlags} ${crtEnd} -o ${out} ${ldFlags}",
@@ -60,7 +60,7 @@
 		},
 		"ldCmd", "crtBegin", "libFlags", "crtEnd", "ldFlags")
 
-	partialLd = pctx.StaticRule("partialLd",
+	partialLd = pctx.AndroidStaticRule("partialLd",
 		blueprint.RuleParams{
 			Command:     "$ldCmd -nostdlib -Wl,-r ${in} -o ${out} ${ldFlags}",
 			CommandDeps: []string{"$ldCmd"},
@@ -68,7 +68,7 @@
 		},
 		"ldCmd", "ldFlags")
 
-	ar = pctx.StaticRule("ar",
+	ar = pctx.AndroidStaticRule("ar",
 		blueprint.RuleParams{
 			Command:        "rm -f ${out} && $arCmd $arFlags $out @${out}.rsp",
 			CommandDeps:    []string{"$arCmd"},
@@ -78,7 +78,7 @@
 		},
 		"arCmd", "arFlags")
 
-	darwinAr = pctx.StaticRule("darwinAr",
+	darwinAr = pctx.AndroidStaticRule("darwinAr",
 		blueprint.RuleParams{
 			Command:     "rm -f ${out} && ${config.MacArPath} $arFlags $out $in",
 			CommandDeps: []string{"${config.MacArPath}"},
@@ -86,7 +86,7 @@
 		},
 		"arFlags")
 
-	darwinAppendAr = pctx.StaticRule("darwinAppendAr",
+	darwinAppendAr = pctx.AndroidStaticRule("darwinAppendAr",
 		blueprint.RuleParams{
 			Command:     "cp -f ${inAr} ${out}.tmp && ${config.MacArPath} $arFlags ${out}.tmp $in && mv ${out}.tmp ${out}",
 			CommandDeps: []string{"${config.MacArPath}", "${inAr}"},
@@ -94,14 +94,14 @@
 		},
 		"arFlags", "inAr")
 
-	darwinStrip = pctx.StaticRule("darwinStrip",
+	darwinStrip = pctx.AndroidStaticRule("darwinStrip",
 		blueprint.RuleParams{
 			Command:     "${config.MacStripPath} -u -r -o $out $in",
 			CommandDeps: []string{"${config.MacStripPath}"},
 			Description: "strip $out",
 		})
 
-	prefixSymbols = pctx.StaticRule("prefixSymbols",
+	prefixSymbols = pctx.AndroidStaticRule("prefixSymbols",
 		blueprint.RuleParams{
 			Command:     "$objcopyCmd --prefix-symbols=${prefix} ${in} ${out}",
 			CommandDeps: []string{"$objcopyCmd"},
@@ -111,7 +111,7 @@
 
 	stripPath = pctx.SourcePathVariable("stripPath", "build/soong/scripts/strip.sh")
 
-	strip = pctx.StaticRule("strip",
+	strip = pctx.AndroidStaticRule("strip",
 		blueprint.RuleParams{
 			Depfile:     "${out}.d",
 			Deps:        blueprint.DepsGCC,
@@ -121,7 +121,7 @@
 		},
 		"args", "crossCompile")
 
-	emptyFile = pctx.StaticRule("emptyFile",
+	emptyFile = pctx.AndroidStaticRule("emptyFile",
 		blueprint.RuleParams{
 			Command:     "rm -f $out && touch $out",
 			Description: "empty file $out",
@@ -129,7 +129,7 @@
 
 	copyGccLibPath = pctx.SourcePathVariable("copyGccLibPath", "build/soong/scripts/copygcclib.sh")
 
-	copyGccLib = pctx.StaticRule("copyGccLib",
+	copyGccLib = pctx.AndroidStaticRule("copyGccLib",
 		blueprint.RuleParams{
 			Depfile:     "${out}.d",
 			Deps:        blueprint.DepsGCC,
diff --git a/cc/gen.go b/cc/gen.go
index efcc478..c344cf6 100644
--- a/cc/gen.go
+++ b/cc/gen.go
@@ -31,7 +31,7 @@
 }
 
 var (
-	yacc = pctx.StaticRule("yacc",
+	yacc = pctx.AndroidStaticRule("yacc",
 		blueprint.RuleParams{
 			Command:     "BISON_PKGDATADIR=$yaccDataDir $yaccCmd -d $yaccFlags --defines=$hFile -o $cFile $in",
 			CommandDeps: []string{"$yaccCmd"},
@@ -39,7 +39,7 @@
 		},
 		"yaccFlags", "cFile", "hFile")
 
-	lex = pctx.StaticRule("lex",
+	lex = pctx.AndroidStaticRule("lex",
 		blueprint.RuleParams{
 			Command:     "$lexCmd -o$out $in",
 			CommandDeps: []string{"$lexCmd"},
diff --git a/cc/ndk_library.go b/cc/ndk_library.go
index b0fd398..37ce268 100644
--- a/cc/ndk_library.go
+++ b/cc/ndk_library.go
@@ -28,7 +28,7 @@
 var (
 	toolPath = pctx.SourcePathVariable("toolPath", "build/soong/cc/gen_stub_libs.py")
 
-	genStubSrc = pctx.StaticRule("genStubSrc",
+	genStubSrc = pctx.AndroidStaticRule("genStubSrc",
 		blueprint.RuleParams{
 			Command:     "$toolPath --arch $arch --api $apiLevel $in $out",
 			Description: "genStubSrc $out",
diff --git a/java/app_builder.go b/java/app_builder.go
index d8f2571..bbd3dac 100644
--- a/java/app_builder.go
+++ b/java/app_builder.go
@@ -27,7 +27,7 @@
 )
 
 var (
-	aaptCreateResourceJavaFile = pctx.StaticRule("aaptCreateResourceJavaFile",
+	aaptCreateResourceJavaFile = pctx.AndroidStaticRule("aaptCreateResourceJavaFile",
 		blueprint.RuleParams{
 			Command: `rm -rf "$javaDir" && mkdir -p "$javaDir" && ` +
 				`$aaptCmd package -m $aaptFlags -P $publicResourcesFile -G $proguardOptionsFile ` +
@@ -38,7 +38,7 @@
 		},
 		"aaptFlags", "publicResourcesFile", "proguardOptionsFile", "javaDir", "javaFileList")
 
-	aaptCreateAssetsPackage = pctx.StaticRule("aaptCreateAssetsPackage",
+	aaptCreateAssetsPackage = pctx.AndroidStaticRule("aaptCreateAssetsPackage",
 		blueprint.RuleParams{
 			Command:     `rm -f $out && $aaptCmd package $aaptFlags -F $out`,
 			CommandDeps: []string{"$aaptCmd"},
@@ -46,7 +46,7 @@
 		},
 		"aaptFlags", "publicResourcesFile", "proguardOptionsFile", "javaDir", "javaFileList")
 
-	aaptAddResources = pctx.StaticRule("aaptAddResources",
+	aaptAddResources = pctx.AndroidStaticRule("aaptAddResources",
 		blueprint.RuleParams{
 			// TODO: add-jni-shared-libs-to-package
 			Command:     `cp -f $in $out.tmp && $aaptCmd package -u $aaptFlags -F $out.tmp && mv $out.tmp $out`,
@@ -55,7 +55,7 @@
 		},
 		"aaptFlags")
 
-	signapk = pctx.StaticRule("signapk",
+	signapk = pctx.AndroidStaticRule("signapk",
 		blueprint.RuleParams{
 			Command:     `java -jar $signapkCmd $certificates $in $out`,
 			CommandDeps: []string{"$signapkCmd"},
@@ -63,7 +63,7 @@
 		},
 		"certificates")
 
-	androidManifestMerger = pctx.StaticRule("androidManifestMerger",
+	androidManifestMerger = pctx.AndroidStaticRule("androidManifestMerger",
 		blueprint.RuleParams{
 			Command: "java -classpath $androidManifestMergerCmd com.android.manifmerger.Main merge " +
 				"--main $in --libs $libsManifests --out $out",
diff --git a/java/builder.go b/java/builder.go
index f674f98..a9da0fc 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -37,7 +37,7 @@
 	// this, all java rules write into separate directories and then a post-processing step lists
 	// the files in the the directory into a list file that later rules depend on (and sometimes
 	// read from directly using @<listfile>)
-	javac = pctx.StaticRule("javac",
+	javac = pctx.AndroidStaticRule("javac",
 		blueprint.RuleParams{
 			Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` +
 				`$javacCmd -encoding UTF-8 $javacFlags $bootClasspath $classpath ` +
@@ -49,7 +49,7 @@
 		},
 		"javacCmd", "javacFlags", "bootClasspath", "classpath", "outDir")
 
-	jar = pctx.StaticRule("jar",
+	jar = pctx.AndroidStaticRule("jar",
 		blueprint.RuleParams{
 			Command:     `$jarCmd -o $out $jarArgs`,
 			CommandDeps: []string{"$jarCmd"},
@@ -57,7 +57,7 @@
 		},
 		"jarCmd", "jarArgs")
 
-	dx = pctx.StaticRule("dx",
+	dx = pctx.AndroidStaticRule("dx",
 		blueprint.RuleParams{
 			Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` +
 				`$dxCmd --dex --output=$outDir $dxFlags $in || ( rm -rf "$outDir"; exit 41 ) && ` +
@@ -67,7 +67,7 @@
 		},
 		"outDir", "dxFlags")
 
-	jarjar = pctx.StaticRule("jarjar",
+	jarjar = pctx.AndroidStaticRule("jarjar",
 		blueprint.RuleParams{
 			Command:     "java -jar $jarjarCmd process $rulesFile $in $out",
 			CommandDeps: []string{"$jarjarCmd", "$rulesFile"},
@@ -75,7 +75,7 @@
 		},
 		"rulesFile")
 
-	extractPrebuilt = pctx.StaticRule("extractPrebuilt",
+	extractPrebuilt = pctx.AndroidStaticRule("extractPrebuilt",
 		blueprint.RuleParams{
 			Command: `rm -rf $outDir && unzip -qo $in -d $outDir && ` +
 				`find $outDir -name "*.class" > $classFile && ` +
diff --git a/java/gen.go b/java/gen.go
index 57c4ba2..52a0c79 100644
--- a/java/gen.go
+++ b/java/gen.go
@@ -33,7 +33,7 @@
 }
 
 var (
-	aidl = pctx.StaticRule("aidl",
+	aidl = pctx.AndroidStaticRule("aidl",
 		blueprint.RuleParams{
 			Command:     "$aidlCmd -d$depFile $aidlFlags $in $out",
 			CommandDeps: []string{"$aidlCmd"},
@@ -41,14 +41,14 @@
 		},
 		"depFile", "aidlFlags")
 
-	logtags = pctx.StaticRule("logtags",
+	logtags = pctx.AndroidStaticRule("logtags",
 		blueprint.RuleParams{
 			Command:     "$logtagsCmd -o $out $in $allLogtagsFile",
 			CommandDeps: []string{"$logtagsCmd"},
 			Description: "logtags $out",
 		})
 
-	mergeLogtags = pctx.StaticRule("mergeLogtags",
+	mergeLogtags = pctx.AndroidStaticRule("mergeLogtags",
 		blueprint.RuleParams{
 			Command:     "$mergeLogtagsCmd -o $out $in",
 			CommandDeps: []string{"$mergeLogtagsCmd"},
