[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #21716] The following works in 3.80 but not in 3.81

From: anonymous
Subject: [bug #21716] The following works in 3.80 but not in 3.81
Date: Sat, 29 Dec 2007 21:50:21 +0000
User-agent: Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv: Gecko/20070819 Firefox/

Follow-up Comment #2, bug #21716 (project make):

The change in behavior is listed in the 3.81 NEWS file.  To quote:

* 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.

So, add the line
to the makefile somewhere before any uses of $$(@F), etc.  With that, the
makefile will work with both 3.80 and 3.81.

Philip Guenther


Reply to this item at:


  Message sent via/by Savannah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]