]> git.draconx.ca Git - dxcommon.git/blobdiff - scripts/fix-gnulib.pl
fix-ltdl: Fix LIBOBJ mangling to work with automake-1.16.
[dxcommon.git] / scripts / fix-gnulib.pl
index c407d6faee64f9573ecf578e19ed9ac754d9268d..3af852d20d0ec54f4c42e759a1904c3e4db066da 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/env perl
 #
-# Copyright © 2011-2014, 2020 Nick Bowler
+# Copyright © 2011-2014, 2020-2022 Nick Bowler
 #
 # Prepare the Gnulib tree for inclusion into a non-recursive automake build.
 # While the output of gnulib-tool is "include"-able if the --makefile-name
@@ -145,7 +145,7 @@ m4_unquote(m4_argn([2], [
 
 # This trick should define gnulib_orderonly to | iff we're using GNU make.
 gnulib_make_features = $(.FEATURES)
-gnulib_have_orderonly = $(findstring order-only,$(gnulib_make_features))
+gnulib_have_orderonly = $(findstring order-only,${gnulib_make_features})
 gnulib_orderonly = $(gnulib_have_orderonly:order-only=|)
 gnulib_core_headers =
 gnulib_raw_headers = $(gnulib_core_headers)
@@ -211,7 +211,7 @@ EOF
        if (/^([[:word:]]+)[[:space:]]*\+?=/) {
                $allvars{$1} = 1;
 
-               if (/_SOURCES|CLEANFILES|EXTRA_DIST|[[:upper:]]+_H/) {
+               if ($1 =~ /(_SOURCES|CLEANFILES|EXTRA_DIST|[[:upper:]]+_H)$/) {
                        $_ = mangle_variable($_);
                }
        }
@@ -246,17 +246,21 @@ EOF
        # component.
        s/t-\$@/\$\@-t/g;
 
-       # Finally, references to $(srcdir) and $(builddir) need to be fixed up.
+       # Finally, $(srcdir), $(builddir) and %reldir% need to be fixed up.
        s:\$\(srcdir\):\$\(top_srcdir\)/lib:g;
        s:\$\(builddir\):\$\(top_builddir\)/lib:g;
+       s:%reldir%:lib:g;
 } continue { s/(\n.)/\\\1/g; print; };
 
 print <<'EOF' if ($use_libtool);
-gnulib_objects = $(libgnu_la_OBJECTS) $(gl_LTLIBOBJS)
+gnulib_lt_objects = $(libgnu_la_OBJECTS) $(gl_LTLIBOBJS)
+gnulib_objects = $(gnulib_lt_objects)
+gnulib_all_symfiles = $(gnulib_lt_objects:.lo=.glsym)
 $(gnulib_objects): $(gnulib_headers)
 EOF
 print <<'EOF' if (!$use_libtool);
 gnulib_objects = $(libgnu_a_OBJECTS) $(gl_LIBOBJS)
+gnulib_all_symfiles = $(gnulib_objects:.@OBJEXT@=.glsym)
 $(gnulib_objects): $(gnulib_headers)
 EOF
 
@@ -269,10 +273,10 @@ if FALSE
 AC_SUBST([GLSRC], [lib])
 AC_CONFIG_LIBOBJ_DIR([lib])
 
-AC_DEFUN_ONCE([DX_GLSYM_PREFIX], [dnl
-AC_REQUIRE([DX_EXPORTED_SH])
-AC_SUBST([GLSYM_PREFIX], [$1])
-])
+AC_DEFUN_ONCE([DX_GLSYM_PREFIX],
+[AC_REQUIRE([DX_AUTOMAKE_COMPAT])AC_REQUIRE([DX_EXPORTED_SH])dnl
+AC_SUBST([GLSYM_PREFIX], [$1])dnl
+AC_SUBST([gnulib_symfiles], ['$(gnulib_all_symfiles)'])])
 EOF
 
 print <<'EOF' if ($for_library);