Questions about GNU make are best addressed to the [email protected] mailing list.
On Wed, 2010-06-02 at 15:19 -0400, Kelly Hopkins via RT wrote: > > [[email protected] - Wed Jun 02 08:24:22 2010]: > > > > Our establishment has moved up to GNU Make 3.81. > > We notice a problem with the Make processor. > > The following Make command does not work any more when using Make 3.81 > > > > $(CMDS): ./src/[email protected] ./inc/[email protected] ./inc/ldi_globals.h > > > > I had to change the command to the following in order to make it work > > for me. > > > > $(CMDS): ./src/*.C ./inc/*.h ./inc/ldi_globals.h > > > > Did the Make processor change to cause it to fail for me? >From the GNU make 3.81 NEWS file: * WARNING: Backward-incompatibility! GNU make now implements a generic "second expansion" feature on the prerequisites of both explicit and implicit (pattern) rules. In order to enable this feature, the special target '.SECONDEXPANSION' must be defined before the first target which takes advantage of it. If this feature is enabled then 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 when the rule is matched. However, this means that when '.SECONDEXPANSION' is enabled you must double-quote any "$" in your filenames; instead of "foo: boo$$bar" you now must write "foo: foo$$$$bar". Note that the SysV $$@ etc. feature, which used to be available by default, is now ONLY available when the .SECONDEXPANSION target is defined. If your makefiles take advantage of this SysV feature you will need to update them. There are other issues described there, which would be good to read about. Cheers! _______________________________________________ Help-make mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-make
