Tests: Make the config.h grep patterns Meson compatible

Now the test scripts detect both

    #define HAVE_DECODER_ARM
    #define HAVE_DECODER_ARM 1

as support for the ARM filter without confusing it with these:

    #define HAVE_DECODER_ARM64
    #define HAVE_DECODER_ARM64 1

Previously only the ones ending with " 1" were accepted for
the macros where this kind of confusion was possible.

This should help with Meson support because Meson's built-in
features produce config.h entries that are either

    #define FOO 1
    #define FOO 0

or:

    #define FOO
    #undef FOO

The former method has a benefit that one can use "#if FOO" and -Wundef
will catch if a #define is missing (for example, it helps catching
typos). But XZ Utils has to use the latter since it has been
convenient with Autoconf's default behavior.[*] While it's easy to
emulate the Autoconf style (#define FOO 1 vs. no #define at all)
in Meson, it results in clumsy code. Thus it's better to change
the few places in the tests where this difference matters.

[*] While most checks in Autoconf default to the second style above,
    a few things use the first style (like AC_CHECK_DECLS). The mix
    of both styles is the most confusing as one has to remember which
    macro needs #ifdef and which #if. Currently HAVE_VISIBILITY is
    only such config.h entry that is 1 or 0. It comes unmodified
    from Gnulib's visibility.m4.
This commit is contained in:
Lasse Collin 2024-05-20 16:55:00 +03:00
parent 9d997d6f9d
commit 56f1d5ed68
2 changed files with 3 additions and 3 deletions

View File

@ -142,9 +142,9 @@ test_xz -4
test_filter() test_filter()
{ {
if test -f ../config.h ; then if test -f ../config.h ; then
grep "define HAVE_ENCODER_$1 1" ../config.h > /dev/null \ grep "define HAVE_ENCODER_$1[ 1]*\$" ../config.h > /dev/null \
|| return || return
grep "define HAVE_DECODER_$1 1" ../config.h > /dev/null \ grep "define HAVE_DECODER_$1[ 1]*\$" ../config.h > /dev/null \
|| return || return
fi fi
shift shift

View File

@ -39,7 +39,7 @@ EXIT_STATUS=0
have_feature() have_feature()
{ {
test -f ../config.h || return 0 test -f ../config.h || return 0
grep "define HAVE_$1 1" ../config.h > /dev/null && return 0 grep "define HAVE_$1[ 1]*\$" ../config.h > /dev/null && return 0
printf '%s: Skipping because HAVE_%s is not enabled\n' "$2" "$1" printf '%s: Skipping because HAVE_%s is not enabled\n' "$2" "$1"
EXIT_STATUS=77 EXIT_STATUS=77
return 1 return 1