manpagez: man pages & more
info automake
Home | html | info | man
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

27.3 Why doesn't Automake support wildcards?

Developers are lazy. They often would like to use wildcards in ‘Makefile.am’s, so they don't need to remember they have to update ‘Makefile.am’s every time they add, delete, or rename a file.

There are several objections to this:

Still, these are philosophical objections, and as such you may disagree, or find enough value in wildcards to dismiss all of them. Before you start writing a patch against Automake to teach it about wildcards, let's see the main technical issue: portability.

Although ‘$(wildcard ...)’ works with GNU make, it is not portable to other make implementations.

The only way Automake could support $(wildcard ...) is by expending $(wildcard ...) when automake is run. Resulting ‘Makefile.in’s would be portable since they would list all files and not use ‘$(wildcard ...)’. However that means developers need to remember they must run automake each time they add, delete, or rename files.

Compared to editing ‘Makefile.am’, this is really little win. Sure, it's easier and faster to type ‘automake; make’ than to type ‘emacs Makefile.am; make’. But nobody bothered enough to write a patch add support for this syntax. Some people use scripts to generated file lists in ‘Makefile.am’ or in separate ‘Makefile’ fragments.

Even if you don't care about portability, and are tempted to use ‘$(wildcard ...)’ anyway because you target only GNU Make, you should know there are many places where Automake need to know exactly which files should be processed. As Automake doesn't know how to expand ‘$(wildcard ...)’, you cannot use it in these places. ‘$(wildcard ...)’ is a black box comparable to AC_SUBSTed variables as far Automake is concerned.

You can get warnings about ‘$(wildcard ...’) constructs using the ‘-Wportability’ flag.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.