2d4dfd6
diff -Nrup a/main.c b/main.c
2d4dfd6
--- a/main.c	2013-10-09 00:22:40.000000000 -0400
2d4dfd6
+++ b/main.c	2014-02-03 17:18:04.238609236 -0500
2d4dfd6
@@ -1987,6 +1987,20 @@ main (int argc, char **argv, char **envp
2d4dfd6
     }
2d4dfd6
 #endif
2d4dfd6
 
2d4dfd6
+#ifdef PIPE_BUF
2d4dfd6
+  if (job_slots > PIPE_BUF)
2d4dfd6
+#elif defined _POSIX_PIPE_BUF
2d4dfd6
+  if (job_slots > _POSIX_PIPE_BUF)
2d4dfd6
+#else
2d4dfd6
+  if (job_slots > 512)
2d4dfd6
+#endif
2d4dfd6
+    {
2d4dfd6
+      O (error, NILF,
2d4dfd6
+            _("More parallel jobs (-jN) than this platform can handle requested."));
2d4dfd6
+      O (error, NILF, _("Resetting to single job (-j1) mode."));
2d4dfd6
+      job_slots = 1;
2d4dfd6
+    }
2d4dfd6
+
2d4dfd6
 #ifdef MAKE_JOBSERVER
2d4dfd6
   /* If we have >1 slot but no jobserver-fds, then we're a top-level make.
2d4dfd6
      Set up the pipe and install the fds option for our children.  */