Port GLOBAL[_CLANG]_CFLAGS_NO_OVERRIDE from make

Change-Id: I4f0f8ec7620e4477f60bf9cf1ae0c005470c89d4
diff --git a/cc/builder.go b/cc/builder.go
index 98f66d9..bcfbb6e 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -149,6 +149,14 @@
 	cppflags := flags.globalFlags + " " + flags.cFlags + " " + flags.cppFlags
 	asflags := flags.globalFlags + " " + flags.asFlags
 
+	if flags.clang {
+		cflags += " ${noOverrideClangGlobalCflags}"
+		cppflags += " ${noOverrideClangGlobalCflags}"
+	} else {
+		cflags += " ${noOverrideGlobalCflags}"
+		cppflags += " ${noOverrideGlobalCflags}"
+	}
+
 	for i, srcFile := range srcFiles {
 		objFile := common.ObjPathWithExt(ctx, srcFile, subdir, "o")
 
diff --git a/cc/cc.go b/cc/cc.go
index cf4bae3..717e598 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -103,6 +103,11 @@
 		"-Wsign-promo",
 	}
 
+	noOverrideGlobalCflags = []string{
+		"-Werror=int-to-pointer-cast",
+		"-Werror=pointer-to-int-cast",
+	}
+
 	illegalFlags = []string{
 		"-w",
 	}
@@ -112,6 +117,7 @@
 	pctx.StaticVariable("commonGlobalCflags", strings.Join(commonGlobalCflags, " "))
 	pctx.StaticVariable("deviceGlobalCflags", strings.Join(deviceGlobalCflags, " "))
 	pctx.StaticVariable("hostGlobalCflags", strings.Join(hostGlobalCflags, " "))
+	pctx.StaticVariable("noOverrideGlobalCflags", strings.Join(noOverrideGlobalCflags, " "))
 
 	pctx.StaticVariable("commonGlobalCppflags", strings.Join(commonGlobalCppflags, " "))
 
@@ -121,6 +127,9 @@
 		strings.Join(append(clangFilterUnknownCflags(deviceGlobalCflags), "${clangExtraTargetCflags}"), " "))
 	pctx.StaticVariable("hostClangGlobalCflags",
 		strings.Join(clangFilterUnknownCflags(hostGlobalCflags), " "))
+	pctx.StaticVariable("noOverrideClangGlobalCflags",
+		strings.Join(append(clangFilterUnknownCflags(noOverrideGlobalCflags), "${clangExtraNoOverrideCflags}"), " "))
+
 	pctx.StaticVariable("commonClangGlobalCppflags",
 		strings.Join(append(clangFilterUnknownCflags(commonGlobalCppflags), "${clangExtraCppflags}"), " "))
 
diff --git a/cc/clang.go b/cc/clang.go
index df7ec01..f4c29f0 100644
--- a/cc/clang.go
+++ b/cc/clang.go
@@ -101,6 +101,12 @@
 	pctx.StaticVariable("clangExtraTargetCflags", strings.Join([]string{
 		"-nostdlibinc",
 	}, " "))
+
+	pctx.StaticVariable("clangExtraNoOverrideCflags", strings.Join([]string{
+		"-Werror=address-of-temporary",
+		"-Werror=null-dereference",
+		"-Werror=return-type",
+	}, " "))
 }
 
 func clangFilterUnknownCflags(cflags []string) []string {