help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Setting PATH from withing make for $(shell) ?


From: Paul D. Smith
Subject: Re: Setting PATH from withing make for $(shell) ?
Date: Fri, 16 Jun 2006 10:39:10 -0400

%% Cesar Crusius <address@hidden> writes:

  cc> Here's my problem: I'm trying to set up a build system where all
  cc> the executables necessary to build something are in the repository
  cc> itself. So I want the build to fail if it requires any executable
  cc> not in the repository.  The obvious thing to do was

  cc> PATH := $(PATH_TO_REPOSITORY_EXECS)

  cc> but that doesn't work as it doesn't set the environment
  cc> variable.

It will, for normal rules.

  cc> For example, if after that I do

  cc> $(warning $(shell which gcc))

  cc> I still get /usr/bin/gcc.

That's because make variables are not exported to the $(shell ...)
function.  This is a bug, but a known bug.  The reason it's not done is
that you can get an infinite recursion situation this way.  That should
be fixed but isn't yet.

If you do this:

    PATH := $(PATH_TO_REPOSITORY_EXECS)

    all: ; @echo '$$PATH'

you'll see that the commands in rules _DO_ have the modified value.

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.paulandlesley.org
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist




reply via email to

[Prev in Thread] Current Thread [Next in Thread]