How do you "make everything"?

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Fri Jan 10 16:39:27 UTC 2025


On 2025-01-10 16:13, Archie Cobbs wrote:

> Thanks for the input.
>
> Also with some playing around I realized that "make print-targets" 
> prints out every possible make target... of which there are 2453... :)

If you were to make all these targets, there would be a lot of 
redundancy, since e.g. the target `java` depends on the target 
`java.base-java`, etc.

The conceptually "highest" level targets are the `*-bundles` targets. 
You can create all of them using `make all-bundles`. That would generate 
all output stages that are consumed by any downstream process, at least 
as we use it in Oracle. To save build time, for testing, you will most 
likely be satisfied with the `*-image` targets. Run `make all-images` to 
generate all known images. I guess that is the best answer to your 
question about "making everything".

Apart from these "leaf" targets, there are some other "leaves" as well. 
(Leaves as in that no other make target depends on them, so if the user 
does not specify them on the command line, they will not be executed.) 
These are for specialized stuff, like generating IDE configuration, 
running tests, or as you mentioned, the bootcycle-images target. (This 
is really just a somewhat weird and special case of testing, there the 
"test" in point is if the new JDK can pass the build system.)

I guess it would have been an interesting addition to the build system 
to have it print all "leaf" targets; unfortunately I cannot really think 
of an easy way of doing this in make.

/Magnus



>
> So to be more precise, I don't really want to "make everything", but 
> rather make everything that makes use of the java compiler.
>
> I've found there are lots of little tools and intermediate JAR files 
> that are built and used for various things, for example, jrt-fs.jar, 
> benchmarks.jar, etc.
>
> I'll stick with my ad hoc list for now, but of course any suggested 
> additions are welcome.
>
> Thanks,
> -Archie
>
>
> On Fri, Jan 10, 2025 at 3:36 AM Aleksey Shipilev <shipilev at amazon.de> 
> wrote:
>
>     On 08.01.25 19:17, Archie Cobbs wrote:
>     > So what do people do when they want to "make everything"?
>     >
>     > FWIW I've been doing this:
>     >
>     > make
>     > make hotspot
>     > make static-libs-bundles
>     > make product-bundles
>     > make test-bundles
>     > make bootcycle-images
>     >
>     > but that list is just ad hoc and based mostly on past mistakes.
>     Is there a more complete list that
>     > includes every make target that could possibly be affected by a
>     change to the Java compiler?
>
>     Well, I personally run `make bootcycle-images` if I want to make
>     sure the newly-built JDK can build
>     itself. I think this is what you want to test compilers. It does
>     not build test code, though.
>
>     A conventional way to build everything should be `make all`, but I
>     don't think it actually builds a
>     lot of targets in current build system. Consider submitting an RFE
>     for infrastructure/build for it.
>
>     -Aleksey
>
>
>
> -- 
> Archie L. Cobbs
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/compiler-dev/attachments/20250110/dc555746/attachment-0001.htm>


More information about the compiler-dev mailing list