Allow overriding tidy configs using environment variables

This matches what Make did.

Bug: 32244182
Test: WITH_TIDY=1 m -j
Test: WITH_TIDY=1 DEFAULT_GLOBAL_TIDY_CHECKS=* m -j
Test: WITH_TIDY=1 DEFAULT_EXTERNAL_VENDOR_TIDY_CHECKS=* m -j
Change-Id: I12ee413829d35e20f21f8ca49bb315ea831a6506
diff --git a/cc/config/tidy.go b/cc/config/tidy.go
index dd39421..a2fa5a2 100644
--- a/cc/config/tidy.go
+++ b/cc/config/tidy.go
@@ -16,6 +16,8 @@
 
 import (
 	"strings"
+
+	"android/soong/android"
 )
 
 func init() {
@@ -23,27 +25,37 @@
 	// Global tidy checks include only google*, performance*,
 	// and misc-macro-parentheses, but not google-readability*
 	// or google-runtime-references.
-	pctx.StaticVariable("TidyDefaultGlobalChecks", strings.Join([]string{
-		"-*",
-		"google*",
-		"misc-macro-parentheses",
-		"performance*",
-		"-google-readability*",
-		"-google-runtime-references",
-	}, ","))
+	pctx.VariableFunc("TidyDefaultGlobalChecks", func(config interface{}) (string, error) {
+		if override := config.(android.Config).Getenv("DEFAULT_GLOBAL_TIDY_CHECKS"); override != "" {
+			return override, nil
+		}
+		return strings.Join([]string{
+			"-*",
+			"google*",
+			"misc-macro-parentheses",
+			"performance*",
+			"-google-readability*",
+			"-google-runtime-references",
+		}, ","), nil
+	})
 
 	// There are too many clang-tidy warnings in external and vendor projects.
 	// Enable only some google checks for these projects.
-	pctx.StaticVariable("TidyExternalVendorChecks", strings.Join([]string{
-		"-*",
-		"google*",
-		"-google-build-using-namespace",
-		"-google-default-arguments",
-		"-google-explicit-constructor",
-		"-google-readability*",
-		"-google-runtime-int",
-		"-google-runtime-references",
-	}, ","))
+	pctx.VariableFunc("TidyExternalVendorChecks", func(config interface{}) (string, error) {
+		if override := config.(android.Config).Getenv("DEFAULT_EXTERNAL_VENDOR_TIDY_CHECKS"); override != "" {
+			return override, nil
+		}
+		return strings.Join([]string{
+			"-*",
+			"google*",
+			"-google-build-using-namespace",
+			"-google-default-arguments",
+			"-google-explicit-constructor",
+			"-google-readability*",
+			"-google-runtime-int",
+			"-google-runtime-references",
+		}, ","), nil
+	})
 
 	// Give warnings to header files only in selected directories.
 	// Do not give warnings to external or vendor header files, which contain too