Prevent art module types being used outside art

Adds neverallow rules to limit use of art specific module types to art
and external/vixl.

Bug: 136159343
Bug: 134379140
Test: disallowed them in all modules and ran `m droid` to ensure that
      soong reported usages in art and external/vixl. Update the rules
	  and then ran `m droid` again.

Change-Id: I28097a88c13acbf5e65c32cdd9f1a6c6eedfe8a2
diff --git a/build/art.go b/build/art.go
index 4db8da2..14ba7d5 100644
--- a/build/art.go
+++ b/build/art.go
@@ -283,6 +283,24 @@
 var artTestMutex sync.Mutex
 
 func init() {
+	artModuleTypes := []string{
+		"art_cc_library",
+		"art_cc_library_static",
+		"art_cc_binary",
+		"art_cc_test",
+		"art_cc_test_library",
+		"art_cc_defaults",
+		"libart_cc_defaults",
+		"libart_static_cc_defaults",
+		"art_global_defaults",
+		"art_debug_defaults",
+		"art_apex_test",
+	}
+	android.AddNeverAllowRules(
+		android.NeverAllow().
+			NotIn("art", "external/vixl").
+			ModuleType(artModuleTypes...))
+
 	android.RegisterModuleType("art_cc_library", artLibrary)
 	android.RegisterModuleType("art_cc_library_static", artStaticLibrary)
 	android.RegisterModuleType("art_cc_binary", artBinary)