Need reviewers: update langtools/build.xml

View: New views
2 Messages — Rating Filter:   Alert me  

Need reviewers: update langtools/build.xml

by jonathan.gibbons :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


1. Simplify build macros

Currently, the langtools build.xml builds a number of components (javac,
javadoc, javah, etc) using a number of macros (build-tool, build-jar,
build-classes, etc). Currently the macros are such that build-tool invokes
build-jar which in turn builds build-classes.. This is convenient for
the use site, since each top level target only needs to invoke a single
macro to perform its work. However, it is very inconvenient for the
macro declarations since build-tool has to support all the possible
parameters for build-jar, and both have to support all the possible
parameters for build-classes.

Change it so that the macros do not invoke each other but each presumes
the necessary predecessors have been called. This greatly simplifies
the macro declarations, and easily compensates for the slightly more
verbose invocations at the top level targets.  Going forward, it makes
it much simpler to add new attributes as needed to the various macros.

As a side effect, it also reduces the complexity of any error messages
reported by Ant, which does not handle errors from nested macro
invocations particularly gracefully.

2. Reduce javac invocations in build-classes

The current build-classes macro invokes javac twice, once for the
generated source, and once for the main source for the tool.  Despite
its name, the <javac> srcdir attribute defines a "path-like structure",
meaning that you can provide multiple root directories in which to locate
the source to be compiled. Using this feature, you can reduce the two
compilations into a single compilation.

3. Reduce javac-invocations in build-all-classes

Originally, the rules for building the various langtools tools were
set up to allow different options (-Xlint, -Werror, etc) for different
tools. Over time, the tools have been cleaned up to allow uniform
compilation. While it is still appropriate for the developer targets
to compile the tools individually, the target invoked by the full JDK
build can simply compile all the tools together in a single compilation.

Re: Need reviewers: update langtools/build.xml

by jonathan.gibbons :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ooops,

I omitted reference to the webrev, here:
http://cr.openjdk.java.net/~jjg/6898585-lt.build/

(Thanks to David for catching that.)

-- Jon

Jonathan Gibbons wrote:

>
> 1. Simplify build macros
>
> Currently, the langtools build.xml builds a number of components (javac,
> javadoc, javah, etc) using a number of macros (build-tool, build-jar,
> build-classes, etc). Currently the macros are such that build-tool
> invokes
> build-jar which in turn builds build-classes.. This is convenient for
> the use site, since each top level target only needs to invoke a single
> macro to perform its work. However, it is very inconvenient for the
> macro declarations since build-tool has to support all the possible
> parameters for build-jar, and both have to support all the possible
> parameters for build-classes.
>
> Change it so that the macros do not invoke each other but each presumes
> the necessary predecessors have been called. This greatly simplifies
> the macro declarations, and easily compensates for the slightly more
> verbose invocations at the top level targets.  Going forward, it makes
> it much simpler to add new attributes as needed to the various macros.
>
> As a side effect, it also reduces the complexity of any error messages
> reported by Ant, which does not handle errors from nested macro
> invocations particularly gracefully.
>
> 2. Reduce javac invocations in build-classes
>
> The current build-classes macro invokes javac twice, once for the
> generated source, and once for the main source for the tool.  Despite
> its name, the <javac> srcdir attribute defines a "path-like structure",
> meaning that you can provide multiple root directories in which to locate
> the source to be compiled. Using this feature, you can reduce the two
> compilations into a single compilation.
>
> 3. Reduce javac-invocations in build-all-classes
>
> Originally, the rules for building the various langtools tools were
> set up to allow different options (-Xlint, -Werror, etc) for different
> tools. Over time, the tools have been cleaned up to allow uniform
> compilation. While it is still appropriate for the developer targets
> to compile the tools individually, the target invoked by the full JDK
> build can simply compile all the tools together in a single compilation.