mirror of
git://git.sv.gnu.org/autoconf
synced 2025-02-05 11:10:57 +08:00
Improve VPATH handling in config.status for non-Automake projects.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILES_PREPARE): Be sure not to remove references to a subdir of srcdir. Fix treatment of multiple colon-separated VPATH entries. * tests/torture.at (VPATH): New test. Report by Keith Marshall. Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
This commit is contained in:
parent
d11a65ced6
commit
7eccc094e8
@ -1,5 +1,12 @@
|
|||||||
2010-06-23 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
2010-06-23 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||||
|
|
||||||
|
Improve VPATH handling in config.status for non-Automake projects.
|
||||||
|
* lib/autoconf/status.m4 (_AC_OUTPUT_FILES_PREPARE): Be sure not
|
||||||
|
to remove references to a subdir of srcdir. Fix treatment of
|
||||||
|
multiple colon-separated VPATH entries.
|
||||||
|
* tests/torture.at (VPATH): New test.
|
||||||
|
Report by Keith Marshall.
|
||||||
|
|
||||||
Further improve docs about nested double-quotes and backquotes.
|
Further improve docs about nested double-quotes and backquotes.
|
||||||
* doc/autoconf.texi (Shellology): Remove anchor for pdksh.
|
* doc/autoconf.texi (Shellology): Remove anchor for pdksh.
|
||||||
Move quoting bug example to ...
|
Move quoting bug example to ...
|
||||||
|
@ -552,17 +552,25 @@ fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
|
|||||||
|| AC_MSG_ERROR([could not setup config files machinery])
|
|| AC_MSG_ERROR([could not setup config files machinery])
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
# VPATH may cause trouble with some makes, so we remove $(srcdir),
|
# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
|
||||||
# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
|
# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
|
||||||
# trailing colons and then remove the whole line if VPATH becomes empty
|
# trailing colons and then remove the whole line if VPATH becomes empty
|
||||||
# (actually we leave an empty line to preserve line numbers).
|
# (actually we leave an empty line to preserve line numbers).
|
||||||
if test "x$srcdir" = x.; then
|
if test "x$srcdir" = x.; then
|
||||||
ac_vpsub=['/^[ ]*VPATH[ ]*=/{
|
ac_vpsub=['/^[ ]*VPATH[ ]*=[ ]*/{
|
||||||
s/:*\$(srcdir):*/:/
|
h
|
||||||
s/:*\${srcdir}:*/:/
|
s///
|
||||||
s/:*@srcdir@:*/:/
|
s/^/:/
|
||||||
s/^\([^=]*=[ ]*\):*/\1/
|
s/[ ]*$/:/
|
||||||
|
s/:\$(srcdir):/:/g
|
||||||
|
s/:\${srcdir}:/:/g
|
||||||
|
s/:@srcdir@:/:/g
|
||||||
|
s/^:*//
|
||||||
s/:*$//
|
s/:*$//
|
||||||
|
x
|
||||||
|
s/\(=[ ]*\).*/\1/
|
||||||
|
G
|
||||||
|
s/\n//
|
||||||
s/^[^=]*=[ ]*$//
|
s/^[^=]*=[ ]*$//
|
||||||
}']
|
}']
|
||||||
fi
|
fi
|
||||||
|
@ -1151,6 +1151,92 @@ AT_CHECK([cd at-dir && "$at_here/configure" $configure_options], [], [ignore])
|
|||||||
AT_CLEANUP
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|
||||||
|
## ------- ##
|
||||||
|
## VPATH. ##
|
||||||
|
## ------- ##
|
||||||
|
|
||||||
|
AT_SETUP([VPATH])
|
||||||
|
|
||||||
|
dirs='at paren brace space'
|
||||||
|
for dir in $dirs; do
|
||||||
|
mkdir $dir $dir/s1 $dir/s2
|
||||||
|
touch $dir/f $dir/s1/f1 $dir/s2/f2
|
||||||
|
done
|
||||||
|
|
||||||
|
AT_DATA([configure.ac],
|
||||||
|
[[AC_INIT
|
||||||
|
AC_CONFIG_FILES([at/Makefile paren/Makefile brace/Makefile space/Makefile])
|
||||||
|
AC_OUTPUT
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_DATA([at/Makefile.in],
|
||||||
|
[[# This is what you should use in order to be portable to old makes.
|
||||||
|
srcdir = @srcdir@
|
||||||
|
VPATH = @srcdir@/s1:@srcdir@:@srcdir@/s2
|
||||||
|
all: f f1 f2
|
||||||
|
@echo ok
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_DATA([paren/Makefile.in],
|
||||||
|
[[# This works with some makes but not with old ones.
|
||||||
|
srcdir = @srcdir@
|
||||||
|
VPATH = $(srcdir)/s1:$(srcdir):$(srcdir)/s2
|
||||||
|
all: f f1 f2
|
||||||
|
@echo ok
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_DATA([brace/Makefile.in],
|
||||||
|
[[# This works with some makes but not with old ones.
|
||||||
|
srcdir = @srcdir@
|
||||||
|
VPATH = ${srcdir}/s1:${srcdir}:${srcdir}/s2
|
||||||
|
all: f f1 f2
|
||||||
|
@echo ok
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_DATA([space/Makefile.in],
|
||||||
|
[[# This fails with FreeBSD make, for example.
|
||||||
|
srcdir = @srcdir@
|
||||||
|
VPATH = @srcdir@/s1 @srcdir@ @srcdir@/s2
|
||||||
|
all: f f1 f2
|
||||||
|
@echo ok
|
||||||
|
]])
|
||||||
|
|
||||||
|
AT_CHECK_AUTOCONF
|
||||||
|
|
||||||
|
: ${MAKE=make}
|
||||||
|
|
||||||
|
# In place.
|
||||||
|
AT_CHECK([./configure $configure_options], [], [ignore])
|
||||||
|
# Treat BSD make separately, afterwards, for maximal coverage.
|
||||||
|
dirs='at paren brace'
|
||||||
|
for dir in $dirs; do
|
||||||
|
AT_CHECK([cd $dir && $MAKE], [], [ignore], [ignore])
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f config.status
|
||||||
|
mkdir build absbuild
|
||||||
|
|
||||||
|
# Relative name.
|
||||||
|
AT_CHECK([cd build && ../configure $configure_options], [], [ignore])
|
||||||
|
for dir in $dirs; do
|
||||||
|
AT_CHECK([cd build/$dir && $MAKE], [], [ignore], [ignore])
|
||||||
|
done
|
||||||
|
|
||||||
|
# Absolute name.
|
||||||
|
at_here=`pwd`
|
||||||
|
AT_CHECK([cd absbuild && "$at_here/configure" $configure_options], [], [ignore])
|
||||||
|
for dir in $dirs; do
|
||||||
|
AT_CHECK([cd absbuild/$dir && $MAKE], [], [ignore], [ignore])
|
||||||
|
done
|
||||||
|
|
||||||
|
# These will not pass with BSD make.
|
||||||
|
AT_CHECK([cd space && { $MAKE || exit 77; }], [], [ignore], [ignore])
|
||||||
|
AT_CHECK([cd build/space && $MAKE], [], [ignore], [ignore])
|
||||||
|
AT_CHECK([cd absbuild/space && $MAKE], [], [ignore], [ignore])
|
||||||
|
|
||||||
|
AT_CLEANUP
|
||||||
|
|
||||||
|
|
||||||
## ----------------- ##
|
## ----------------- ##
|
||||||
## Signal handling. ##
|
## Signal handling. ##
|
||||||
## ----------------- ##
|
## ----------------- ##
|
||||||
|
Loading…
Reference in New Issue
Block a user