Hi build-devs,

I was trying to do a fancy setup with multiple different hotspot directories in a single source tree to create some builds for performance measurements.

I used the configure flag --with-override-hotspot=hotspot-foo
and when I attempted a "make images" I get the following error:

$ make CONF=override-foo images
Building configuration 'override-foo' (matching CONF=override-foo)
Compiling 5 files for BUILD_GENMODULESLIST
Building configuration 'override-foo' (matching CONF=override-foo)
Building target 'images' in configuration 'override-foo'
Compiling 8 files for BUILD_TOOLS_LANGTOOLS
Compiling 14 files for BUILD_JVMCI_OPTIONS
Compiling 3 files for BUILD_JVMCI_SERVICE
Error: Could not find or load main class com.sun.tools.javac.Main
Error: Could not find or load main class com.sun.tools.javac.Main
Gensrc-jdk.vm.ci.gmk:39: recipe for target '/home/mgerdin/work/repos/hg/jdk9/hs-rt/build/override-foo/buildtools/jvmci_options/_the.BUILD_JVMCI_OPTIONS_batch' failed make[3]: *** [/home/mgerdin/work/repos/hg/jdk9/hs-rt/build/override-foo/buildtools/jvmci_options/_the.BUILD_JVMCI_OPTIONS_batch] Error 1
make[3]: *** Waiting for unfinished jobs....
Gensrc-jdk.vm.ci.gmk:48: recipe for target '/home/mgerdin/work/repos/hg/jdk9/hs-rt/build/override-foo/buildtools/jvmci_service/_the.BUILD_JVMCI_SERVICE_batch' failed make[3]: *** [/home/mgerdin/work/repos/hg/jdk9/hs-rt/build/override-foo/buildtools/jvmci_service/_the.BUILD_JVMCI_SERVICE_batch] Error 1
make/Main.gmk:103: recipe for target 'jdk.vm.ci-gensrc-hotspot-foo' failed

From what I gather the problem is that the hotspot directory name is encoded in the make target name: 'jdk.vm.ci-gensrc-hotspot-foo' but in make/Main.gmk the dependencies are set up as follows:

HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))
$(HOTSPOT_GENSRC_TARGETS): interim-langtools

but since 'jdk.vm.ci-gensrc-hotspot-foo' does not match the %-gensrc-hotspot filter no dependency is created on interim-langtools and the build fails because it can't find the javac main class.

I had a stab at fixing it by the following change:
diff -r 1697e1f12275 make/Main.gmk
--- a/make/Main.gmk
+++ b/make/Main.gmk
@@ -110,7 +110,7 @@
 JDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS))
LANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS))
 CORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS))
-HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))
+HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-$(shell basename $(HOTSPOT_TOPDIR)), $(GENSRC_TARGETS))

but I suspect that a more complete change would involve the other --with-override-foo flags and perhaps avoiding using the shell to get the directory part of HOTSPOT_TOPDIR

I guess nobody has used the --with-override flags for a while :)

/Mikael

Reply via email to