[Top][All Lists]
[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.
make-debug-info-and-internal-db.zip
Description: Binary data