#! /bin/sh
. "${srcdir=.}/init.sh"; path_prepend_ . ../src

# Test the autopoint program, without Automake.

: ${AUTOCONF=autoconf}
${AUTOCONF} --version >/dev/null 2>/dev/null \
  || { echo "Skipping test: autoconf not found"; Exit 77; }

cat <<\EOF >configure.ac
AC_PREREQ([2.60])
EOF

${AUTOCONF} >/dev/null 2>/dev/null \
  || { echo "Skipping test: autoconf version too old"; Exit 77; }

rm -f configure.ac

gettext_datadir=$top_builddir/misc
export gettext_datadir

# Check for not copying libintl source.
cat <<EOF >configure.ac
AC_INIT
AC_CONFIG_SRCDIR(hello.c)
AC_CONFIG_AUX_DIR([build-aux])

AC_PROG_CC
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([$ARCHIVE_VERSION])

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_OUTPUT
EOF

$gettext_datadir/autopoint >/dev/null 2>autopoint.err
test $? = 0 || { cat autopoint.err; Exit 1; }

test ! -d intl || Exit 1
test -d m4 || Exit 1
test -d po || Exit 1
test -d build-aux || Exit 1

test -f m4/po.m4 || Exit 1
test -f po/Makefile.in.in || Exit 1
test -f build-aux/config.rpath || Exit 1

rm -fr m4 po ABOUT-NLS build-aux/config.rpath

# Check for copying libintl source of the current version.
cat <<EOF >configure.ac
AC_INIT
AC_CONFIG_SRCDIR(hello.c)

AC_PROG_CC
AM_GNU_GETTEXT
AM_GNU_GETTEXT_VERSION([$ARCHIVE_VERSION])

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_OUTPUT
EOF

$gettext_datadir/autopoint >/dev/null 2>autopoint.err
test $? = 1 || { cat autopoint.err; Exit 1; }

rm -fr intl m4 po ABOUT-NLS config.rpath

# Check for copying libintl source of an older version.
cat <<EOF >configure.ac
AC_INIT
AC_CONFIG_SRCDIR(hello.c)

AC_PROG_CC
AM_GNU_GETTEXT
AM_GNU_GETTEXT_VERSION([0.19])

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_OUTPUT
EOF

$gettext_datadir/autopoint >/dev/null 2>autopoint.err
test $? = 0 || { cat autopoint.err; Exit 1; }

test -d intl || Exit 1
test -d m4 || Exit 1
test -d po || Exit 1

test -f intl/VERSION || Exit 1
test -f m4/po.m4 || Exit 1
test -f po/Makefile.in.in || Exit 1

rm -fr intl m4 po ABOUT-NLS config.rpath

# Check for custom macro directory.
cat <<EOF >configure.ac
AC_INIT
AC_CONFIG_SRCDIR(hello.c)

AC_PROG_CC
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([$ARCHIVE_VERSION])

# first macro directory, in which po.m4, etc. belong
AC_CONFIG_MACRO_DIR([gettext-m4])

# second macro directory
AC_CONFIG_MACRO_DIR([m4])

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_OUTPUT
EOF

$gettext_datadir/autopoint >/dev/null 2>autopoint.err
test $? = 0 || { cat autopoint.err; Exit 1; }

test ! -d intl || Exit 1
test ! -d m4 || Exit 1
test -d gettext-m4 || Exit 1
test -d po || Exit 1

test -f gettext-m4/po.m4 || Exit 1
test -f po/Makefile.in.in || Exit 1

rm -fr gettext-m4 po ABOUT-NLS config.rpath

# Check for multiple arguments to AM_GNU_GETTEXT
# <https://savannah.gnu.org/bugs/?40082>
cat <<EOF >configure.ac
AC_INIT
AC_CONFIG_SRCDIR(hello.c)

AC_PROG_CC
AM_GNU_GETTEXT([external], [need-formatstring-macros])
AM_GNU_GETTEXT_VERSION([$ARCHIVE_VERSION])

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_OUTPUT
EOF

