]> git.draconx.ca Git - dxcommon.git/commitdiff
fix-gnulib: Improve filename mangling.
authorNick Bowler <nbowler@draconx.ca>
Fri, 21 Jun 2013 19:58:49 +0000 (15:58 -0400)
committerNick Bowler <nbowler@draconx.ca>
Fri, 21 Jun 2013 19:58:49 +0000 (15:58 -0400)
This corrects a problem with some of the make rules in the localcharset
module.  Some filenames were not being properly prefixed with lib/ while
others were, leading to some files not being built.

scripts/fix-gnulib.pl

index 2ddf1f8ee0ea521ef700264cd52e14f2d40a4239..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";
        }
@@ -174,9 +176,6 @@ EOF
                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
@@ -216,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;