aboutsummaryrefslogtreecommitdiffstats
path: root/androidmk
diff options
context:
space:
mode:
authorJeff Gaston <jeffrygaston@google.com>2017-05-31 15:44:17 -0700
committerJeff Gaston <jeffrygaston@google.com>2017-08-15 22:05:39 +0000
commitfd4ce1bb6802da3e6e3a780871d20a72905e2189 (patch)
tree3ddfc8bc8cc169fadf68483116a4854961c019ad /androidmk
parent38d3d5d2e5499fc759374e4ea38a041a8aeeb147 (diff)
downloadbuild_soong-fd4ce1bb6802da3e6e3a780871d20a72905e2189.tar.gz
build_soong-fd4ce1bb6802da3e6e3a780871d20a72905e2189.tar.bz2
build_soong-fd4ce1bb6802da3e6e3a780871d20a72905e2189.zip
androidmk no longer escaping escaped quotes in CFLAGS
Bug: 37547491 Test: m -j Change-Id: I2f406be477f3990bf109778eb9adc9c33db2f2ad
Diffstat (limited to 'androidmk')
-rw-r--r--androidmk/cmd/androidmk/android.go9
-rw-r--r--androidmk/cmd/androidmk/androidmk_test.go19
-rw-r--r--androidmk/parser/make_strings.go11
3 files changed, 38 insertions, 1 deletions
diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go
index 194b2c93..4afb3b42 100644
--- a/androidmk/cmd/androidmk/android.go
+++ b/androidmk/cmd/androidmk/android.go
@@ -35,6 +35,7 @@ var rewriteProperties = map[string](func(variableAssignmentContext) error){
"LOCAL_SRC_FILES": srcFiles,
"LOCAL_SANITIZE": sanitize(""),
"LOCAL_SANITIZE_DIAG": sanitize("diag."),
+ "LOCAL_CFLAGS": cflags,
// composite functions
"LOCAL_MODULE_TAGS": includeVariableIf(bpVariable{"tags", bpparser.ListType}, not(valueDumpEquals("optional"))),
@@ -83,7 +84,6 @@ func init() {
"LOCAL_SYSTEM_SHARED_LIBRARIES": "system_shared_libs",
"LOCAL_ASFLAGS": "asflags",
"LOCAL_CLANG_ASFLAGS": "clang_asflags",
- "LOCAL_CFLAGS": "cflags",
"LOCAL_CONLYFLAGS": "conlyflags",
"LOCAL_CPPFLAGS": "cppflags",
"LOCAL_REQUIRED_MODULES": "required",
@@ -532,6 +532,13 @@ func ldflags(ctx variableAssignmentContext) error {
return nil
}
+func cflags(ctx variableAssignmentContext) error {
+ // The Soong replacement for CFLAGS doesn't need the same extra escaped quotes that were present in Make
+ ctx.mkvalue = ctx.mkvalue.Clone()
+ ctx.mkvalue.ReplaceLiteral(`\"`, `"`)
+ return includeVariableNow(bpVariable{"cflags", bpparser.ListType}, ctx)
+}
+
// given a conditional, returns a function that will insert a variable assignment or not, based on the conditional
func includeVariableIf(bpVar bpVariable, conditional func(ctx variableAssignmentContext) bool) func(ctx variableAssignmentContext) error {
return func(ctx variableAssignmentContext) error {
diff --git a/androidmk/cmd/androidmk/androidmk_test.go b/androidmk/cmd/androidmk/androidmk_test.go
index 5fbc951f..07d1c109 100644
--- a/androidmk/cmd/androidmk/androidmk_test.go
+++ b/androidmk/cmd/androidmk/androidmk_test.go
@@ -374,6 +374,25 @@ cc_library_shared {
}
`,
},
+
+ {
+ desc: "Input containing escaped quotes",
+ in: `
+include $(CLEAR_VARS)
+LOCAL_MODULE:= libsensorservice
+LOCAL_CFLAGS:= -DLOG_TAG=\"-DDontEscapeMe\"
+LOCAL_SRC_FILES := \"EscapeMe.cc\"
+include $(BUILD_SHARED_LIBRARY)
+`,
+
+ expected: `
+cc_library_shared {
+ name: "libsensorservice",
+ cflags: ["-DLOG_TAG=\"-DDontEscapeMe\""],
+ srcs: ["\\\"EscapeMe.cc\\\""],
+}
+`,
+ },
}
func reformatBlueprint(input string) string {
diff --git a/androidmk/parser/make_strings.go b/androidmk/parser/make_strings.go
index 00d331b3..142dc71c 100644
--- a/androidmk/parser/make_strings.go
+++ b/androidmk/parser/make_strings.go
@@ -29,6 +29,11 @@ func SimpleMakeString(s string, pos Pos) *MakeString {
}
}
+func (ms *MakeString) Clone() (result *MakeString) {
+ clone := *ms
+ return &clone
+}
+
func (ms *MakeString) Pos() Pos {
return ms.StringPos
}
@@ -164,6 +169,12 @@ func (ms *MakeString) EndsWith(ch rune) bool {
return s[len(s)-1] == uint8(ch)
}
+func (ms *MakeString) ReplaceLiteral(input string, output string) {
+ for i := range ms.Strings {
+ ms.Strings[i] = strings.Replace(ms.Strings[i], input, output, -1)
+ }
+}
+
func splitAnyN(s, sep string, n int) []string {
ret := []string{}
for n == -1 || n > 1 {