Tag
Hash :
a598e3dc
Author :
Date :
2002-04-24T07:36:00
Fix PR automake/315: * automake.in (subobjname): Rewrite to generate variable name unique for each content. (%substnums): Remove. (%subobjvar): New hash. (initialize_per_input): Clear %subobjvar. (define_objects_from_sources): Return the name of the variable defined, in addition to the linker. Call subobjname only once the content of the variable to define is known. (handle_source_transform): Adjust call to define_objects_from_sources. * tests/specflags8.test: Mention PR 315. * tests/subobjname.test: New file. * tests/Makefile.am (XFAIL_TESTS): Remove specflags8.test. (TESTS): Add subobjname.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
#! /bin/sh
# Make sure we reuse variables whenever possible, to limit
# combinational explosion. (This test is named after the &subobjname
# sub in Automake).
. $srcdir/defs || exit 1
set -e
cat >> configure.in << 'END'
AC_PROG_CC
AM_CONDITIONAL([FOO1], [some test])
AM_CONDITIONAL([FOO2], [some test])
AM_CONDITIONAL([FOO3], [some test])
AC_OUTPUT
END
cat > Makefile.am << 'END'
noinst_PROGRAMS = c d
if FOO1
A1=a1.c
endif
if FOO2
A2=a2.c
endif
if FOO3
A3=a3.c
endif
B=$(A1) $(A2) $(A3)
c_SOURCES=$(B)
d_SOURCES=$(B)
END
$ACLOCAL
$AUTOMAKE -a
# Sanity check: make sure am_c_OBJECTS and am_d_OBJECTS are used
# in the Makefile. (This is an internal detail, so better make
# sure we update this test if the naming changes in the future.)
grep '^am_c_OBJECTS = ' Makefile.in
grep '^am_d_OBJECTS = ' Makefile.in
# Now the actual test. Are both values equal?
cobj=`sed -n '/^am_c_OBJECTS = / {
s/.* = \(.*\)$/\1/
p
}' Makefile.in`
dobj=`sed -n '/^am_d_OBJECTS = / {
s/^.* = \(.*\)$/\1/
p
}' Makefile.in`
test "$cobj" = "$dobj"