Trying to get rid of one redundand rule

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Trying to get rid of one redundand rule

Alexander.Farber
Hi,

I have most of my .cpp files in $(SRCDIR), but there are
also 2 files being generated by yacc/lex into $(BLDDIR).

My problem: even though I list both $(SRCDIR) and $(BLDDIR) in the VPATH,
           I still have to list a separate rule to compile those 2 files:

$(BLDDIR)/%.o: %.cpp
        $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

%.o: %.cpp
        $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

If I remove the 2nd rule above, then the generated files ../build/rcompl.cpp
and ../build/rcomp.cpp won't compile because the implicit rule is missing
the "-I"s. (Please see the output at very bottom demonstrating that)

Does anybody please have an idea, how to better organize my Makefile?

I've also tried without the VPATH ( prefixed the $(SOURCE) and $(GENSRC)
files with $(SRCDIR) and $(BLDDIR) but that didn't help - I still needed
the %.o:%.cpp rule )


CXX    = g++296
YACC   = bison
LEX    = flex

BLDDIR = ../build
SRCDIR = ../src
INCDIR = ../inc

SOURCE = main.cpp \
         array.cpp astring.cpp ccodes.cpp ctable.cpp \
         datatype.cpp errorhan.cpp fileacc.cpp fileline.cpp \
         indextab.cpp linklist.cpp mem.cpp \
         nameidma.cpp numval.cpp rcbinstr.cpp \
         rcostrm.cpp \
         rcscan.cpp rcstack.cpp resource.cpp \
         stack.cpp stringar.cpp structst.cpp \
         unicode_compressor.cpp \
         localise.cpp

GENSRC = rcompl.cpp rcomp.cpp
OBJECT = $(addprefix $(BLDDIR)/, $(notdir $(SOURCE:.cpp=.o) \
             $(GENSRC:.cpp=.o)))
TARGET = $(addprefix $(BLDDIR)/, rcomp )

vpath %.cpp $(SRCDIR) $(BLDDIR)

all: $(TARGET)

$(TARGET): $(OBJECT)
        $(CXX) $^ -o $@
        strip $@
       
$(OBJECT): $(BLDDIR)/stamp $(BLDDIR)/rcomp.hpp

$(BLDDIR)/stamp:
        mkdir -p $(dir $@)
        touch $@

$(BLDDIR)/%.o: %.cpp
        $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

# HERE: is it possible to get rid of the following rule for $(GENSRC) files?

%.o: %.cpp
        $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

$(BLDDIR)/rcompl.cpp: $(SRCDIR)/rcomp.l
        $(LEX) -t $< > $@

$(BLDDIR)/rcomp.cpp $(BLDDIR)/rcomp.hpp: $(SRCDIR)/rcomp.y
        $(YACC) -d $< -o $(BLDDIR)/rcomp.cpp

clean:
        rm -f $(GENSRC) $(OBJECT) $(TARGET) $(BLDDIR)/stamp
        rm -f $(addprefix $(BLDDIR)/, $(GENSRC)) $(BLDDIR)/rcomp.hpp
        -rmdir $(BLDDIR)

.PHONY: all clean

Regards
Alex

PS: Here is the output when I remove the %.o: %.cpp rule:

bolinux72:/home/afarber/src/rcomp-SymbianOS-9.2/group> gmake
mkdir -p ../build/
touch ../build/stamp
bison -d ../src/rcomp.y -o ../build/rcomp.cpp
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/main.cpp -o ../build/main.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/array.cpp -o ../build/array.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/astring.cpp -o ../build/astring.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/ccodes.cpp -o ../build/ccodes.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/ctable.cpp -o ../build/ctable.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/datatype.cpp -o ../build/datatype.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/errorhan.cpp -o ../build/errorhan.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/fileacc.cpp -o ../build/fileacc.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/fileline.cpp -o ../build/fileline.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/indextab.cpp -o ../build/indextab.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/linklist.cpp -o ../build/linklist.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/mem.cpp -o ../build/mem.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/nameidma.cpp -o ../build/nameidma.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/numval.cpp -o ../build/numval.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/rcbinstr.cpp -o ../build/rcbinstr.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/rcostrm.cpp -o ../build/rcostrm.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/rcscan.cpp -o ../build/rcscan.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/rcstack.cpp -o ../build/rcstack.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/resource.cpp -o ../build/resource.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/stack.cpp -o ../build/stack.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/stringar.cpp -o ../build/stringar.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/structst.cpp -o ../build/structst.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/unicode_compressor.cpp -o ../build/unicode_compressor.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/localise.cpp -o ../build/localise.o
flex -t ../src/rcomp.l > ../build/rcompl.cpp
g++296    -c -o ../build/rcompl.o ../build/rcompl.cpp
../src/rcomp.l:11:18: main.h: No such file or directory
../src/rcomp.l:12:22: structst.h: No such file or directory
../src/rcomp.l:13:20: Parser.h: No such file or directory
../src/rcomp.l:14:22: localise.h: No such file or directory
../src/rcomp.l:22:22: fileline.h: No such file or directory
../src/rcomp.l:60:22: errorhan.h: No such file or directory
gmake: *** [../build/rcompl.o] Error 1



