diff options
Diffstat (limited to 't/subobj.sh')
-rw-r--r-- | t/subobj.sh | 64 |
1 files changed, 55 insertions, 9 deletions
diff --git a/t/subobj.sh b/t/subobj.sh index 2431184b6..f595e68ad 100644 --- a/t/subobj.sh +++ b/t/subobj.sh @@ -14,32 +14,78 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -# Test of subdir objects with C. +# Test of subdir objects with C and C++. . test-init.sh -cat >> configure.ac << 'END' +cat >> configure.ac <<'END' AC_PROG_CC -AM_PROG_CC_C_O +AC_PROG_CXX +AC_PROG_YACC +AC_CONFIG_FILES([sub/Makefile]) +AC_OUTPUT END +$ACLOCAL +: > ylwrap + cat > Makefile.am << 'END' -AUTOMAKE_OPTIONS = subdir-objects +SUBDIRS = sub bin_PROGRAMS = wish -wish_SOURCES = generic/a.c generic/b.c +wish_SOURCES = generic/a.c +wish_SOURCES += another/z.cxx END -$ACLOCAL +mkdir sub +cat > sub/Makefile.am << 'END' +dream_SOURCES = generic/b.c more/r.y +bin_PROGRAMS = dream +END + +AUTOMAKE_fails +grep "^Makefile\.am:3:.*'generic/a\.c'.* in a subdirectory" stderr +grep "^Makefile\.am:[34]:.*'another/z\.cxx'.* in a subdirectory" stderr +grep "^sub/Makefile\.am:1:.*'generic/b\.c'.* in a subdirectory" stderr +grep "option 'subdir-objects' is disabled" stderr +# Verbose tips should be given, but not too many times. +for msg in \ + "possible forward-incompatibility" \ + "advi[sc]e.* 'subdir-objects' option throughout" \ + "unconditionally.* object file.* same subdirectory" \ +; do + test $(grep -c "$msg" stderr) -eq 1 +done + +# Guard against stupid typos. +grep 'subdir-object([^s]|$)' stderr && exit 1 + +$AUTOMAKE -Wno-unsupported + +echo AUTOMAKE_OPTIONS = subdir-objects >> Makefile.am +AUTOMAKE_fails +grep "^Makefile\.am" stderr && exit 1 +grep "^sub/Makefile\.am:.*'generic/b\.c'.* in a subdirectory" stderr +grep "option 'subdir-objects' is disabled" stderr + +sed 's/^AM_INIT_AUTOMAKE/&([subdir-objects])/' configure.ac > configure.tmp +mv -f configure.tmp configure.ac +$ACLOCAL --force +$AUTOMAKE + +rm -f compile $AUTOMAKE --add-missing 2>stderr || { cat stderr >&2; exit 1; } cat stderr >&2 # Make sure compile is installed, and that Automake says so. -grep 'install.*compile' stderr +grep '^configure\.ac:[48]:.*install.*compile' stderr test -f compile grep '^generic/a\.\$(OBJEXT):' Makefile.in -grep '[^/]a\.\$(OBJEXT)' Makefile.in && exit 1 +grep '^generic/b\.\$(OBJEXT):' sub/Makefile.in +grep '^another/z\.\$(OBJEXT):' Makefile.in +$EGREP '(^|[^/])[abz]\.\$(OBJEXT)' Makefile.in sub/Makefile.in && exit 1 # Opportunistically test for a different bug. -grep '^generic/b\.\$(OBJEXT):.*dirstamp' Makefile.in +grep '^another/z\.\$(OBJEXT):.*dirstamp' Makefile.in +grep '^generic/b\.\$(OBJEXT):.*dirstamp' sub/Makefile.in : |