Upstream-Status: Pending

Index: autoconf-2.63/bin/autoreconf.in
===================================================================
--- autoconf-2.63.orig/bin/autoreconf.in	2008-12-31 17:39:01.000000000 +0000
+++ autoconf-2.63/bin/autoreconf.in	2008-12-31 17:43:38.000000000 +0000
@@ -76,6 +76,7 @@
   -i, --install            copy missing auxiliary files
       --no-recursive       don't rebuild sub-packages
   -s, --symlink            with -i, install symbolic links instead of copies
+  -x, --exclude=STEPS      steps we should not run
   -m, --make               when applicable, re-run ./configure && make
   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [syntax]
 
@@ -136,6 +137,13 @@
 # Recurse into subpackages
 my $recursive = 1;
 
+# Steps to exclude
+my @exclude;
+my @ex;
+
+my $uses_gettext;
+my $configure_ac;
+
 ## ---------- ##
 ## Routines.  ##
 ## ---------- ##
@@ -153,6 +161,7 @@
 	  'B|prepend-include=s'	 => \@prepend_include,
 	  'i|install'            => \$install,
 	  's|symlink'            => \$symlink,
+  	  'x|exclude=s'          => \@exclude,
 	  'm|make'               => \$run_make,
 	  'recursive!'           => \$recursive);
 
@@ -162,6 +171,8 @@
   parse_WARNINGS;
   parse_warnings '--warnings', @warning;
 
+  @exclude = map { split /,/ } @exclude;
+
   # Even if the user specified a configure.ac, trim to get the
   # directory, and look for configure.ac again.  Because (i) the code
   # is simpler, and (ii) we are still able to diagnose simultaneous
@@ -255,6 +266,11 @@
 {
   my ($aclocal, $flags) = @_;
 
+  @ex = grep (/^aclocal$/, @exclude);
+  if ($#ex != -1) {
+    return;
+  }
+
   # aclocal 1.8+ does all this for free.  It can be recognized by its
   # --force support.
   if ($aclocal_supports_force)
@@ -368,7 +384,10 @@
     }
   else
     {
-      xsystem_hint ("autopoint is needed because this package uses Gettext", "$autopoint");
+      @ex = grep (/^autopoint$/, @exclude);
+      if ($#ex == -1) {
+        xsystem_hint ("autopoint is needed because this package uses Gettext", "$autopoint");
+      }
     }
 
 
@@ -532,16 +551,17 @@
 	{
 	  $libtoolize .= " --ltdl";
 	}
-      xsystem_hint ("libtoolize is needed because this package uses Libtool", $libtoolize);
-      $rerun_aclocal = 1;
+      @ex = grep (/^libtoolize$/, @exclude);
+      if ($#ex == -1) {
+        xsystem_hint ("libtoolize is needed because this package uses Libtool", $libtoolize);
+        $rerun_aclocal = 1;
+      }
     }
   else
     {
       verb "$configure_ac: not running libtoolize: --install not given";
     }
 
-
-
   # ------------------- #
   # Rerunning aclocal.  #
   # ------------------- #
@@ -572,7 +592,10 @@
   # latter runs the former, and (ii) autoconf is stricter than
   # autoheader.  So all in all, autoconf should give better error
   # messages.
-  xsystem ($autoconf);
+  @ex = grep (/^autoconf$/, @exclude);
+  if ($#ex == -1) {
+    xsystem ("$autoconf");
+  }
 
 
   # -------------------- #
@@ -593,7 +616,10 @@
     }
   else
     {
-      xsystem ($autoheader);
+      @ex = grep (/^autoheader$/, @exclude);
+      if ($#ex == -1) {
+        xsystem ("$autoheader");
+      }
     }
 
 
@@ -610,7 +636,10 @@
       # We should always run automake, and let it decide whether it shall
       # update the file or not.  In fact, the effect of `$force' is already
       # included in `$automake' via `--no-force'.
-      xsystem ($automake);
+      @ex = grep (/^automake$/, @exclude);
+      if ($#ex == -1) {
+        xsystem ("$automake");
+      }
     }
 
 
@@ -634,7 +663,10 @@
 	    }
 	  else
 	    {
-	      xsystem ("$make");
+              @ex = grep (/^make$/, @exclude);
+              if ($#ex == -1) {
+	        xsystem ("$make");
+              }
 	    }
 	}
     }