_______________________________________________
Help-make mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-make
Reply | Threaded
Open this post in threaded view
|

Re: Trying to get rid of one redundand rule

Paul Smith-20
%% Regarding Trying to get rid of one redundand rule; you wrote:

  n> My problem: even though I list both $(SRCDIR) and $(BLDDIR) in the VPATH,
  n>            I still have to list a separate rule to compile those 2 files:

  n> $(BLDDIR)/%.o: %.cpp
  n> $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

  n> %.o: %.cpp
  n> $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

VPATH is ONLY for finding _SOURCE_ files, never for finding target
files.

See the papers on VPATH on my web site below.

--
-------------------------------------------------------------------------------
 Paul D. Smith <[hidden email]>          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


_______________________________________________
Help-make mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-make
Reply | Threaded
Open this post in threaded view
|

RE: Trying to get rid of one redundand rule

Alexander.Farber
In reply to this post by Alexander.Farber
Thanks, but I keep rereading that and the manual, and still dont get it.
The generated files $(BLDDIR)/rcompl.cpp and rcomp.cpp are _SOURCE_ files too.

Why doesnt the rule

  VPATH = $(SRCDIR) $(BLDDIR)

  $(BLDDIR)/%.o: %.cpp
    $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

find them and an implicit rule for .cpp->.o triggers instead?

Regards
Alex

PS: Here is my Makefile again
 
CXX    = g++296
YACC   = bison
LEX    = flex

BLDDIR = ../build
SRCDIR = ../src
INCDIR = ../inc

SOURCE = main.cpp \
         array.cpp astring.cpp ccodes.cpp ctable.cpp \
         datatype.cpp errorhan.cpp fileacc.cpp fileline.cpp \
         indextab.cpp linklist.cpp mem.cpp \
         nameidma.cpp numval.cpp rcbinstr.cpp \
         rcostrm.cpp \
         rcscan.cpp rcstack.cpp resource.cpp \
         stack.cpp stringar.cpp structst.cpp \
         unicode_compressor.cpp \
         localise.cpp

GENSRC = rcompl.cpp rcomp.cpp
OBJECT = $(addprefix $(BLDDIR)/, $(notdir $(SOURCE:.cpp=.o) \
                                          $(GENSRC:.cpp=.o)))
TARGET = $(addprefix $(BLDDIR)/, rcomp )

vpath %.cpp $(SRCDIR) $(BLDDIR)

all: $(TARGET)

$(TARGET): $(OBJECT)
        $(CXX) $^ -o $@
        strip $@
       
$(OBJECT): $(BLDDIR)/stamp $(BLDDIR)/rcomp.hpp

$(BLDDIR)/stamp:
        mkdir -p $(dir $@)
        touch $@

$(BLDDIR)/%.o: %.cpp
        $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

#%.o: %.cpp
# $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

$(BLDDIR)/rcompl.cpp: $(SRCDIR)/rcomp.l
        $(LEX) -t $< > $@

$(BLDDIR)/rcomp.cpp $(BLDDIR)/rcomp.hpp: $(SRCDIR)/rcomp.y
        $(YACC) -d $< -o $(BLDDIR)/rcomp.cpp

