comp.lang.ada
 help / color / mirror / Atom feed
From: Vinzent 'Gadget' Hoefler <nntp-2005-03@t-domaingrabbing.de>
Subject: Re: How to cache output of the compiler aka ccache
Date: Mon, 21 Mar 2005 08:16:53 +0000
Date: 2005-03-21T08:16:53+00:00	[thread overview]
Message-ID: <2836529.BOqhxBo8yv@jellix.jlfencey.com> (raw)
In-Reply-To: 87zmx0exbm.fsf@deneb.enyo.de

Florian Weimer wrote:

> * Vinzent Hoefler:
> 
>> Florian Weimer wrote:
>>
>>> * Vinzent Hoefler:
>>> 
>>>> It obviously fails to recompile missing dependencies. From my tests
>>>> it also seems to ignore file dates. So I'd say, the "Java Build
>>>> System" is non-existent.
>>> 
>>> It's not specified by the standard.
>>
>> That's as good as "non-existent". :)
> 
> Uh-oh, even with Ada, this is mostly a quality-of-implementation
> issue.  Ada implementations only need to enforce consistency.

Yep. And talking about the compilation system: In which way is this
different from taking all dependencies into account and check if they
need to be recompiled?

>  There's
> no need to support build tools which recognize dependencies and
> automatically recompile them.  It's also perfectly acceptable to
> always recompile all dependencies.

Ok, yes, that's the painful way. But at least it *would* recompile them
then.

>>>  Sun's implementation optionally
>>> recompiles out-of-date dependencies, though.
>>
>> Well, yes. I've tested some more, and from those tests it seems,
>> Sun's "javac" recompiles dependencies if they are at most one level
>> deep (or - to put it another way - direct dependencies of the file
>> being compiled). It even does that recursively, so if I delete /all/
>> .class files it recompiles everything, of course.
> 
> Oh, come on, have a closer look at the documentation.

What documentation?

hovi@jellix:~> man javac
No manual entry for javac
hovi@jellix:~> javac -help
Usage: javac <options> <source files>
where possible options include:
  -g                        Generate all debugging info
  -g:none                   Generate no debugging info
  -g:{lines,vars,source}    Generate only some debugging info
  -nowarn                   Generate no warnings
  -verbose                  Output messages about what the compiler is doing
  -deprecation              Output source locations where deprecated APIs are used
  -classpath <path>         Specify where to find user class files
  -sourcepath <path>        Specify where to find input source files
  -bootclasspath <path>     Override location of bootstrap class files
  -extdirs <dirs>           Override location of installed extensions
  -d <directory>            Specify where to place generated class files
  -encoding <encoding>      Specify character encoding used by source files
  -source <release>         Provide source compatibility with specified release
  -target <release>         Generate class files for specific VM version
  -help                     Print a synopsis of standard options

Oh, obviously you mean
<URI:http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/javac.html>.

Well, yes. The part about "searching for types" seems to imply it
recompiles needed things. But in fact it doesn't (yes, I *did* use the
-verbose option to check for that).

The fact is: if it compiles class A which depends on class B which
depends on class C and class C is out of date, but class B is not yet,
it does *not* recompile it. It stops after checking class B. And from
what I understand, this behaviour is indeed conforming to the
specification (if you'd like to call the information on some company's
web site a "specification").


Vinzent.

-- 
worst case: The wrong assumption there actually is one.



  reply	other threads:[~2005-03-21  8:16 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 [this message]
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
replies disabled

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