
On 04.09.2013 04:41, Eric Blake wrote:
Automake has builtin support to prevent botched conditional nesting, but only if you use: if FOO else !FOO endif !FOO
An example error message when using the wrong name:
daemon/Makefile.am:378: error: else reminder (LIBVIRT_INIT_SCRIPT_SYSTEMD_TRUE) incompatible with current conditional: LIBVIRT_INIT_SCRIPT_SYSTEMD_FALSE daemon/Makefile.am:381: error: endif reminder (LIBVIRT_INIT_SCRIPT_SYSTEMD_TRUE) incompatible with current conditional: LIBVIRT_INIT_SCRIPT_SYSTEMD_FALSE
As our makefiles tend to have quite a bit of nested conditionals, it's better to take advantage of the benefits of the build system double-checking that our conditionals are well-nested, but that requires a syntax check to enforce our usage stye.
Alas, unlike C preprocessor and spec files, we can't use indentation to make it easier to see how deeply nesting goes.
* cfg.mk (sc_makefile_conditionals): New rule. * daemon/Makefile.am: Enforce the style. * gnulib/tests/Makefile.am: Likewise. * python/Makefile.am: Likewise. * src/Makefile.am: Likewise. * tests/Makefile.am: Likewise. * tools/Makefile.am: Likewise.
Signed-off-by: Eric Blake <eblake@redhat.com> --- cfg.mk | 8 ++ daemon/Makefile.am | 64 +++++----- gnulib/tests/Makefile.am | 2 +- python/Makefile.am | 4 +- src/Makefile.am | 326 +++++++++++++++++++++++------------------------ tests/Makefile.am | 130 +++++++++---------- tools/Makefile.am | 14 +- 7 files changed, 278 insertions(+), 270 deletions(-)
ACK Michal