[Buildroot] Make 3.82 does behave differently than make 3.81 for sure, but ...

Malte Starostik m-starostik at versanet.de
Mon Aug 30 22:15:04 UTC 2010


Am Montag, 30. August 2010, 23:10:00 schrieb James J. Dines:
> I went for a third option (applying Yann's patch) and it indeed allows
> the 'make clean' to work.  I remain confused why we did not need this
> patch to do a complete build with make 3.81 however.  I just tried it
> again, and I do not get the error message on my other machine with 3.81
> even without the patch.

From make 3.82's NEWS file:

* WARNING: Backward-incompatibility!
  As a result of parser enhancements, three backward-compatibility issues
  exist: first, a prerequisite containing an "=" cannot be escaped with a
  backslash any longer.  [...].  Second, variable names can no
  longer contain whitespace, unless you put the whitespace in a variable and
  use the variable.  Third, in previous versions of make it was sometimes
  not flagged as an error for explicit and pattern targets to appear in the
  same rule.  Now this is always reported as an error.


What you're referring to re the kernel Makefile is the third mentioned issue.  
What happens with atk.mk is the second one instead:

The incorrent Makefile snippet:

ATK_CONF_OPT =  --enable-shared \
                --enable-static
                --disable-glibtest --enable-explicit-deps=no \
                --disable-debug

assigns the vaue "--enable-shared --enable-static" to a variable named 
"ATK_CONF_OPT" and the value "no --disable-debug" to a variable named "--
disable-glibtest --enable-explicit-deps".

I didn't know variable names with spaces (and even leading hyphens) were 
allowed prior to 3.82, but that made make not barf on the above while of 
course depriving $(ATK_CONF_OPT) of some of the options.

Cheers
Malte


More information about the buildroot mailing list