I have 3 problems with SHELL assignment on Windows (mingw32-make):
- You must use a full name for SHELL, including the extension (SHELL=sh doesn't work. SHELL=sh.exe does, if sh.exe exists in PATH). PATHEXT should be used for the executable detection.
- It looks like if PATH contains quotes, they're treated in a strange manner. Instead of just removing (unescaping) them, make looks for <run directory>\"some directory in quotes" (observed with Process Monitor). The quotes must be removed before calling _access().
- If the shell is not found, make crashes. do_variable_definition() reaches lookup_variable(), which returns NULL. Then the NULL v is dereferenced (v->append = append etc.)
I tried adding NULL validations. This prevents the crash, but then SHELL=sh becomes the target instead of declaring a variable (*** No rule to make target 'SHELL=sh'. Stop.)
Thanks,
- Orgad