On Thursday 23 February 2006 15:30, Brad King wrote:
> David Faure wrote:
> > cmake seems to like to rebuild every single object file in kdelibs after I 
> > svn update.
> > I'm trying to find out why.
> 
> Can you post two revision numbers such that after building with the 
> first I can update and see this behavior?

I think it was 512488 -> 512700, but it might have been starting from a higher 
revision
than that. I'll keep an eye on it and tell you if it happens again (it didn't 
for 512700->512747).

> > One thing I noticed is that DependInfo.cmake seems to be updated just to
> > change the order of lines in it. I guess this is because it comes out of a 
> > hashtable?
> > It would need to be sorted, to avoid unnecessary changes (which trigger 
> > rebuilding, 
> > or at least unnecessary calls to cmake_depends, right?)
> 
> When a header or source file changes dependencies might have changed so 
> CMake rescans them.  This updates the DependInfo.cmake file, and may 
> write things in a new order.  The order of dependencies listed in the 
> file should not matter.

Of course; I didn't mean that order matters, but that because the file has 
changed,
its mtime is updated, so more things happen than if the mtime hadn't changed.
This is just a guess based on the assumption that
- the mtime of DependInfo.cmake matters for things that depend on it
- you already have code that avoids touching a file if its contents haven't 
changed.
But in the 512700->512747 update, the file changed again and nothing got rebuilt
that didn't need to be, so I must be chasing the wrong problem.

> > Also, somehow something deletes many .o files during the build process so I 
> > can't
> > see exactly why so many files have to be rebuilt, make -d simply says 
> > "kdebug.o
> > doesn't exist anymore, so obviously I need to rebuild it". But why does it 
> > get deleted?
> 
> When it is detected that an object file is out of date during dependency 
> scanning it gets deleted to be sure it is rebuilt.  I've forgotten the 
> exact reason we have to do this.  I think we had some problems with low 
> resolution time on make's decision making with some older makes that 
> prevent things from rebuilding unless the object is missing altogether.

:( but that makes debugging with make -d useless. How else can I find out why
an object file is detected to be out of date? Does cmake have a flag for 
debugging
this, or do I need to add printfs in the code?

-- 
David Faure, [EMAIL PROTECTED], sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
_______________________________________________
Kde-buildsystem mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kde-buildsystem

Reply via email to