]> git.draconx.ca Git - dxcommon.git/blobdiff - scripts/fix-gnulib.pl
fix-gnulib: Improve filename mangling.
[dxcommon.git] / scripts / fix-gnulib.pl
index e043d777800df59442e608bfa91af5d633130339..954780f42eeaaa998322adf454faac48468966e2 100755 (executable)
@@ -83,8 +83,10 @@ sub mangle_file {
                # Do nothing.  Generic transformation will take care of
                # $(srcdir) and $(builddir).
        } elsif ($word =~ /^[[:word:].+\/-]+$/) {
-               # Fix up things that look like filenames.
-               $word = "lib/$word";
+               # Mangle the filename.  Assume that all relevant files start
+               # with a non-dot (so we don't transform suffix rules) and
+               # contain at least one dot (so we don't transform phony rules).
+               $word = "lib/$word" if ($word =~ /^[^.]+\./);
        } else {
                print STDERR "$0:$line: warning: unrecognized source file: $word\n";
        }
@@ -165,14 +167,15 @@ EOF
        # handle them all manually.
        drop if (/LDFLAGS/);
 
+       # Current uses of SUFFIXES in gnulib are pointless since Automake will
+       # figure it out all on its own.  Strip it out.
+       drop if (/SUFFIXES/);
+
        # Rewrite automake hook targets to be more generic.
        if (s/^(.*)-local:/\1-gnulib:/) {
                print ".PHONY: $1-gnulib\n";
                print "$1-local: $1-gnulib\n";
                s/$1-generic//;
-
-               # Don't let these targets get confused with filenames below.
-               next;
        }
 
        # We need to mangle filenames in make variables; prepending a lib/ on
@@ -212,6 +215,10 @@ EOF
                drop;
        }
 
+       # Change t-$@ to $@-t as the former will break if $@ has a directory
+       # component.
+       s/t-\$@/\$\@-t/g;
+
        # Finally, references to $(srcdir) and $(builddir) need to be fixed up.
        s:\$\(srcdir\):\$\(top_srcdir\)/lib:g;
        s:\$\(builddir\):\$\(top_builddir\)/lib:g;
@@ -236,6 +243,7 @@ if FALSE
 ], [dnl M4 code follows
 
 AC_SUBST([GLSRC], [lib])
+AC_CONFIG_LIBOBJ_DIR([lib])
 
 AC_DEFUN_ONCE([DX_GLSYM_PREFIX], [dnl
 AC_REQUIRE([DX_EXPORTED_SH])