[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more proces
From: |
Akim Demaille |
Subject: |
Re: [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more processing at make runtime |
Date: |
Fri, 15 Jun 2012 11:46:40 +0200 |
Le 15 juin 2012 à 11:34, Stefano Lattarini a écrit :
>> Sometimes you using ifdef, and sometimes ifeq "". Are they equivalent?
>>
> AFAIU, these are equivalent:
>
> ifdef VAR
>
> ifneq "$(VAR)" ""
>
> But of course, there no way to express something like this with ifdef:
>
> ifneq "$(VAR-1)$(VAR-2)" ""
Yes, of course. Maybe note also this warnings from make.info:
Often you want to test if a variable has a non-empty value. When
the value results from complex expansions of variables and
functions, expansions you would consider empty may actually
contain whitespace characters and thus are not seen as empty.
However, you can use the `strip' function (*note Text Functions::)
to avoid interpreting whitespace as a non-empty value. For
example:
ifeq ($(strip $(foo)),)
TEXT-IF-EMPTY
endif
will evaluate TEXT-IF-EMPTY even if the expansion of `$(foo)'
contains whitespace characters.
>> There's no way to avoid forking another Make here?
>>
> So far I've found no natural way (note that such a fork is there also in
> mainline Automake, so this is not a performance regression at least).
I know.
> The
> problem is that all $(BUILT_SOURCES) must be created before we run any of
> all-recursive, all-am, or *any of their prerequisites*. I don't know
> whether there is any natural way to accomplish that with GNU make. Any
> suggestion?
I don't know. Maybe using order only dependencies?
%LOCAL-HEADERS% $(BUILT_SOURCES) :| $(if $(SUBDIRS),all-recursive,all-am)
all: %LOCAL-HEADERS% $(BUILT_SOURCES) $(if $(SUBDIRS),all-recursive,all-am)
>>> am__mkdir = test -d $1 || $(MKDIR_P) $1
>>
>> Is the "test" really needed? "mkdir -p /already/exists" should silently
>> exit 0, shouldn't it?
>>
> Yes, but then it would cause an extra fork even if the target directory
> already exists. I reckon that would quite displease our Cygwin users ;-)
Ah, yes, test is expected to be a built-in. Thanks.
> Thanks. I understand this is an ACK then?
Sure!
- [Automake-NG] [PATCH 0/2] all, check, install: move more processing at make runtime, Stefano Lattarini, 2012/06/14
- [Automake-NG] [PATCH 1/2] [ng] built sources: enhance testsuite coverage, Stefano Lattarini, 2012/06/14
- [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more processing at make runtime, Stefano Lattarini, 2012/06/14
- Re: [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more processing at make runtime, Akim Demaille, 2012/06/15
- Re: [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more processing at make runtime, Stefano Lattarini, 2012/06/15
- Re: [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more processing at make runtime,
Akim Demaille <=
- Re: [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more processing at make runtime, Stefano Lattarini, 2012/06/15
- Re: [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more processing at make runtime, Dave Hart, 2012/06/15
- Re: [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more processing at make runtime, Stefano Lattarini, 2012/06/15
- Re: [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more processing at make runtime, Dave Hart, 2012/06/15
- Re: [Automake-NG] [PATCH 2/2] [ng] all, check, install: move more processing at make runtime, Eric Blake, 2012/06/15