diff --git a/androidmk/cmd/androidmk/test.go b/androidmk/cmd/androidmk/test.go index b3ce5d028..077c35fb7 100644 --- a/androidmk/cmd/androidmk/test.go +++ b/androidmk/cmd/androidmk/test.go @@ -108,7 +108,7 @@ input = ["testing/include"] cc_library_shared { // Comment 1 include_dirs: ["system/core/include"] + // Comment 2 - input + [TOP + "/system/core/include"], + input + ["system/core/include"], local_include_dirs: ["."] + ["include"] + ["test/include"], // Comment 3 }`, @@ -343,6 +343,19 @@ cc_library_shared { ldflags: ["-Wl,--link-opt"], version_script: "exported32.map", } +`, + }, + { + desc: "Handle TOP", + in: ` +include $(CLEAR_VARS) +LOCAL_C_INCLUDES := $(TOP)/system/core/include $(TOP) +include $(BUILD_SHARED_LIBRARY) +`, + expected: ` +cc_library_shared { + include_dirs: ["system/core/include", "."], +} `, }, } diff --git a/androidmk/cmd/androidmk/values.go b/androidmk/cmd/androidmk/values.go index ce2f27965..c4fb204c0 100644 --- a/androidmk/cmd/androidmk/values.go +++ b/androidmk/cmd/androidmk/values.go @@ -65,9 +65,17 @@ func makeToStringExpression(ms *mkparser.MakeString, scope mkparser.Scope) (*bpp Variable: name.Value(nil), } - val, err = addValues(val, tmp) - if err != nil { - return nil, err + if tmp.Variable == "TOP" { + if s[0] == '/' { + s = s[1:] + } else { + s = "." + s + } + } else { + val, err = addValues(val, tmp) + if err != nil { + return nil, err + } } } @@ -120,15 +128,22 @@ func makeToListExpression(ms *mkparser.MakeString, scope mkparser.Scope) (*bppar if !f.Variables[0].Name.Const() { return nil, fmt.Errorf("unsupported non-const variable name") } - if len(listValue.ListValue) > 0 { - listOfListValues = append(listOfListValues, listValue) - } - listOfListValues = append(listOfListValues, &bpparser.Value{ - Type: bpparser.List, - Variable: f.Variables[0].Name.Value(nil), - }) - listValue = &bpparser.Value{ - Type: bpparser.List, + if f.Variables[0].Name.Value(nil) == "TOP" { + listValue.ListValue = append(listValue.ListValue, bpparser.Value{ + Type: bpparser.String, + StringValue: ".", + }) + } else { + if len(listValue.ListValue) > 0 { + listOfListValues = append(listOfListValues, listValue) + } + listOfListValues = append(listOfListValues, &bpparser.Value{ + Type: bpparser.List, + Variable: f.Variables[0].Name.Value(nil), + }) + listValue = &bpparser.Value{ + Type: bpparser.List, + } } } } else {