clean:
        rm -f $(GENSRC) $(OBJECT) $(TARGET) $(BLDDIR)/stamp
        rm -f $(addprefix $(BLDDIR)/, $(GENSRC)) $(BLDDIR)/rcomp.hpp
        -rmdir $(BLDDIR)

.PHONY: all clean




-----Original Message-----
From: Paul Smith [mailto:[hidden email]]On Behalf Of ext Paul D.
Smith
Sent: Dienstag, 14. Juni 2005 14:52
To: Farber Alexander (Nokia-TP/Bochum)
Cc: [hidden email]
Subject: Re: Trying to get rid of one redundand rule


%% Regarding Trying to get rid of one redundand rule; you wrote:

  n> My problem: even though I list both $(SRCDIR) and $(BLDDIR) in the VPATH,
  n>            I still have to list a separate rule to compile those 2 files:

  n> $(BLDDIR)/%.o: %.cpp
  n> $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

  n> %.o: %.cpp
  n> $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@

VPATH is ONLY for finding _SOURCE_ files, never for finding target
files.

See the papers on VPATH on my web site below.

--
-------------------------------------------------------------------------------
 Paul D. Smith <[hidden email]>          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


_______________________________________________
Help-make mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-make
Reply | Threaded
Open this post in threaded view
|

Re: Trying to get rid of one redundand rule

John Graham-Cumming
In reply to this post by Alexander.Farber
On Tue, 2005-06-14 at 10:18 +0200, [hidden email] wrote:

> I have most of my .cpp files in $(SRCDIR), but there are
> also 2 files being generated by yacc/lex into $(BLDDIR).
>
> My problem: even though I list both $(SRCDIR) and $(BLDDIR) in the VPATH,
>            I still have to list a separate rule to compile those 2 files:
>
> $(BLDDIR)/%.o: %.cpp
> $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@
>
> %.o: %.cpp
> $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@
>
> If I remove the 2nd rule above, then the generated files ../build/rcompl.cpp
> and ../build/rcomp.cpp won't compile because the implicit rule is missing
> the "-I"s. (Please see the output at very bottom demonstrating that)
>
> Does anybody please have an idea, how to better organize my Makefile?
>
> I've also tried without the VPATH ( prefixed the $(SOURCE) and $(GENSRC)
> files with $(SRCDIR) and $(BLDDIR) but that didn't help - I still needed
> the %.o:%.cpp rule )

Here's a simplified Makefile to work from:

        all: obj/foo.z

        vpath %.y obj

        obj/%.z: %.y
                @echo Making $@ from $<

        obj/foo.y: src/foo.x
                @echo Making $@ from $<

It builds an intermediate file obj/foo.y from something in the src
directory (src/foo.x) and then uses a pattern rule to build obj/foo.z
from obj/foo.y.  And here's the output:

        Making obj/foo.y from src/foo.x
        Making obj/foo.z from obj/foo.y

This simulates your situation of the lex rule and it seems to work fine.
I believe the problem you are seeing is that the %.o : %.cpp rule that
is defined automatically by GNU Make is taking precedence.  Try doing
one of the following:

1. Run GNU Make with -r
2. Or add as the first line of your Makefile

        %.o : %.cpp

John.
--
John Graham-Cumming

Home: http://www.jgc.org/
Work: http://www.electric-cloud.com/
POPFile: http://getpopfile.org/
GNU Make Standard Library: http://gmsl.sf.net/




_______________________________________________
Help-make mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-make
Reply | Threaded
Open this post in threaded view
|

RE: Trying to get rid of one redundand rule

John Graham-Cumming
In reply to this post by Alexander.Farber
On Tue, 2005-06-14 at 16:49 +0200, [hidden email] wrote:
> Thanks, but I keep rereading that and the manual, and still dont get it.
> The generated files $(BLDDIR)/rcompl.cpp and rcomp.cpp are _SOURCE_ files too.

GNU Make has no internal concept of what constitutes source or objects.
The VPATH rule that Paul is referring to is a "best practice".  GNU
Make's VPATH implementation will happily find source and object files it
you want it to.

> Why doesnt the rule
>
>   VPATH = $(SRCDIR) $(BLDDIR)
>
>   $(BLDDIR)/%.o: %.cpp
>     $(CXX) $(CXXFLAGS) -D __LINUX__ -I $(INCDIR) -I $(BLDDIR) -c $< -o $@
>
> find them and an implicit rule for .cpp->.o triggers instead?

