Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Aug 2004 10:57:37 +0200
From:      Erik Trulsson <ertr1013@student.uu.se>
To:        Ruslan Ermilov <ru@freebsd.org>
Cc:        Kris Kennaway <kris@obsecurity.org>
Subject:   Re: ccache support for make buildworld/make release
Message-ID:  <20040826085737.GA87342@falcon.midgard.homeip.net>
In-Reply-To: <20040826061402.GB26879@ip.net.ua>
References:  <412CBC91.3070900@portaone.com> <412CD983.2040700@cronyx.ru> <20040825183342.GA81434@xor.obsecurity.org> <412CEF62.5010600@mcsi.pp.ru> <412CFBED.6030508@portaone.com> <20040825210144.GG35529@ip.net.ua> <20040826030131.GA25905@xor.obsecurity.org> <20040826061402.GB26879@ip.net.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Aug 26, 2004 at 09:14:02AM +0300, Ruslan Ermilov wrote:
> On Wed, Aug 25, 2004 at 08:01:31PM -0700, Kris Kennaway wrote:
> > On Thu, Aug 26, 2004 at 12:01:44AM +0300, Ruslan Ermilov wrote:
> > > On Wed, Aug 25, 2004 at 11:51:57PM +0300, Maxim Sobolev wrote:
> > > > Yeah, I've noticed that as well. Also, for some reason when I've re-run 
> > > > make world second time all objects built after buildtools miss the 
> > > > cache. Strange....
> > > > 
> > > Does ccache take into account that the "cc" binary may be different
> > > for the same source and the command?  What will happen, assuming
> > > it's made to work, if you attempt to build the native i386 world,
> > > and then try to "make buildworld TARGET_ARCH=alpha"?  The cc
> > > command will be the same; will ccache substitute the i386 code in
> > > this case?  Also, what happens for a native build when we upgrade
> > > GCC version in the base?
> > 
> > I believe it hashes the output of the preprocessor and uses that as
> > the index into the cache.  So cross-builds should probably be fine
> > (assuming the right cc is used) since they'll hash differently.
> > Compiler upgrades might not work reliably since you might sometimes
> > get the object file from the old compiler.
> > 
> I'm pretty sure the following code will preprocess identically on
> all architectures, no?
> 
> : void
> : foo(void)
> : {
> : }

ccache does take into account that the compiler might be different.
>From the ccache(1) manpage:

    The basic idea is to detect when you are  compiling  exactly the  same
    code a 2nd time and use the previously compiled output. You detect that
    it is the same code by forming a hash of:
    o      the pre-processor output from running the compiler with -E
    o      the command line options
    o      the real compilers size and modification time
    o      any stderr output generated by the compiler

Note the third bulletpoint.


-- 
<Insert your favourite quote here.>
Erik Trulsson
ertr1013@student.uu.se



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040826085737.GA87342>