]> git.draconx.ca Git - dxcommon.git/blobdiff - scripts/fix-gnulib.pl
gen-tree.awk: Allow simple '#' comments.
[dxcommon.git] / scripts / fix-gnulib.pl
index 9f868f2ef0121293fd7f0142d540fce5a875b775..ce27521b007b86b3a22bb446c2bf24242836812d 100755 (executable)
@@ -63,6 +63,7 @@ open STDOUT, ">", $output or die "$output: $!\n" if (defined $output);
 open STDIN,  "<", $input  or die "$input: $!\n"  if (defined $input);
 
 my $printed_header = 0;
+my $check_mkdir;
 my @cleanfiles;
 
 # Hashes to record make variables used in the automake source.  The allvars
@@ -186,6 +187,16 @@ EOF
        # useful for non-recursive builds.  Strip them out.
        drop if (/^(AM_CPPFLAGS|AM_CFLAGS)/);
 
+       # We don't care about upstream warning flags that just result in adding
+       # massive amounts of additional build rules for no reason.
+       if (/_CFLAGS/) {
+               s/ *\$\(GL_CFLAG_GNULIB_WARNINGS\)// if /_CFLAGS\s*=/;
+       }
+
+       # Drop superfluous CFLAGS assignments (which may be created by above
+       # transformation).
+       drop if /_CFLAGS\s*=\s*\$\(AM_CFLAGS\)\s*$/;
+
        # Library dependencies are added automatically to libgnu.la by
        # gnulib-tool.  Unfortunately, this means that everything linking
        # against libgnu.la is forced to pull in the same deps, even if they're
@@ -221,9 +232,23 @@ EOF
        # ordinary variable so we can deal with them later.
        s/BUILT_SOURCES/gnulib_core_headers/;
 
+       # Rules for "toplevel" header files do not include commands to create
+       # the target directory; let's add that.
+       if (defined $check_mkdir) {
+               if (/gl_V_at/ || /AM_V_GEN/ and not /MKDIR_P/) {
+                       my $dir = "lib/$check_mkdir";
+                       $dir =~ s|/[^/]*||;
+
+                       print "\t\$(AM_V_GEN)\$(MKDIR_P) $dir\n";
+                       s/AM_V_GEN|gl_V_at/AM_V_at/;
+               }
+               undef $check_mkdir
+       }
+
        # Targets are similar to variables: the target and its dependencies
        # need to be mangled.
-       if (/^[^\t].*:/) {
+       if (/^([^\t:]*):/) {
+               $check_mkdir = $1;
                $_ = mangle_target($_);
        }
 
@@ -246,9 +271,10 @@ 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);