diff --git a/commands.c b/commands.c
index b1bc62d9..21ed9d90 100644
--- a/commands.c
+++ b/commands.c
@@ -322,12 +322,17 @@ chop_commands (cmds)
       cmds->lines_recurse = (char *) xmalloc (nlines);
       for (idx = 0; idx < nlines; ++idx)
 	{
-	  unsigned int len;
 	  int recursive;
 	  p = lines[idx];
-	  len = strlen (p);
-	  recursive = (sindex (p, len, "$(MAKE)", 7) != 0
-		       || sindex (p, len, "${MAKE}", 7) != 0);
+	  while (isblank (*p) || *p == '-' || *p == '@')
+	    ++p;
+	  recursive = *p == '+';
+	  if (!recursive)
+	    {
+	      unsigned int len = strlen (p);
+	      recursive = (sindex (p, len, "$(MAKE)", 7) != 0
+			   || sindex (p, len, "${MAKE}", 7) != 0);
+	    }
 	  cmds->lines_recurse[idx] = recursive;
 	  cmds->any_recurse |= recursive;
 	}