Dear Bruno, thank you very much for the quick fix.
I am currently testing it. I still have a problem with the Makefile lines eventually produced by gl_CONDITIONAL_HEADER in m4/gnulib-common.m4. Am I supposed to set ${gl_source_base_prefix} somewhere? If it helps: I am using a configuration based on bootstrap and I have set source_base (and tests_base) in bootstrap.conf. Thanks, Marc Am Mi., 15. Dez. 2021 um 22:43 Uhr schrieb Bruno Haible <br...@clisp.org>: > Marc Nieper-Wißkirchen wrote: > > I'm using build-aux/prefix-gnulib-mk to rewrite the Gnulib Makefile > > fragment so that it can be included by a Makefile in a top-level > directory. > > > > What I haven't managed to get working, though, is renaming the Gnulib > lib/ > > directory at the same time (by setting $source_base in bootstrap.conf). > The > > Perl script build-aux/prefix-gnulib-mk still prefixes the Automake > > variables with lib_ as in > > > > lib_libgnu_la_SOURCES = > > > > I don't know much Perl but the relevant source line seems to be > > > > > https://git.savannah.gnu.org/cgit/gnulib.git/tree/build-aux/prefix-gnulib-mk#n165 > > > > The issue is possibly fixed just by replacing the string lib_ by %C% (see > > [1]). > > Fixed through this patch. > > You are right, %C% would also fix it. But since we are generating the > Makefile > part anyway and know where it is located, we can just as well put in the > actual > relative subdirectory. This makes the generated code easier to understand. > > > 2021-12-15 Bruno Haible <br...@clisp.org> > > automake-subdir support: Support arbitrary --source-base value. > Reported by Marc Nieper-Wißkirchen in > < > https://lists.gnu.org/archive/html/bug-gnulib/2021-12/msg00066.html>. > * build-aux/prefix-gnulib-mk ($canon_prefix): New variable. > (prefix): Initialize it. > (prefix_assignment): Use it. > > diff --git a/build-aux/prefix-gnulib-mk b/build-aux/prefix-gnulib-mk > index 36f7527fc..4f300c443 100755 > --- a/build-aux/prefix-gnulib-mk > +++ b/build-aux/prefix-gnulib-mk > @@ -40,6 +40,7 @@ use File::Basename; # for dirname > (my $ME = $0) =~ s|.*/||; > > my $prefix; > +my $canon_prefix; > my $lib_name; > > sub usage ($) > @@ -171,7 +172,7 @@ sub prefix_assignment ($$) > > # Variables whose name depend on the location: libbison_a_SOURCES => > # lib_libbison_a_SOURCES. > - $lhs_and_assign_op =~ s/($lib_name)/lib_$1/g; > + $lhs_and_assign_op =~ s/($lib_name)/$canon_prefix$1/g; > > $lhs_and_assign_op . $rhs; > } > @@ -187,6 +188,12 @@ sub prefix ($) > # Work on $_. > local ($_) = @_; > > + # $canon_prefix is derived from $prefix in the same way as Automake > + # derives %canon_reldir% from %reldir%. See > + # <https://www.gnu.org/software/automake/manual/html_node/Include.html > >. > + $canon_prefix = $prefix; > + $canon_prefix =~ s/[^a-zA-Z0-9_]/_/g; > + > # Prefix all the occurrence of files in rules. If there is nothing > # after in the :, it's probably a phony target, or a suffix rule. > # Don't touch it. > > > >