Hi, we are in the midst of converting the GNU Octave autotools build
system to a non-recursive one. The only remaining subdir is gnulib and
we'd like to build it non-recursively also. I see there is some
non-recursive support in gnulib, but it will need some small changes to
support Octave. Specifically, the directory name lib is hardcoded in a
few places, while Octave uses source_base=libgnu.
I'm attaching my work so far. I'm confident in 2 out of the 3 changes.
Any ideas on a better way to inject the value of $source_base into
autoconf snippets?
Thanks,
--
mike
From a017e33d890562e2bd456752345625c0bb8cc5f3 Mon Sep 17 00:00:00 2001
From: Mike Miller mtmil...@ieee.org
Date: Sat, 1 Aug 2015 12:25:48 -0400
Subject: [PATCH] non-recursive-gnulib-prefix-hack: fix when source-base !=
lib
---
build-aux/prefix-gnulib-mk | 3 ++-
gnulib-tool| 4
m4/non-recursive-gnulib-prefix-hack.m4 | 2 +-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/build-aux/prefix-gnulib-mk b/build-aux/prefix-gnulib-mk
index 8af2916..3bb2a59 100755
--- a/build-aux/prefix-gnulib-mk
+++ b/build-aux/prefix-gnulib-mk
@@ -120,7 +120,8 @@ sub prefix_assignment ($$)
# Variables which name depend on the location: libbison_a_SOURCES =
# lib_libbison_a_SOURCES.
- $lhs_and_assign_op =~ s/($lib_name)/lib_$1/g;
+ my $dir = substr ($prefix, 0, -1);
+ $lhs_and_assign_op =~ s/($lib_name)/${dir}_$1/g;
return $lhs_and_assign_op . $rhs;
}
diff --git a/gnulib-tool b/gnulib-tool
index ec82f35..71e7d9f 100755
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -3918,6 +3918,10 @@ func_emit_autoconf_snippet ()
cat
fi
} \
+ | { if test $sourcebase != lib; then
+sed -e 's,\[lib\],'[$sourcebase],g
+ fi
+} \
| { if $disable_gettext; then
sed -e 's/AM_GNU_GETTEXT(\[external\])/dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac./'
else
diff --git a/m4/non-recursive-gnulib-prefix-hack.m4 b/m4/non-recursive-gnulib-prefix-hack.m4
index bf9ae7c..e827a52 100644
--- a/m4/non-recursive-gnulib-prefix-hack.m4
+++ b/m4/non-recursive-gnulib-prefix-hack.m4
@@ -10,7 +10,7 @@ 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])
+ AC_CONFIG_LIBOBJ_DIR([$1])
# This hack originated in bison. It is required when using non-recursive
# automake rules to build from gnulib-provided lib/ sources. Hence, LIB_DIR
--
2.4.6