diff options
author | Jeff Gaston <jeffrygaston@google.com> | 2017-05-31 15:44:17 -0700 |
---|---|---|
committer | Jeff Gaston <jeffrygaston@google.com> | 2017-08-15 22:05:39 +0000 |
commit | fd4ce1bb6802da3e6e3a780871d20a72905e2189 (patch) | |
tree | 3ddfc8bc8cc169fadf68483116a4854961c019ad /androidmk | |
parent | 38d3d5d2e5499fc759374e4ea38a041a8aeeb147 (diff) | |
download | build_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.go | 9 | ||||
-rw-r--r-- | androidmk/cmd/androidmk/androidmk_test.go | 19 | ||||
-rw-r--r-- | androidmk/parser/make_strings.go | 11 |
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 { |