$gettext_datadir/autopoint >/dev/null 2>autopoint.err
test $? = 0 || { cat autopoint.err; Exit 1; }

test ! -d intl || Exit 1
test -d m4 || Exit 1
test -d po || Exit 1

test -f m4/po.m4 || Exit 1
test -f po/Makefile.in.in || Exit 1

rm -fr m4 po ABOUT-NLS config.rpath

# Check for certain built-in macros are not in effect when tracing:
# <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=764580>
cat <<EOF >configure.ac
AC_INIT
AC_CONFIG_SRCDIR(hello.c)

dnl m4_shiftn internally calls m4_assert, which is disabled by autopoint
m4_define([_gt_recurse],
[m4_ifblank([\$1], , [_gt_recurse(m4_shiftn(1, \$@))])])
_gt_recurse([a], [b], , [c])

AC_PROG_CC
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([$ARCHIVE_VERSION])

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_OUTPUT
EOF

$gettext_datadir/autopoint >/dev/null 2>autopoint.err
test $? = 0 || { cat autopoint.err; Exit 1; }

test ! -d intl || Exit 1
test -d m4 || Exit 1
test -d po || Exit 1

test -f m4/po.m4 || Exit 1
test -f po/Makefile.in.in || Exit 1

rm -fr m4 po ABOUT-NLS config.rpath

# Check for AM_GNU_GETTEXT_REQUIRE_VERSION.
cat <<EOF >configure.ac
AC_INIT
AC_CONFIG_SRCDIR(hello.c)

AC_PROG_CC
AM_GNU_GETTEXT_REQUIRE_VERSION([0.19])
AM_GNU_GETTEXT([external])

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_OUTPUT
EOF

$gettext_datadir/autopoint >/dev/null 2>autopoint.err
test $? = 0 || { cat autopoint.err; Exit 1; }

test ! -d intl || Exit 1
test -d m4 || Exit 1
test -d po || Exit 1

test -f m4/po.m4 || Exit 1
test -f po/Makefile.in.in || Exit 1

# Check for the case where both AM_GNU_GETTEXT_REQUIRE_VERSION and
# AM_GNU_GETTEXT_VERSION are used. Once with libintl source.
cat <<EOF >configure.ac
AC_INIT
AC_CONFIG_SRCDIR(hello.c)

AC_PROG_CC
AM_GNU_GETTEXT
AM_GNU_GETTEXT_REQUIRE_VERSION([0.19])
# This shall be ignored when AM_GNU_GETTEXT_REQUIRE_VERSION is defined
AM_GNU_GETTEXT_VERSION([0.19])

AC_CONFIG_MACRO_DIR([m4])

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_OUTPUT
EOF

$gettext_datadir/autopoint >autopoint.out 2>autopoint.err
test $? = 1 || { cat autopoint.err; Exit 1; }

# Check for the case where both AM_GNU_GETTEXT_REQUIRE_VERSION and
# AM_GNU_GETTEXT_VERSION are used. Once without libintl source.
cat <<EOF >configure.ac
AC_INIT
AC_CONFIG_SRCDIR(hello.c)

AC_PROG_CC
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_REQUIRE_VERSION([0.19])
# This shall be ignored when AM_GNU_GETTEXT_REQUIRE_VERSION is defined
AM_GNU_GETTEXT_VERSION([0.19])

AC_CONFIG_MACRO_DIR([m4])

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([po/Makefile.in])
AC_OUTPUT
EOF

$gettext_datadir/autopoint >autopoint.out 2>autopoint.err
test $? = 0 || { cat autopoint.err; Exit 1; }

grep 'using AM_GNU_GETTEXT_REQUIRE_VERSION' autopoint.out 2>&1 >/dev/null || Exit 1

test ! -d intl || Exit 1
test -d m4 || Exit 1
test -d po || Exit 1

test -f m4/po.m4 || Exit 1
test -f po/Makefile.in.in || Exit 1