Because the built in %.o : %.cpp rule takes precedence.

John.




_______________________________________________
Help-make mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-make
Reply | Threaded
Open this post in threaded view
|

RE: Trying to get rid of one redundand rule

Paul Smith-20
In reply to this post by Alexander.Farber
%% <[hidden email]> writes:

  af> The generated files $(BLDDIR)/rcompl.cpp and rcomp.cpp are
  af> _SOURCE_ files too.

No.  You're thinking of them as source files in the C/C++ sense, because
they contain C/C++ source code.

Make doesn't care about that: it doesn't know a C file from a socket.
Make just knows about targets.

To make, a "source file" is a file that make can't build (there are no
rules to build it).  That kind of file simply must exist before make
starts, or you get an error ("don't know how to build ...").  Those are
source files, to make.

Anything make can rebuild, is not a source file.

  af> PS: Here is my Makefile again

This makefile is too specialized to be used by anyone to reproduce your
problem; it relies on lots of files, etc. that exist only on your
system.

I do have one comment, though:

  af> $(OBJECT): $(BLDDIR)/stamp $(BLDDIR)/rcomp.hpp

  af> $(BLDDIR)/stamp:
  af> mkdir -p $(dir $@)
  af> touch $@

This is not a good way to get the object directory created, at all.
First, if you ever wanted to try to use -j to get parallelism, your
makefile will break.

Second, there is a (mis-)feature in GNU make 3.80 and all previous
versions, where any pattern rule that references an absolute pathname is
deleted if that directory doesn't exist.  See this from the GNU make
ChangeLog (for the next release):

> * rule.c (count_implicit_rule_limits): Don't delete patterns which
> refer to absolute pathnames in directories that don't exist: some
> portion of the makefile could create those directories before we
> match the pattern.  Fixes bugs #775 and #108.

The "general" way to handle creation of directories is to use $(shell
...) in an immediate context: this way the directory is created as the
makefile is read in:

    __dummy := $(shell mkdir -p $(BLDDIR))

The (minor) downside to this is the directory will always be created,
even if no .o file is created.  If you want to avoid that you need to
get much more fancy.

--
-------------------------------------------------------------------------------
 Paul D. Smith <[hidden email]>          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


_______________________________________________
Help-make mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-make
Reply | Threaded
Open this post in threaded view
|

RE: Trying to get rid of one redundand rule

Paul Smith-20
In reply to this post by John Graham-Cumming
%% John Graham-Cumming <[hidden email]> writes:

  >> find them and an implicit rule for .cpp->.o triggers instead?

  jg> Because the built in %.o : %.cpp rule takes precedence.

It definitely shouldn't.  Patterns are tested in the order they are
defined, and any pattern defined in a makefile is tested before any
builtin pattern.


I wonder if this isn't because the directory doesn't exist: have you
tried running this when the $(BLDDIR)/stamp file is up to date?  Or only
when it needs to be created?

--
-------------------------------------------------------------------------------
 Paul D. Smith <[hidden email]>          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


_______________________________________________
Help-make mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-make
Reply | Threaded
Open this post in threaded view
|

RE: Trying to get rid of one redundand rule

John Graham-Cumming
On Tue, 2005-06-14 at 13:34 -0400, Paul D. Smith wrote:
> %% John Graham-Cumming <[hidden email]> writes:
>
>   >> find them and an implicit rule for .cpp->.o triggers instead?
>
>   jg> Because the built in %.o : %.cpp rule takes precedence.
>
> It definitely shouldn't.  Patterns are tested in the order they are
> defined, and any pattern defined in a makefile is tested before any
> builtin pattern.

Ah, I am wrong.  I apologize.

John.
--
John Graham-Cumming

Home: http://www.jgc.org/
Work: http://www.electric-cloud.com/
POPFile: http://getpopfile.org/
GNU Make Standard Library: http://gmsl.sf.net/




_______________________________________________
Help-make mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-make
Reply | Threaded
Open this post in threaded view
|

RE: Trying to get rid of one redundand rule

Alexander.Farber
In reply to this post by Alexander.Farber
Good morning,

