I've been considering working around this problem by just redoing the whole .java->.class step whenever any .java file changes. That would probably be slower for libgcj developers but at least wouldn't hugely hurt folks working elsewhere. Also, most class library development happens in Classpath these days anyway.
Like Andrew, I would like dependencies between one Java file and all the class file in the package. This would also help on parallelization.
A possibility (which can be applied either if you have a single huge .java->.class step, or if you make it more fine grained) is to make all class files depend on all sources via an intermediate rule, like
gnu/java/lang/a.class gnu/java/lang/b.class gnu/java/lang/c.class: \ gnu/java/lang.stamp touch $@ gnu/java/lang.stamp: \ gnu/java/lang/a.java gnu/java/lang/b.java gnu/java/lang/c.java $(JAVAC) $? echo stamp > $@ Paolo