This is the mail archive of the
java-prs@gcc.gnu.org
mailing list for the Java project.
[Bug libgcj/22580] [4.1 Regression] 'make -j' doesn't affect source->bytecode compilation
- From: "wilson at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: java-prs at gcc dot gnu dot org
- Date: 30 Jul 2005 01:02:54 -0000
- Subject: [Bug libgcj/22580] [4.1 Regression] 'make -j' doesn't affect source->bytecode compilation
- References: <20050720233943.22580.mckinlay@redhat.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From wilson at gcc dot gnu dot org 2005-07-30 01:02 -------
The problem is the compile-classes rule in the libjava/classpath/lib/Makefile.am
file. This rule contains a line $(JAVAC) that has a recursive make hidden
inside it. make -j requires that all lines that perform a recursive make
contain the string $(MAKE), the string ${MAKE}, or start with +. This is before
variable substitution, etc.
Three possible solutions off the top of my head:
1) Add a comment that mentions $(MAKE), e.g. change the line
$(JAVAC)
to
$(JAVAC) # $(MAKE)
2) Add a + to indicate this line does a recursive make. This is apparently
POSIX (though my manual isn't here to double check). E.g. change the line
$(JAVAC)
to
+$(JAVAC)
3) Delete the JAVAC variable, and put the line in question directly into the
compile-classes rule.
I verified that the first two suggestions work. I didn't try the third, it
seems less practical.
Since JAVAC is being conditionally set, and only the GCJ version has the hidden
recursive make, we probably need a conditional fix here.
I'll leave it to the java and/or classpath folks to decide how they want to fix
this. You may want to check the make manual for info on the MAKE variable, -j,
jobserver, and +.
My libjava build is still going, so it is possible that there are other similar
problems I haven't noticed yet.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22580