diff options
author | Jim Meyering <meyering@redhat.com> | 2012-09-09 21:49:42 +0200 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2012-09-11 11:23:16 +0200 |
commit | ada994274cacac427e7a2004e7bd6c16e7f140a7 (patch) | |
tree | 25d7b1318c0c244023bdddd507d6b8fcf07aeaca /gl | |
parent | 640fb7a108eec6242c85481fbc0093f67147918b (diff) | |
download | coreutils-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).
Diffstat (limited to 'gl')
-rwxr-xr-x | gl/build-aux/prefix-gnulib-mk | 3 | ||||
-rw-r--r-- | gl/m4/non-recursive-gnulib-prefix-hack.m4 | 6 |
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" ]) |