help-make
[Top][All Lists]
Advanced

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

Re: Hard time figuring out what order-only prerequisites really do.(atta


From: Angel Tsankov
Subject: Re: Hard time figuring out what order-only prerequisites really do.(attachment again)
Date: Sat, 2 Jul 2005 16:30:18 +0300

Good news first: I installed make 3.81 beta 3 on Windows XP SP1 and on Linux 
(yellowdog) and it seems to run fine on both OS's. The
attached ZIP archive contains the internal DB (output of -p option) and debug 
info (output of -d option) of both make 3.80 and 3.81
beta 3 executing the same makefile (also include in the archive) on WinXP.

Now for the bad news: I tried to find the cause of the problem with make 3.80 
by myself , but I couldn't. I can only say that at
first (with 11 cpp files in SourceFiles) it rebuilt them every time no matter 
whether the corresponding .o files are up-to-date or
not. Then I started removing the cpp files one by one. Every time I removed a 
cpp file, I also removed the IntermediateFiles folder
and executed "make". At some point make started to rebuild the cpp files each 
second run, i.e. let's say there are 3 cpp files in
the SourceFiles folder and I execute make 4 time in sequence. In the first run 
it would create the IntermediateFiles folder and
build all cpp's. In the 2nd and 4th runs it would not build any cpp, but in the 
3rd run, it would build SOME of them. So, I removed
one more cpp and 2 cpps were left in the SourceFiles folder. Now make 3.80 
would build both cpp only the first run (it would also
create the IntermediateFiles folder, which is OK, 'cause I would have removed 
it). On each of the following EVEN runs it would build
one of the cpp's and on ODD runs it would rebuild the other cpp. I went further 
on and left a single cpp in the SourceFiles folder.
Now make would rebuild it the first time (when it also creates the 
IntermediateFiles folder) and it would rebuild it again (which is
not unnecessary) on each 3rd or 4th run. It appeared to me that the problem 
hase some random behaviour and I gave up. But, before I
did so, I tried changing the filenames (to check if it is a file name lengh 
issue) and also the names of the variables inside the
makefile (e.g., the word SourceFiles was used both as name of a variable and as 
an argument to the wildcard function, so I changed
the variable name SourceFiles to SF and ObjectFiles became OF). I also changed 
the names of the IntermediateFiles target and
prerequisites to IFiles. All these changes did not help AT ALL. So I really 
gave up. All these tests were performed on the Windows
XP SP1 workstation. As far as I remember I experienced almost the same problem 
on Linux, so I'd rather say it is not an OS-specific
issue.

And last but not least, I've made the attachment available at 
http://debian.fmi.uni-sofia.bg/~angel/make/ in case my mail client
gets fucked up again.

Hope this helps,
Angel Tsankov

P.S. I really would like to know what was so wrong that almost made me think I 
am a complete idiot if I cannot understand smth as
simple as pattern rules.

Attachment: make-debug-info-and-internal-db.zip
Description: Binary data


reply via email to

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