Merge "Ninja and shell escape command line flags"
diff --git a/cc/compiler.go b/cc/compiler.go
index 37dc744..db4c076 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -19,6 +19,8 @@
 	"path/filepath"
 	"strings"
 
+	"github.com/google/blueprint/proptools"
+
 	"android/soong/android"
 	"android/soong/cc/config"
 )
@@ -130,11 +132,13 @@
 	CheckBadCompilerFlags(ctx, "conlyflags", compiler.Properties.Conlyflags)
 	CheckBadCompilerFlags(ctx, "asflags", compiler.Properties.Asflags)
 
-	flags.CFlags = append(flags.CFlags, compiler.Properties.Cflags...)
-	flags.CppFlags = append(flags.CppFlags, compiler.Properties.Cppflags...)
-	flags.ConlyFlags = append(flags.ConlyFlags, compiler.Properties.Conlyflags...)
-	flags.AsFlags = append(flags.AsFlags, compiler.Properties.Asflags...)
-	flags.YaccFlags = append(flags.YaccFlags, compiler.Properties.Yaccflags...)
+	esc := proptools.NinjaAndShellEscape
+
+	flags.CFlags = append(flags.CFlags, esc(compiler.Properties.Cflags)...)
+	flags.CppFlags = append(flags.CppFlags, esc(compiler.Properties.Cppflags)...)
+	flags.ConlyFlags = append(flags.ConlyFlags, esc(compiler.Properties.Conlyflags)...)
+	flags.AsFlags = append(flags.AsFlags, esc(compiler.Properties.Asflags)...)
+	flags.YaccFlags = append(flags.YaccFlags, esc(compiler.Properties.Yaccflags)...)
 
 	// Include dir cflags
 	rootIncludeDirs := android.PathsForSource(ctx, compiler.Properties.Include_dirs)
@@ -198,15 +202,15 @@
 	CheckBadCompilerFlags(ctx, "release.cflags", compiler.Properties.Release.Cflags)
 
 	// TODO: debug
-	flags.CFlags = append(flags.CFlags, compiler.Properties.Release.Cflags...)
+	flags.CFlags = append(flags.CFlags, esc(compiler.Properties.Release.Cflags)...)
 
 	if flags.Clang {
 		CheckBadCompilerFlags(ctx, "clang_cflags", compiler.Properties.Clang_cflags)
 		CheckBadCompilerFlags(ctx, "clang_asflags", compiler.Properties.Clang_asflags)
 
 		flags.CFlags = config.ClangFilterUnknownCflags(flags.CFlags)
-		flags.CFlags = append(flags.CFlags, compiler.Properties.Clang_cflags...)
-		flags.AsFlags = append(flags.AsFlags, compiler.Properties.Clang_asflags...)
+		flags.CFlags = append(flags.CFlags, esc(compiler.Properties.Clang_cflags)...)
+		flags.AsFlags = append(flags.AsFlags, esc(compiler.Properties.Clang_asflags)...)
 		flags.CppFlags = config.ClangFilterUnknownCflags(flags.CppFlags)
 		flags.ConlyFlags = config.ClangFilterUnknownCflags(flags.ConlyFlags)
 		flags.LdFlags = config.ClangFilterUnknownCflags(flags.LdFlags)
diff --git a/cc/linker.go b/cc/linker.go
index 2c4c250..399074d 100644
--- a/cc/linker.go
+++ b/cc/linker.go
@@ -17,6 +17,8 @@
 import (
 	"android/soong/android"
 	"fmt"
+
+	"github.com/google/blueprint/proptools"
 )
 
 // This file contains the basic functionality for linking against static libraries and shared
@@ -167,7 +169,7 @@
 
 	CheckBadLinkerFlags(ctx, "ldflags", linker.Properties.Ldflags)
 
-	flags.LdFlags = append(flags.LdFlags, linker.Properties.Ldflags...)
+	flags.LdFlags = append(flags.LdFlags, proptools.NinjaAndShellEscape(linker.Properties.Ldflags)...)
 
 	if ctx.Host() {
 		rpath_prefix := `\$$ORIGIN/`