#! /bin/sh # Copyright (C) 2012-2022 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The info, html, pdf, ps and dvi targets shouldn't let clutter in the # build directory. Related to automake bug#11146. required='makeinfo tex texi2dvi dvips' . test-init.sh cat >> configure.ac <<'END' AC_CONFIG_FILES([sub/Makefile]) AC_OUTPUT END cat > Makefile.am << 'END' all-local: ps pdf dvi html # For "make distcheck". info_TEXINFOS = foo.texi doc/bar.texi baz.texi SUBDIRS = sub # Tell GNU make not to parallelize these, because they # have overlap between explicit and intermediate .dvi files. .NOTPARALLEL: END mkdir sub doc cat > sub/Makefile.am << 'END' all-local: ps pdf dvi html # For "make distcheck". info_TEXINFOS = baz.texi END cat > foo.texi << 'END' \input texinfo @setfilename foo.info @settitle foo @node Top Hello walls. @include version.texi @bye END cat > doc/bar.texi << 'END' \input texinfo @setfilename bar.info @settitle bar @node Top Hello walls. @include version2.texi @bye END cat > baz.texi << 'END' \input texinfo @setfilename baz.info @settitle baz @defindex au @defindex sa @defindex sb @node Top Hello walls. @cindex foo foo @pindex bar bar @auindex baz baz @saindex sa sa @sbindex sb sb @bye END cp baz.texi sub $ACLOCAL $AUTOMAKE --add-missing $AUTOCONF ./configure # Try one by one, to ensure later targets don't involuntarily # clean up potential cruft left by earlier ones. for fmt in info pdf ps dvi html all; do $MAKE $fmt # For debugging. ls -l . doc sub # Sanity check. case $fmt in html) test -e foo.html test -e doc/bar.html test -e baz.html test -e sub/baz.html ;; all) for x in info pdf ps dvi; do test -f foo.$x test -f doc/bar.$x test -f baz.$x test -f sub/baz.$x done test -e foo.html test -e doc/bar.html test -e baz.html test -e sub/baz.html ;; *) test -f foo.$fmt test -f doc/bar.$fmt test -f baz.$fmt test -f sub/baz.$fmt ;; esac # Real test. ls -d foo* baz* sub/baz* doc/bar* > lst basename_rx='(foo|doc/bar|baz|sub/baz)' case $fmt in pdf) extension_rx="(texi|pdf|t2p)";; dvi) extension_rx="(texi|dvi|t2d)";; ps) extension_rx="(texi|ps|dvi|t2d)";; info) extension_rx="(texi|info)";; html) extension_rx="(texi|html)";; all) extension_rx="(texi|html|info|pdf|ps|dvi|t2[pd])";; *) fatal_ "unreachable code reached";; esac $EGREP -v "^$basename_rx\.$extension_rx$" lst && exit 1 # Cleanup for checks on the next format. case $fmt in info) rm -f *.info doc/*.info sub/*.info;; *) $MAKE clean;; esac done $MAKE distcheck :