X-Git-Url: http://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/5865ffc2d8b828aa78235fbdcf9dfe18a8799980..f99c550277c5973dbd614e1a814ca79bed3afd9b:/tests/macros.at?ds=sidebyside diff --git a/tests/macros.at b/tests/macros.at index 3f39fbd..a085ad6 100644 --- a/tests/macros.at +++ b/tests/macros.at @@ -339,3 +339,261 @@ 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