comp.lang.ada
 help / color / mirror / Atom feed
From: i-google-iasuhdkajsh@rf.risimo.net
Subject: Re: How to cache output of the compiler aka ccache
Date: 18 Mar 2005 10:50:22 -0800
Date: 2005-03-18T10:50:22-08:00	[thread overview]
Message-ID: <7f8cfe1b.0503181050.10ed86ce@posting.google.com> (raw)
In-Reply-To: 1111085641.211767.56950@f14g2000cwb.googlegroups.com

> Hi
> 
> I have a 1mio LOC project and it takes multiple hours to
> build and rebuild. The C/C++ world has a nice tools (ccache
> is well known here) which cache the output of the compiler.
> This especially speeds up the time for a "make clean;make".
> 
> Is there such a thing for Ada in general and gcc's gnat
> specially? Any other way to speed up the compilation?

Thanks for your input. I'm more a C/C++ guy than an Ada one. 
So please correct anything below.

There are two main gains scenarios where a cache helps.

1) make clean;make
You think that there are no reason for this.
However I disagree. There are cases you need to rerun
configure and afterwards the make clean;make idoim. Reasons 
for this could be:
 - you have changed the version/flags of tools you use
 - you have changed the configuration somehow (adding 
   sound support for example)
 - poor/bad make files for non-Ada code
In my project are multiple compilper generators and 
C/C++ and Java source code. So there is a configure and
make clean;make is a good way to make sure you have a
good build.

2) Sharing between trees
I also want to give here two examples. The first is when 
a group of local developers share such a cache. If now an 
external CVS change comes in only one developer has to 
wait. In the best case you could do a background cache 
filling based on new CVS code with cron and co.

The second case for sharing is multiple tress. Let me
give you an example:
 $ cd tree.clean
 $ make
 $ cd ..;cp -a tree.clean tree.patched; cd tree.patched
 $ patch -p1 <....
 $ make
 # nothing gained so far. Two days later however there
 # is an external CVS change.
 $ cd ../tree.clean
 $ cvs up;make
 # testing ... ok. Let's test the patched version
 $ cd ../tree.patched
 $ cvs up
 $ make
 # The last make should really be speed up.

So you see there are more or less valid reasons for a compile cache.

Thanks for the -m switch hint. I will try it.

      Thomas



      parent reply	other threads:[~2005-03-18 18:50 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-03-17 18:54 How to cache output of the compiler aka ccache i-google-iasuhdkajsh
2005-03-17 19:40 ` Robert A Duff
2005-03-17 20:04   ` Ludovic Brenta
2005-03-17 21:27     ` Marius Amado Alves
2005-03-18  1:24       ` Ludovic Brenta
2005-03-18  2:08         ` Robert A Duff
2005-03-17 19:47 ` Ludovic Brenta
2005-03-18 19:22   ` Simon Wright
2005-03-18 20:04     ` Randy Brukardt
2005-03-18 22:10       ` Florian Weimer
2005-03-19  3:25       ` Larry Kilgallen
2005-03-18  6:58 ` i-google-iasuhdkajsh
2005-03-18 13:33   ` Robert A Duff
2005-03-18 14:01     ` Vinzent 'Gadget' Hoefler
2005-03-18 14:41       ` Florian Weimer
2005-03-18 15:08         ` Vinzent 'Gadget' Hoefler
2005-03-18 16:24           ` Florian Weimer
2005-03-21  8:16             ` Vinzent 'Gadget' Hoefler
2005-03-21  8:54               ` Florian Weimer
2005-03-21 11:26                 ` Vinzent 'Gadget' Hoefler
2005-03-18  8:07 ` Martin Krischik
2005-03-18 18:50 ` i-google-iasuhdkajsh [this message]
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox