Detect depfile renaming for commands without -MF
diff --git a/ninja.go b/ninja.go
index 57b6573..3ea4a73 100644
--- a/ninja.go
+++ b/ninja.go
@@ -30,17 +30,12 @@
 	}
 }
 
-func getDepfile(ss string) (string, error) {
+func getDepfileImpl(ss string) (string, error) {
 	tss := ss + " "
 	if !strings.Contains(tss, " -MD ") && !strings.Contains(tss, " -MMD ") {
 		return "", nil
 	}
 
-	// A hack for Android - llvm-rs-cc seems not to emit a dep file.
-	if strings.Contains(ss, "bin/llvm-rs-cc ") {
-		return "", nil
-	}
-
 	mfIndex := strings.Index(ss, " -MF ")
 	if mfIndex >= 0 {
 		mf := trimLeftSpace(ss[mfIndex+4:])
@@ -52,19 +47,6 @@
 			mf = mf[:mfEndIndex]
 		}
 
-		// A hack for Android to get .P files instead of .d.
-		p := stripExt(mf) + ".P"
-		if strings.Contains(ss, p) {
-			return p, nil
-		}
-
-		// A hack for Android. For .s files, GCC does not use
-		// C preprocessor, so it ignores -MF flag.
-		as := "/" + stripExt(filepath.Base(mf)) + ".s"
-		if strings.Contains(ss, as) {
-			return "", nil
-		}
-
 		return mf, nil
 	}
 
@@ -83,6 +65,33 @@
 	return stripExt(out) + ".d", nil
 }
 
+func getDepfile(ss string) (string, error) {
+	// A hack for Android - llvm-rs-cc seems not to emit a dep file.
+	if strings.Contains(ss, "bin/llvm-rs-cc ") {
+		return "", nil
+	}
+
+	r, err := getDepfileImpl(ss)
+	if err != nil {
+		return r, err
+	}
+
+	// A hack for Android to get .P files instead of .d.
+	p := stripExt(r) + ".P"
+	if strings.Contains(ss, p) {
+		return p, nil
+	}
+
+	// A hack for Android. For .s files, GCC does not use
+	// C preprocessor, so it ignores -MF flag.
+	as := "/" + stripExt(filepath.Base(r)) + ".s"
+	if strings.Contains(ss, as) {
+		return "", nil
+	}
+
+	return r, nil
+}
+
 func stripShellComment(s string) string {
 	if strings.IndexByte(s, '#') < 0 {
 		// Fast path.
diff --git a/ninja_test.go b/ninja_test.go
index 9ec90e5..f094ba0 100644
--- a/ninja_test.go
+++ b/ninja_test.go
@@ -107,6 +107,10 @@
 			in:   `echo "RenderScript: Galaxy4 <= packages/wallpapers/Galaxy4/src/com/android/galaxy4/galaxy.rs" && rm -rf out/target/common/obj/APPS/Galaxy4_intermediates/src/renderscript && mkdir -p out/target/common/obj/APPS/Galaxy4_intermediates/src/renderscript/res/raw && mkdir -p out/target/common/obj/APPS/Galaxy4_intermediates/src/renderscript/src && out/host/linux-x86/bin/llvm-rs-cc -o out/target/common/obj/APPS/Galaxy4_intermediates/src/renderscript/res/raw -p out/target/common/obj/APPS/Galaxy4_intermediates/src/renderscript/src -d out/target/common/obj/APPS/Galaxy4_intermediates/src/renderscript -a out/target/common/obj/APPS/Galaxy4_intermediates/src/RenderScript.stamp -MD -target-api 14 -Wall -Werror  -I prebuilts/sdk/renderscript/clang-include -I prebuilts/sdk/renderscript/include packages/wallpapers/Galaxy4/src/com/android/galaxy4/galaxy.rs && mkdir -p out/target/common/obj/APPS/Galaxy4_intermediates/src/ && touch out/target/common/obj/APPS/Galaxy4_intermediates/src/RenderScript.stamp`,
 			want: ``,
 		},
+		{
+			in:   `(echo "bc: libclcore.bc <= frameworks/rs/driver/runtime/arch/generic.c") && (mkdir -p out/target/product/generic/obj/SHARED_LIBRARIES/libclcore.bc_intermediates/arch/) && (prebuilts/clang/linux-x86/host/3.6/bin/clang -Iframeworks/rs/scriptc -Iexternal/clang/lib/Headers -MD -DRS_VERSION=23 -std=c99 -c -O3 -fno-builtin -emit-llvm -target armv7-none-linux-gnueabi -fsigned-char   -Iframeworks/rs/cpu_ref -DRS_DECLARE_EXPIRED_APIS -Xclang -target-feature -Xclang +long64  frameworks/rs/driver/runtime/arch/generic.c -o out/target/product/generic/obj/SHARED_LIBRARIES/libclcore.bc_intermediates/arch/generic.bc) && (cp out/target/product/generic/obj/SHARED_LIBRARIES/libclcore.bc_intermediates/arch/generic.d out/target/product/generic/obj/SHARED_LIBRARIES/libclcore.bc_intermediates/arch/generic.P; sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' -e '/^$$/ d' -e 's/$$/ :/' < out/target/product/generic/obj/SHARED_LIBRARIES/libclcore.bc_intermediates/arch/generic.d >> out/target/product/generic/obj/SHARED_LIBRARIES/libclcore.bc_intermediates/arch/generic.P; rm -f out/target/product/generic/obj/SHARED_LIBRARIES/libclcore.bc_intermediates/arch/generic.d)`,
+			want: `out/target/product/generic/obj/SHARED_LIBRARIES/libclcore.bc_intermediates/arch/generic.P`,
+		},
 	} {
 		got, err := getDepfile(tc.in)
 		if got != tc.want {