Add DeviceUsesClang to change clang default

This is equivalent to USE_CLANG_PLATFORM_BUILD in the current build
system.

Change-Id: Ifaca0f2639871dac834ef603cfade695191cff11
diff --git a/cc/cc.go b/cc/cc.go
index a8b6051..147559e 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -495,8 +495,14 @@
 	// TODO: debug
 	flags.CFlags = append(flags.CFlags, c.Properties.Release.Cflags...)
 
-	if ctx.Host() && !ctx.ContainsProperty("clang") {
-		flags.Clang = true
+	if !ctx.ContainsProperty("clang") {
+		if ctx.Host() {
+			flags.Clang = true
+		}
+
+		if ctx.Device() && ctx.AConfig().DeviceUsesClang() {
+			flags.Clang = true
+		}
 	}
 
 	if flags.Clang {
@@ -1128,7 +1134,7 @@
 		libName := ctx.ModuleName()
 		// GCC for Android assumes that -shared means -Bsymbolic, use -Wl,-shared instead
 		sharedFlag := "-Wl,-shared"
-		if c.Properties.Clang || ctx.Host() {
+		if flags.Clang || ctx.Host() {
 			sharedFlag = "-shared"
 		}
 		if ctx.Device() {
diff --git a/common/config.go b/common/config.go
index 1340db8..fbd2be9 100644
--- a/common/config.go
+++ b/common/config.go
@@ -214,6 +214,13 @@
 	return *c.ProductVariables.DeviceName
 }
 
+func (c *config) DeviceUsesClang() bool {
+	if c.ProductVariables.DeviceUsesClang != nil {
+		return *c.ProductVariables.DeviceUsesClang
+	}
+	return false
+}
+
 // DeviceOut returns the path to out directory for device targets
 func (c *config) DeviceOut() string {
 	return filepath.Join(c.BuildDir(), "target/product", c.DeviceName())
diff --git a/common/variable.go b/common/variable.go
index 61060e9..23a97a6 100644
--- a/common/variable.go
+++ b/common/variable.go
@@ -63,6 +63,7 @@
 	DeviceArchVariant *string   `json:",omitempty"`
 	DeviceCpuVariant  *string   `json:",omitempty"`
 	DeviceAbi         *[]string `json:",omitempty"`
+	DeviceUsesClang   *bool     `json:",omitempty"`
 
 	DeviceSecondaryArch        *string   `json:",omitempty"`
 	DeviceSecondaryArchVariant *string   `json:",omitempty"`
@@ -95,6 +96,7 @@
 		DeviceArch:                 stringPtr("arm64"),
 		DeviceCpuVariant:           stringPtr("denver64"),
 		DeviceAbi:                  &[]string{"arm64-v8a"},
+		DeviceUsesClang:            boolPtr(true),
 		DeviceSecondaryArch:        stringPtr("arm"),
 		DeviceSecondaryArchVariant: stringPtr("armv7-a-neon"),
 		DeviceSecondaryCpuVariant:  stringPtr("denver"),