[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: make-trouble from a newb: To hell with shell
From: |
Paul Smith |
Subject: |
Re: make-trouble from a newb: To hell with shell |
Date: |
Thu, 03 Jul 2008 12:33:27 -0400 |
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.