diff options
-rw-r--r-- | t/list-of-tests.mk | 4 | ||||
-rw-r--r-- | t/subobj-indir-pr13928.sh | 49 | ||||
-rw-r--r-- | t/subobj-vpath-pr13928.sh | 60 |
3 files changed, 113 insertions, 0 deletions
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index 68ca58cfe..1d7cf8711 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -40,6 +40,8 @@ t/java-nobase.sh \ t/objext-pr10128.sh \ t/remake-timing-bug-pr8365.sh \ t/lex-subobj-nodep.sh \ +t/subobj-indir-pr13928.sh \ +t/subobj-vpath-pr13928.sh \ t/remake-am-pr10111.sh \ t/remake-m4-pr10111.sh \ $(perl_fake_XFAIL_TESTS) @@ -1034,6 +1036,8 @@ t/subobj11c.sh \ t/subobjname.sh \ t/subobj-clean-pr10697.sh \ t/subobj-clean-lt-pr10697.sh \ +t/subobj-indir-pr13928.sh \ +t/subobj-vpath-pr13928.sh \ t/subpkg.sh \ t/subpkg2.sh \ t/subpkg3.sh \ diff --git a/t/subobj-indir-pr13928.sh b/t/subobj-indir-pr13928.sh new file mode 100644 index 000000000..11b865c8e --- /dev/null +++ b/t/subobj-indir-pr13928.sh @@ -0,0 +1,49 @@ +#! /bin/sh +# Copyright (C) 2013 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 <http://www.gnu.org/licenses/>. + +# Expose part of Automake bug#13928: config.status generates broken +# makefiles if the subdir-objects option is used and a _SOURCES +# variable lists sources whose directory part is specified as a +# make variable ("foo_SOURCES = $(src)/foo.c"). + +required=cc +. test-init.sh + +cat >> configure.ac << 'END' +AC_PROG_CC +AM_PROG_CC_C_O +AC_OUTPUT +END + +cat > Makefile.am <<'END' +AUTOMAKE_OPTIONS = subdir-objects +src = s +bin_PROGRAMS = foo +foo_SOURCES = $(src)/foo.c +END + +mkdir s +echo 'int main(void) { return 0; }' > s/foo.c + +$ACLOCAL && $AUTOCONF && $AUTOMAKE -a || fatal_ "autotools failed" + +./configure +$MAKE +test -f s/.deps/foo.Po +find . | $FGREP '$(src)' && exit 1 +$MAKE distcheck + +: diff --git a/t/subobj-vpath-pr13928.sh b/t/subobj-vpath-pr13928.sh new file mode 100644 index 000000000..96cb219d8 --- /dev/null +++ b/t/subobj-vpath-pr13928.sh @@ -0,0 +1,60 @@ +#! /bin/sh +# Copyright (C) 2013 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 <http://www.gnu.org/licenses/>. + +# Expose part of automake bug#13928: if the subdir-objects option is +# in use and a source file is listed in a _SOURCES variable with a +# leading $(srcdir) component, Automake will generate a Makefile that +# tries to create the corresponding object file in $(srcdir) as well. + +required=cc +. test-init.sh + +cat >> configure.ac << 'END' +AC_PROG_CC +AM_PROG_CC_C_O +AC_OUTPUT +END + +cat > Makefile.am <<'END' +AUTOMAKE_OPTIONS = subdir-objects +noinst_PROGRAMS = test +test_SOURCES = $(srcdir)/test.c +test-objs: + test ! -f $(srcdir)/test.$(OBJEXT) + test -f test.$(OBJEXT) +END + +$ACLOCAL && $AUTOCONF && $AUTOMAKE -a || fatal_ "autotools failed" + +$EGREP 'test\.|DEPDIR|dirstamp|srcdir' Makefile.in || : # For debugging. +$EGREP '\$.srcdir./test\.[o$]' Makefile.in && exit 1 +$FGREP '$(srcdir)/$(am__dirstamp)' Makefile.in && exit 1 +$FGREP '$(srcdir)/$(DEPDIR)' && exit 1 + +cat > test.c << 'END' +int main (void) +{ + return 0; +} +END + +mkdir build && cd build || fatal "preparation of build directory failed" +../configure || fatal_ "./configure failed" + +$MAKE +$MAKE test-objs + +: |