Does batch_mode_shell = 1 mean that it always uses the sh.exe instead of Windows.cmd?
That would make sense why it's now working. The limitation on cmd.exe is 8192 https://support.microsoft.com/en-us/kb/830473 But I have around 18k characters. Sent from my iPhone On Jun 22, 2016, at 3:57 PM, Paul Smith <[email protected]<mailto:[email protected]>> wrote: On Wed, 2016-06-22 at 19:47 +0000, Adrian Muresan wrote: In config.h, I uncommented the line /* #define BATCH_MODE_ONLY_SHELL 1 */ this affects job.c static const char *sh_cmds_sh[] = { "cd", "eval", "exec", "exit", "login", "logout", "set", "umask", "wait", "while", "for", "case", "if", ":", ".", "break", "continue", "export", "read", "readonly", "shift", "times", "trap", "switch", "test", #ifdef BATCH_MODE_ONLY_SHELL "echo", #endif 0 }; I can see where you might think this makes a difference, but really this is not relevant. These are used to decide whether or not to use the "fast path" or require a shell to run the recipe. Your script is complex enough that make will always decide to run the shell so having "echo" in this list won't make any difference. The thing that is relevant to your situation is in main.c: if (!unixy_shell && sh_found && (strstr (default_shell, "sh") || strstr (default_shell, "SH"))) { unixy_shell = 1; batch_mode_shell = 0; } #ifdef BATCH_MODE_ONLY_SHELL batch_mode_shell = 1; #endif Here we first decide that we have a UNIX-like shell (because make finds your sh.exe); if that's true then we disable batch_mode_shell because a UNIX shell should be sufficiently powerful to not need it. Setting that config.h option causes batch_mode_shell to be set to 1 (true) always, in all situations. That change is what's working around your broken shell.
_______________________________________________ Make-w32 mailing list [email protected] https://lists.gnu.org/mailman/listinfo/make-w32
