The problem is this new feature in make: * WARNING: Backward-incompatibility! GNU make now implements a generic "second expansion" feature on the prerequisites of both explicit and implicit (pattern) rules. After all rules have been parsed the prerequisites are expanded again, this time with all the automatic variables in scope. This means that in addition to using standard SysV $$@ in prerequisites lists, you can also use complex functions such as $$(notdir $$@) etc. This behavior applies to implicit rules, as well, where the second expansion occurs after the rule is matched. However, this means that you need to double-quote any "$" in your filenames; instead of "foo: boo$$bar" you now must write "foo: foo$$$$bar".
The presence of this feature can be detected using ifneq (,$(filter second-expansion,$(.FEATURES))) (not sure how compatible that is with non-GNU makes though) -- Summary: libjava fails to build if GNU make 3.81 betas are used (caused by feature addition, not bug, in 3.81beta --> will still happen with 3.81 final) Product: gcc Version: 4.0.2 Status: UNCONFIRMED Severity: normal Priority: P2 Component: libgcj AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bero at arklinux dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24289