Re: Require GNU make to build binutils-gdb

Paul Smith
2016-11-17T20:43:03Z

Regarding the patch linked to earlier, I wonder why multiple pattern
rules were added, rather than just using VPATH plus a few pattern rules
/ explicit rules for the special cases?

I didn't check carefully.

On Thu, 2016-11-17 at 15:33 -0500, Simon Marchi wrote:
> But as Andreas Schwab mentioned in our earlier discussions, there is
> already such a check for gcc:
>
> Â Â  @if gcc
> Â Â  ifeq (,$(.VARIABLES)) # The variable .VARIABLES, new with 3.80, is
> never empty.
> Â Â  $(error GNU make version 3.80 or newer is required.)
> Â Â  endif
> Â Â  @endif gcc
>
> Since we don't have a particular reason to want 3.81 over 3.80, we could
> just re-use this check (make it unconditional), if that makes it easier.

If you want to check for 3.81, you could look for the .FEATURES variable
instead of .VARIABLES; .FEATURES was introduced in 3.81 and is intended
to let your makefile query what features are available without worrying
about specific versions.

It's also never empty, if it exists. It has one nice advantage in that
it's a static value, while .VARIABLES requires GNU make to create a list
of the names of all the variables. But, if this check is done early
that's not such a big deal.

3.81 was released 10.5 years ago (Apr 2006).

> > for sim/, i have no problem having it follow gdb, although i was
> > planning on converting it to automake ...
>
> I think that's a good thing then, automake probably plays better with
> GNU make than other makes.

automake, technically, generates POSIX compliant makefiles that don't
rely on GNU make features at all and should work with a wide range of
different make implementations.

At least, that's how it is unless something has changed since I looked
last.