Re: make-trouble from a newb: To hell with shell

Paul Smith <[email protected]>
Newsgroups gmane.comp.gnu.make.windows
Organization GNU's Not Unix!
Message-ID <[email protected]>
On Thu, 2008-07-03 at 08:05 -0700, Uffze wrote:
> I don't have a clue why on some lines make starts the tools directly
> (so they work), while on other lines the tools are started via the gnu
> shell (which uses different paths than window and results in the fact
> that they can't be found).

I can't say why the shell isn't found or how to resolve that problem,
but I can tell you why sometimes it's used and sometimes it's not.

Make does not contain a complete implementation of the shell language.
On UNIX, in particular, which is where make originated, the shell has a
complex and powerful syntax and reimplementing the shell inside make
isn't something we want to attempt.  On the other hand, invoking a shell
takes extra time and makes the build slower.

So, make has a "fast path" and a "slow path".  It will examine your
recipe line and if there are any characters in it which are deemed
"special" (that is, seem to require a full shell to resolve, such as
shell variables or multiple commands or whatever), then make uses the
"slow path", which invokes a real shell and passes the command line to
it.

If the recipe line contains nothing that is "shell-worthy", then it uses
the "fast path", which just invokes the command line directly with no
shell processing.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.