+MOFILES = po/en.mo po/en_US.mo
+]])
+
+LINGUAS='en_US'; export LINGUAS; TEST_CONFIGURE([JOIN=false])
+
+AT_CHECK([cat test], [0],
+[[POFILES = po/en.po po/en_US.po po/ja.po po/zh.po
+MOFILES = po/en.mo po/en_US.mo
+]])
+
+PATH=$save_PATH
+
+AT_CLEANUP
+
+AT_SETUP([DX_BASENAME])
+AT_KEYWORDS([DX_BASENAME macro])
+
+AT_DATA([test.in], [[@base0@
+@base1@
+@base2@
+@base3@
+]])
+
+TEST_CONFIGURE_AC(
+[[DX_BASENAME([base0], ["hello"])
+DX_BASENAME([base1], ["foo/bar"])
+DX_BASENAME([base2], ["/foo/bar/baz"])
+DX_BASENAME([base3], ["hello world"])
+AC_SUBST([base0])
+AC_SUBST([base1])
+AC_SUBST([base2])
+AC_SUBST([base3])
+AC_CONFIG_FILES([test])
+]])
+TEST_AUTORECONF
+
+TEST_CONFIGURE
+AT_CHECK([cat test], [0], [hello
+bar
+baz
+hello world
+])
+
+AT_CLEANUP
+
+AT_SETUP([DX_PROG_JOIN distribution])
+AT_KEYWORDS([DX_PROG_JOIN macro])
+
+TEST_CONFIGURE_AC([[AM_INIT_AUTOMAKE([foreign])
+DX_PROG_JOIN
+AC_CONFIG_FILES([Makefile])
+]])
+
+AT_DATA([Makefile.am],
+[[foo: ; printf '%s\n' $(DX_BASEDIR) $(DISTFILES)
+]])
+TEST_AUTORECONF
+
+TEST_CONFIGURE
+AT_CHECK([make -s foo], [0], [stdout])
+AT_CHECK([exec 3<stdout
+read basedir <&3; while read f <&3; do
+ test x"$f" = x"$basedir/scripts/join.awk" && exit
+done
+exit 1])
+
+AT_CLEANUP
+
+m4_define([TEST_SYMFILES_INIT],
+[TEST_CONFIGURE_AC([[AM_INIT_AUTOMAKE([foreign])
+AM_PROG_CC_C_O
+AC_SUBST([GLSRC], [.])
+DX_AUTOMAKE_COMPAT
+DX_GNULIB_SYMFILES([symfiles.lst])
+AC_CONFIG_FILES([Makefile])
+]])
+
+cp "$srcdir/snippet/glconfig.mk" .
+AT_DATA([Makefile.am],
+[[CLEANFILES =
+DISTCLEANFILES =
+
+# automake won't emit this without sources but we expect it to be set
+am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+
+gnulib_headers =
+gnulib_objects = a.o c.o b.o e.o d.o
+gnulib_all_symfiles = $(gnulib_objects:.o=.glsym)
+gnulib_symfiles = $(gnulib_all_symfiles)
+
+do_test:
+ printf '%s\n' $(gnulib_symfiles) | LC_ALL=C sort; \
+ echo ///; printf '%s\n' $(gnulib_extra_objects) | LC_ALL=C sort
+.PHONY: do_test
+
+include $(top_srcdir)/glconfig.mk
+]])])
+
+AT_SETUP([DX_GNULIB_SYMFILES])
+AT_KEYWORDS([DX_GNULIB_SYMFILES macro])
+
+TEST_SYMFILES_INIT
+AT_DATA([symfiles.lst],
+[[b.foo
+d.bar
+]])
+TEST_AUTORECONF
+
+TEST_CONFIGURE
+AT_CHECK([make -s do_test], [0], [[b.glsym
+d.glsym
+///
+a.o
+c.o
+e.o
+]])
+
+dnl verify rebuild rule insertion
+sed '/^gnulib_objects/s/b[[.]]o//' Makefile.in >tmp
+mv -f tmp Makefile.in
+AT_CHECK([make -s do_test >rebuild.out &&
+ sed '/^config.status:/,$!d' rebuild.out], [0],
+[[config.status: creating Makefile
+config.status: executing depfiles commands
+config.status: executing gnulib-symfiles commands
+d.glsym
+///
+a.o
+c.o
+e.o
+]])
+
+AT_CLEANUP
+
+AT_SETUP([DX_GNULIB_SYMFILES separate srcdir])
+AT_KEYWORDS([DX_GNULIB_SYMFILES macro vpath])
+
+TEST_SYMFILES_INIT
+AT_DATA([symfiles.lst])
+TEST_AUTORECONF
+
+mkdir build && cd build
+TEST_CONFIGURE([], [../configure])
+AT_CHECK([make -s do_test], [0], [[
+///
+a.o
+b.o
+c.o
+d.o
+e.o
+]])
+cd ..
+
+AT_CLEANUP
+
+AT_SETUP([DX_GNULIB_SYMFILES shortname])
+AT_KEYWORDS([DX_GNULIB_SYMFILES macro])
+
+TEST_SYMFILES_INIT
+
+sed '/GNULIB_SYMFILES/c\
+[DX_GNULIB_SYMFILES([symfiles.lst], [x])]' configure.ac >configure.tmp
+sed '/gnulib_objects/s|$| a/b.o a/b/c.o|' Makefile.am >Makefile.tmp
+mv -f configure.tmp configure.ac
+mv -f Makefile.tmp Makefile.am
+
+AT_DATA([symfiles.lst],
+[[b.c
+c.c
+d.c
+e.c
+]])
+TEST_AUTORECONF
+
+TEST_CONFIGURE
+AT_CHECK([make -s do_test], [0],
+[[b.glsym
+c.glsym
+d.glsym
+e.glsym
+///
+a/b/x-c.o
+a/x-b.o
+x-a.o
+]])
+
+AT_CLEANUP
+
+AT_SETUP([DX_GNULIB_SYMFILES distribution])
+AT_KEYWORDS([DX_GNULIB_SYMFILES macro])
+
+TEST_CONFIGURE_AC([[AM_INIT_AUTOMAKE([foreign])
+DX_GNULIB_SYMFILES([symfiles.lst])
+AC_CONFIG_FILES([Makefile])
+]])
+
+AT_DATA([symfiles.lst])
+AT_DATA([Makefile.am],
+[[foo: ; printf '%s\n' $(top_srcdir) $(DISTFILES)
+]])
+TEST_AUTORECONF
+
+TEST_CONFIGURE
+AT_CHECK([make -s foo], [0], [stdout])
+AT_CHECK([exec 3<stdout
+read basedir <&3; while read f <&3; do
+ test x"$f" = x"$basedir/symfiles.lst" && exit
+done
+exit 1])
+
+AT_CLEANUP
+
+AT_SETUP([DX_EXPORTED_SH])
+AT_KEYWORDS([DX_EXPORTED_SH exported.sh macro])
+
+AT_DATA([helpopt.nm],
+[[0000000000000000 r .LC0
+000000000000001e r .LC1
+0000000000000025 r .LC2
+ U __errno_location
+ U __printf_chk
+ U __stack_chk_fail
+0000000000000000 T arg_to_int
+0000000000000000 b dummy.0
+ U help_print_optstring
+0000000000000000 T main
+00000000000000c0 T print_opt
+ U strchr
+ U strerror
+ U strtol
+ U tap_bail_out
+]])
+
+AT_DATA([helpopt-shared.lo],
+[[pic_object=helpopt.nm
+non_pic_object=none