From 2bea1e4899bfe8df868f34a8849ef879d266c9a2 Mon Sep 17 00:00:00 2001 From: Richard Boulton Date: Wed, 8 Aug 2001 17:42:25 +0000 Subject: [PATCH] 2001-08-08 Richard Boulton * tests/cond18.test: New file. * tests/cond19.test: New file. * tests/cond20.test: New file. * tests/cond4.test: Updated to check the generated _OBJECTS more thoroughly. * tests/Makefile.am (TESTS): Added cond18.test, cond19.test and cond20.test --- ChangeLog | 10 +++++++ tests/Makefile.am | 3 +++ tests/Makefile.in | 3 +++ tests/cond18.test | 55 +++++++++++++++++++++++++++++++++++++ tests/cond19.test | 69 +++++++++++++++++++++++++++++++++++++++++++++++ tests/cond20.test | 38 ++++++++++++++++++++++++++ tests/cond4.test | 38 ++++++++++++++++++++++---- 7 files changed, 211 insertions(+), 5 deletions(-) create mode 100755 tests/cond18.test create mode 100755 tests/cond19.test create mode 100755 tests/cond20.test diff --git a/ChangeLog b/ChangeLog index 76ae5ce1..51bef8e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2001-08-08 Richard Boulton + + * tests/cond18.test: New file. + * tests/cond19.test: New file. + * tests/cond20.test: New file. + * tests/cond4.test: Updated to check the generated _OBJECTS more + thoroughly. + * tests/Makefile.am (TESTS): Added cond18.test, cond19.test and + cond20.test + 2001-08-08 Richard Boulton * automake.in (file_contents_internal): if a rule is conditionally diff --git a/tests/Makefile.am b/tests/Makefile.am index 174cf3a8..8590ae6f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -71,6 +71,9 @@ cond14.test \ cond15.test \ cond16.test \ cond17.test \ +cond18.test \ +cond19.test \ +cond20.test \ condincl.test \ condincl2.test \ condlib.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 11c605d1..215e8f3a 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -139,6 +139,9 @@ cond14.test \ cond15.test \ cond16.test \ cond17.test \ +cond18.test \ +cond19.test \ +cond20.test \ condincl.test \ condincl2.test \ condlib.test \ diff --git a/tests/cond18.test b/tests/cond18.test new file mode 100755 index 00000000..c1e2b036 --- /dev/null +++ b/tests/cond18.test @@ -0,0 +1,55 @@ +#! /bin/sh + +# Regression test for substitution references to conditional variables. +# Report from Richard Boulton + +. $srcdir/defs || exit 1 + +cat > configure.in << 'END' +AC_INIT(Makefile.am) +AM_INIT_AUTOMAKE(hello,0.23) +AC_PROG_CC +AM_CONDITIONAL(COND1, true) +AM_CONDITIONAL(COND2, true) +AC_OUTPUT(Makefile) +END + +cat > Makefile.am << 'END' + +var1 = dlmain + +if COND1 +var2 = $(var1:=.c) foo.cc +else +var2 = $(var1:=.c) +endif + +if COND2 +var3 = $(var2:.cc=.c) +else +var3 = $(var2:.cc=.c) +endif + +helldl_SOURCES = $(var3) + +echorule: + @echo $(helldl_SOURCES) $(helldl_OBJECTS) + +bin_PROGRAMS = helldl +END + +$needs_autoconf +(gcc -v) > /dev/null 2>&1 || exit 77 +$needs_gnu_make + +set -e + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a + +CC='gcc' ./configure + +val=`$MAKE --no-print-directory echorule`; +echo $val +test "x$val" = "xdlmain.c foo.c dlmain.o foo.o" diff --git a/tests/cond19.test b/tests/cond19.test new file mode 100755 index 00000000..7e9513d1 --- /dev/null +++ b/tests/cond19.test @@ -0,0 +1,69 @@ +#! /bin/sh + +# Regression test for substitution references to conditional variables. +# Report from Richard Boulton + +. $srcdir/defs || exit 1 + +cat > configure.in << 'END' +AC_INIT(Makefile.am) +AM_INIT_AUTOMAKE(hello,0.23) +AC_PROG_CC +AM_CONDITIONAL(COND1, test "x$CONDITION1" = "xtrue") +AM_CONDITIONAL(COND2, test "x$CONDITION2" = "xtrue") +AC_OUTPUT(Makefile) +END + +cat > Makefile.am << 'END' + +var1 = dlmain + +if COND1 +var2 = $(var1:=.c) +else +var2 = $(var1:=.c) +endif + +if COND2 +var3 = $(var2:.c=a.c) +var4 = $(var2:.c=b.c) +else +var3 = $(var2:.c=b.c) +var4 = $(var2:.c=a.c) +endif + +helldl_SOURCES = $(var3:.c=1.c) $(var4:.c=2.c) + +echorule: + @echo $(helldl_SOURCES) $(helldl_OBJECTS) + +bin_PROGRAMS = helldl +END + +$needs_autoconf +(gcc -v) > /dev/null 2>&1 || exit 77 +$needs_gnu_make + +set -e + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a + +CONDITION1=true CONDITION2=true CC='gcc' ./configure +vala=`$MAKE --no-print-directory echorule`; +CONDITION1=true CONDITION2=false CC='gcc' ./configure +valb=`$MAKE --no-print-directory echorule`; +CONDITION1=false CONDITION2=true CC='gcc' ./configure +valc=`$MAKE --no-print-directory echorule`; +CONDITION1=false CONDITION2=false CC='gcc' ./configure +vald=`$MAKE --no-print-directory echorule`; + +echo $vala +echo $valb +echo $valc +echo $vald +test "x$vala" = "xdlmaina1.c dlmainb2.c dlmaina1.o dlmainb2.o" || exit 1 +test "x$valb" = "xdlmainb1.c dlmaina2.c dlmainb1.o dlmaina2.o" || exit 1 +test "x$valc" = "xdlmaina1.c dlmainb2.c dlmaina1.o dlmainb2.o" || exit 1 +test "x$vald" = "xdlmainb1.c dlmaina2.c dlmainb1.o dlmaina2.o" || exit 1 diff --git a/tests/cond20.test b/tests/cond20.test new file mode 100755 index 00000000..6c17c115 --- /dev/null +++ b/tests/cond20.test @@ -0,0 +1,38 @@ +#! /bin/sh + +# Regression test for recursion handling in substitution references to +# conditional variables. + +. $srcdir/defs || exit 1 + +cat > configure.in << 'END' +AC_INIT(Makefile.am) +AM_INIT_AUTOMAKE(hello,0.23) +AC_PROG_CC +AM_CONDITIONAL(COND1, true) +AC_OUTPUT(Makefile) +END + +cat > Makefile.am << 'END' + +var1 = $(var2) + +if COND1 +var2 = $(var1:=.c) foo.cc +else +var2 = $(var1:=.c) +endif + +helldl_SOURCES = $(var2) + +bin_PROGRAMS = helldl +END + +$needs_autoconf + +set -e + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a && exit 1 +$AUTOMAKE -a 2>&1| grep "recursively defined" diff --git a/tests/cond4.test b/tests/cond4.test index 51a13e4c..fd268542 100755 --- a/tests/cond4.test +++ b/tests/cond4.test @@ -5,10 +5,11 @@ . $srcdir/defs || exit 1 cat > configure.in << 'END' -AM_INIT_AUTOMAKE(nonesuch, nonesuch) +AC_INIT(Makefile.am) +AM_INIT_AUTOMAKE(foo,0.0) AC_PROG_CC -AM_CONDITIONAL(ONE, true) -AM_CONDITIONAL(TWO, false) +AM_CONDITIONAL(ONE, test "x$CONDITION1" = "xtrue") +AM_CONDITIONAL(TWO, test "x$CONDITION2" = "xtrue") AC_OUTPUT(Makefile) END @@ -24,9 +25,36 @@ OPT2 = two.c endif targ_SOURCES = main.c $(OPT1) $(OPT2) + +echo-objects: + @echo $(targ_OBJECTS) END +$needs_autoconf + $ACLOCAL || exit 1 $AUTOMAKE || exit 1 - -test "`grep TWO_FALSE Makefile.in | wc -l`" -eq 2 +test "`grep TWO_FALSE Makefile.in | wc -l`" -eq 2 || exit 1 + +$AUTOCONF || exit 1 +(gcc -v) > /dev/null 2>&1 || exit 77 +$needs_gnu_make + +CC='gcc' CONDITION1=true CONDITION2=true ./configure || exit 1 +msgtt=`$MAKE --no-print-directory echo-objects` +CC='gcc' CONDITION1=true CONDITION2=false ./configure || exit 1 +msgtf=`$MAKE --no-print-directory echo-objects` +CC='gcc' CONDITION1=false CONDITION2=true ./configure || exit 1 +msgft=`$MAKE --no-print-directory echo-objects` +CC='gcc' CONDITION1=false CONDITION2=false ./configure || exit 1 +msgff=`$MAKE --no-print-directory echo-objects` + +echo $msgtt +echo $msgtf +echo $msgft +echo $msgff + +test "$msgtt" = "main.o one.o two.o" || exit 1 +test "$msgtf" = "main.o one.o" || exit 1 +test "$msgft" = "main.o two.o" || exit 1 +test "$msgff" = "main.o" || exit 1 -- 2.43.5