diff --git a/common/glob.go b/common/glob.go
index a3cfab2..7bb623d 100644
--- a/common/glob.go
+++ b/common/glob.go
@@ -68,16 +68,23 @@
 	return false
 }
 
-func ExpandGlobs(ctx AndroidModuleContext, in []string) []string {
+func expandGlobs(ctx AndroidModuleContext, in []string) []string {
 	if !hasGlob(in) {
 		return in
 	}
 
+	var excludes []string
+	for _, s := range in {
+		if s[0] == '-' {
+			excludes = append(excludes, s[1:])
+		}
+	}
+
 	out := make([]string, 0, len(in))
 	for _, s := range in {
 		if glob.IsGlob(s) {
-			out = append(out, Glob(ctx, s)...)
-		} else {
+			out = append(out, Glob(ctx, s, excludes)...)
+		} else if s[0] != '-' {
 			out = append(out, s)
 		}
 	}
@@ -85,12 +92,10 @@
 	return out
 }
 
-func Glob(ctx AndroidModuleContext, globPattern string) []string {
+func Glob(ctx AndroidModuleContext, globPattern string, excludes []string) []string {
 	fileListFile := filepath.Join(ModuleOutDir(ctx), "glob", globToString(globPattern))
 	depFile := fileListFile + ".d"
 
-	var excludes []string
-
 	// Get a globbed file list, and write out fileListFile and depFile
 	files, err := glob.GlobWithDepFile(globPattern, fileListFile, depFile, excludes)
 	if err != nil {
diff --git a/common/module.go b/common/module.go
index d497076..bafb583 100644
--- a/common/module.go
+++ b/common/module.go
@@ -432,3 +432,17 @@
 	_, ok := m.(AndroidModule)
 	return ok
 }
+
+func ExpandSources(ctx AndroidModuleContext, srcFiles []string) []string {
+	prefix := ModuleSrcDir(ctx)
+	for i, srcFile := range srcFiles {
+		if srcFile[0] == '-' {
+			srcFiles[i] = "-" + filepath.Join(prefix, srcFile[1:])
+		} else {
+			srcFiles[i] = filepath.Join(prefix, srcFile)
+		}
+	}
+
+	srcFiles = expandGlobs(ctx, srcFiles)
+	return srcFiles
+}