yes, the funny thing is that when I run "gmake" twice,
then the first invocation fails with

bolinux72:/home/afarber/src/rcomp-SymbianOS-9.2/group> gmake
mkdir -p ../build/
touch ../build/stamp
bison -d ../src/rcomp.y -o ../build/rcomp.cpp
g++296  -D __LINUX__ -I ../inc -I ../build -c ../src/main.cpp -o ../build/main.o

...........................skipped successfull compilations...................

g++296  -D __LINUX__ -I ../inc -I ../build -c rcompl.cpp -o ../build/rcompl.o
g++296: rcompl.cpp: No such file or directory
g++296: No input files
gmake: *** [../build/rcompl.o] Error 1

but the second gmake run succeeds:

bolinux72:/home/afarber/src/rcomp-SymbianOS-9.2/group> gmake
flex -t ../src/rcomp.l > ../build/rcompl.cpp
g++296  -D __LINUX__ -I ../inc -I ../build -c ../build/rcompl.cpp -o ../build/rcompl.o
g++296  -D __LINUX__ -I ../inc -I ../build -c ../build/rcomp.cpp -o ../build/rcomp.o
g++296 ../build/main.o ../build/array.o ../build/astring.o ../build/ccodes.o ../build/ctable.o ../build/datatype.o ../build/errorhan.o ../build/fileacc.o ../build/fileline.o ../build/indextab.o ../build/linklist.o ../build/mem.o ../build/nameidma.o ../build/numval.o ../build/rcbinstr.o ../build/rcostrm.o ../build/rcscan.o ../build/rcstack.o ../build/resource.o ../build/stack.o ../build/stringar.o ../build/structst.o ../build/unicode_compressor.o ../build/localise.o ../build/rcompl.o ../build/rcomp.o -o ../build/rcomp
../build/localise.o(.text+0xa86f): In function `GlobalLocalisationData::OutputLocalisedFile(String)':
: the use of `tmpnam' is dangerous, better use `mkstemp'
strip ../build/rcomp

I have modified the dir creation to your suggestion

__dummy := $(shell mkdir -p $(BLDDIR))

and now it works in one pass, thank you (but still looks
strange to me, sorry. I don't understand what is wrong with

        $(OBJECTS): $(BLDDIR)/stamp

        $(BLDDIR)/stamp:
                mkdir -p $(dir $@)
                touch $@
 
and why would it break parallel builds.)

Regards
Alex

> -----Original Message-----
> From: Paul Smith [mailto:[hidden email]]On Behalf Of ext Paul D. Smith
>
> I wonder if this isn't because the directory doesn't exist: have you
> tried running this when the $(BLDDIR)/stamp file is up to
> date?  Or only when it needs to be created?

_______________________________________________
Help-make mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-make

Makefile (1K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

RE: Trying to get rid of one redundand rule

Paul Smith-20
%% <[hidden email]> writes:

  af> yes, the funny thing is that when I run "gmake" twice,
  af> then the first invocation fails with

  af> but the second gmake run succeeds:

That's because the second time, the directory already exists.

  af> I have modified the dir creation to your suggestion

  af> __dummy := $(shell mkdir -p $(BLDDIR))

  af> and now it works in one pass, thank you (but still looks
  af> strange to me, sorry. I don't understand what is wrong with

  af> $(OBJECTS): $(BLDDIR)/stamp
 
  af> and why would it break parallel builds.)

That line won't, but that's not what you wrote in your last message:
there you had this line:

 > $(OBJECT): $(BLDDIR)/stamp $(BLDDIR)/rcomp.hpp

and _that_ is not parallel-safe (unless you add some other rules).
Basically, if you're going to be creating a directory using rules like
this then you must ensure that EVERY target that needs that directory to
exist depends on that stamp file.  You can't rely on ordering of targets
within a prerequisite list to be sure the directory is created first.


Anyway, the reason this doesn't work the first time is, as I mentioned
before, due to a misbehavior (I don't call it a bug because the behavior
was intentionally implemented, not by accident) in GNU make that has
been fixed for the next release.

--
-------------------------------------------------------------------------------
 Paul D. Smith <[hidden email]>          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


_______________________________________________
Help-make mailing list
[hidden email]
http://lists.gnu.org/mailman/listinfo/help-make