Howto re-compile ony parts?

Kelly O'Hair Kelly.Ohair at Sun.COM
Sat May 10 18:43:41 UTC 2008


We already use 'make -j' when building the .o files, and the dependencies
should be ok for the .o files. So for native compilations I don't
think we have a problem.

But with Java building, it's not clear 'make -j' is the answer or will
even work.
First, a .java can create multiple .class files, and second all the
javac builds read and write to the classes directory.
If a bunch of javac compilations were done in parallel I don't think
it would be a pretty sight. In general, make and java compilation
has always been complicated or non-robust to say the least.

Most people don't realize that compiling an explicit list of sources
can sometimes compile more than that, and that often the output directory
is also used in the classpath as an input directory.
You might think this is a bad idea, but it's done, has been for some time.

There are multiple possibilities for improving the javac compile time,
but doing it via make is not on my list.
We would like to look into javamake (soon to be open sourced)
    http://www.experimentalstuff.com/Technologies/JavaMake/index.html
which does the right thing in terms of incremental builds.
It could be used with ant, or run directly from the makefiles.

And the javac team may be looking into actually paralizing the internals
of javac soon, which would help without changing any build procedures.

-kto

Andrew Haley wrote:
> Martin Buchholz wrote:
>> Unfortunately, incremental builds by running make in subdirectories
>> have historically been quite unreliable, and it has never been highest priority
>> to fix them.  Developers often do (at least in the jdk repository)
>> - try incremental build; it might work...
>> - else back off to rebuilding everything;
>>   cd jdk/make; make clobber all
>>
>> You could try to fix all of the subdirectory makefiles, but that's an
>> enormous job.
>> For bonus points, you could try to fix the architecture of the
>> recursive makes themselves
>> using the ideas in "Recursive Make Considered Harmful"
>> http://miller.emu.id.au/pmiller/books/rmch/
> 
> Mmm.  Surely if anyone is going to hack on the makefiles the first thing
> to do is to fix the dependencies so that "make -j" works properly.
> 
> Andrew.



More information about the build-dev mailing list