summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2012-09-09 21:49:42 +0200
committerJim Meyering <meyering@redhat.com>2012-09-11 11:23:16 +0200
commitada994274cacac427e7a2004e7bd6c16e7f140a7 (patch)
tree25d7b1318c0c244023bdddd507d6b8fcf07aeaca
parent640fb7a108eec6242c85481fbc0093f67147918b (diff)
downloadcoreutils-ada994274cacac427e7a2004e7bd6c16e7f140a7.tar.xz
build: handle @ALLOCA@-vs-non-recursive make problems
Here is a good reason to avoid alloca with non-recursive make. These: $ grep @ALLOCA lib/gnulib.mk lib_libcoreutils_a_LIBADD += lib/@ALLOCA@ lib_libcoreutils_a_DEPENDENCIES += lib/@ALLOCA@ would lead to this, when @ALLOCA@ expands to the empty string, which is essentially "always", now: $ grep ' lib/$' Makefile lib_libcoreutils_a_LIBADD = $(gl_LIBOBJS) lib/ lib_libcoreutils_a_DEPENDENCIES = $(gl_LIBOBJS) lib/ Tell the prefix-adding script not to add a prefix when the word it's prefixing is "@ALLOCA@". That is fine for most cases, but what about when the expansion of @ALLOCA@ is nonempty? * build-aux/prefix-gnulib-mk (prefix_word): Exclude @ALLOCA@. * gl/m4/non-recursive-gnulib-prefix-hack.m4: Prefix non-empty $ALLOCA with "lib/". FIXME: I'm not sure this is required, now that we... Use AC_CONFIG_LIBOBJ_DIR([lib]). Without using AC_CONFIG_LIBOBJ_DIR([lib]), automake (not autoconf) would complain of failure to find aclocal.c, due to the use of AC_LIBSOURCES(alloca.c).
-rwxr-xr-xgl/build-aux/prefix-gnulib-mk3
-rw-r--r--gl/m4/non-recursive-gnulib-prefix-hack.m46
2 files changed, 8 insertions, 1 deletions
diff --git a/gl/build-aux/prefix-gnulib-mk b/gl/build-aux/prefix-gnulib-mk
index cc74f51f9..38471a9c1 100755
--- a/gl/build-aux/prefix-gnulib-mk
+++ b/gl/build-aux/prefix-gnulib-mk
@@ -66,7 +66,8 @@ sub prefix_word ($)
{
local ($_) = @_;
$_ = $prefix . $_
- unless /^-/ || m{^\$\(\w+\)} || $_ eq "Makefile" || $_ eq '\\';
+ unless (/^-/ || m{^\$\(\w+\)} || $_ eq "Makefile" || $_ eq '\\'
+ || $_ eq '@ALLOCA@');
return $_;
}
diff --git a/gl/m4/non-recursive-gnulib-prefix-hack.m4 b/gl/m4/non-recursive-gnulib-prefix-hack.m4
index 3c5c48ed8..aeb0cc41f 100644
--- a/gl/m4/non-recursive-gnulib-prefix-hack.m4
+++ b/gl/m4/non-recursive-gnulib-prefix-hack.m4
@@ -9,6 +9,9 @@ dnl with a value ending in ".h" to reflect that these files are located
dnl in the directory specified by LIB_DIR.
AC_DEFUN([gl_NON_RECURSIVE_GNULIB_PREFIX_HACK],
[
+ # Tell AC_LIBSOURCES where to find source files like alloca.c.
+ AC_CONFIG_LIBOBJ_DIR([lib])
+
# This hack originated in bison. It is required when using non-recursive
# automake rules to build from gnulib-provided lib/ sources. Hence, LIB_DIR
# is usually simply "lib". Those rules use the list of names like "fchdir.o"
@@ -26,4 +29,7 @@ AC_DEFUN([gl_NON_RECURSIVE_GNULIB_PREFIX_HACK],
(*_H:*.h) eval "$ac_var=$1/\$$ac_var";;
esac
done
+
+ # If $ALLOCA is not empty, prefix its value with "lib/".
+ test -n "$ALLOCA" && ALLOCA="lib/$ALLOCA"
])