help-make
[Top][All Lists]
Advanced

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

Re: 3.81.90: bug or feature ?


From: Paul Smith
Subject: Re: 3.81.90: bug or feature ?
Date: Mon, 03 Aug 2009 09:39:44 -0400

On Mon, 2009-08-03 at 16:12 +0300, Denis Onischenko wrote:
> It seems that the NORMAL_INSTALL variable is assigned to the shell
> command line "@ HOST = "$HOST"; test ".$$HOST"= ...", because in
> another Makefile this variable is used in target rule as:
> 
> install-binPROGRAMS: $(bin_PROGRAMS)
>         @$(NORMAL_INSTALL)
>         test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"

That may be what you WANT it to do, but that's not what it DOES.

> i.e. HOST is not MAKE variable. Instead it is the shell variable in
> shell command line

Again, that may be what you want but that's not what your makefile says.

What this says:

> NORMAL_INSTALL = :
>         @ HOST="$(HOST)" \

is create two make variables; the first line creates a make variable
"NORMAL_INSTALL" which is set to the value ":".

The second line creates another make variable "@ HOST" (in 3.81 and
below) which is set to the value '"$(HOST)" ...'.  In newer versions of
GNU make this is an error, as I've said, because make variables with
whitespace in the name are no longer valid.

> And I thought that the symbol ":" is a special symbol that is used to
> define a value from next line

No.  There is one such special character and it's backslash ("\").

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.mad-scientist.us
 "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]