Bug 774032 part 7 - Remove make-makefile and acoutput-fast.pl. r=ted
authorMike Hommey <mh+mozilla@glandium.org>
Sat, 04 Aug 2012 08:47:28 +0200
changeset 106883 75ac79f11192db4d40b2cb71144a6d49ecbc34c1
parent 106882 21c3069ddc4a9d294de06151a7d3486577b1429a
child 106884 2ef51674316aadfe26a46877b16794f758bf4b6d
push idunknown
push userunknown
push dateunknown
reviewersted
bugs774032
milestone17.0a1
Bug 774032 part 7 - Remove make-makefile and acoutput-fast.pl. r=ted
allmakefiles.sh
build/Makefile.in
build/autoconf/acoutput-fast.pl
build/autoconf/make-makefile
build/autoconf/make-makefile.excl
build/autoconf/makemakefile.pm
build/autoconf/test/Makefile.in
build/autoconf/test/data/mf.notokens
build/autoconf/test/data/mf.notokens.exp
build/autoconf/test/make-makefile.excl
build/autoconf/test/make-makefile.tpl
build/autoconf/test/makemakefile.tpm
build/autoconf/test/runtest
js/src/build/autoconf/acoutput-fast.pl
js/src/build/autoconf/make-makefile
js/src/build/autoconf/make-makefile.excl
js/src/build/autoconf/makemakefile.pm
--- a/allmakefiles.sh
+++ b/allmakefiles.sh
@@ -117,17 +117,16 @@ if [ "$ENABLE_MARIONETTE" ]; then
   add_makefiles "
     testing/marionette/Makefile
     testing/marionette/components/Makefile
   "
 fi
 
 if [ "$ENABLE_TESTS" ]; then
   add_makefiles "
-    build/autoconf/test/Makefile
     config/makefiles/test/Makefile
     config/tests/makefiles/autodeps/Makefile
     config/tests/src-simple/Makefile
     mfbt/tests/Makefile
   "
   if [ ! "$LIBXUL_SDK" ]; then 
     add_makefiles "
       mozglue/tests/Makefile
--- a/build/Makefile.in
+++ b/build/Makefile.in
@@ -21,17 +21,16 @@ DIRS = win32
 endif
 
 ifdef STLPORT_SOURCES
 DIRS += stlport
 endif
 
 DIRS += pgo
 
-TEST_DIRS += autoconf/test
 ifeq (android,$(MOZ_WIDGET_TOOLKIT))
 TEST_DIRS += mobile/sutagent/android \
           mobile/sutagent/android/watcher \
           mobile/sutagent/android/ffxcp \
           mobile/sutagent/android/fencp \
           mobile/robocop \
           $(NULL)
 endif
deleted file mode 100755
--- a/build/autoconf/acoutput-fast.pl
+++ /dev/null
@@ -1,170 +0,0 @@
-#! /usr/bin/env perl
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-# acoutput-fast.pl - Quickly create makefiles that are in a common format.
-#
-# Most of the makefiles in mozilla only refer to two configure variables:
-#     @srcdir@
-#     @top_srcdir@
-# However, configure does not know any better and it runs sed on each file
-# with over 150 replacement rules (slow as molasses).
-#
-# This script takes a list of makefiles as input. For example,
-#   
-#     echo $MAKEFILES | acoutput-fast.pl
-#
-# The script creates each Makefile that only references @srcdir@ and
-# @top_srcdir@. For other files, it lists them in a shell command that is
-# printed to stdout:
-#
-#     CONFIG_FILES="unhandled_files..."; export CONFIG_FILES
-#
-# This command can be used to have config.status create the unhandled
-# files. For example,
-#
-#     eval "echo $MAKEFILES | acoutput-fast.pl"
-#     AC_OUTPUT($MAKEFILES)
-#
-# Send comments, improvements, bugs to Steve Lamm (slamm@netscape.com).
-
-#use File::Basename;
-sub dirname {
-  my $dir = $_[0];
-  return '.' if not $dir =~ m%/%;
-  $dir =~ s%/[^/][^/]*$%%;
-  return $dir;
-}
-
-# Create one directory. Assumes it doesn't already exist.
-# Will create parent(s) if needed.
-sub create_directory {
-  my $dir = $_[0];
-  my $parent = dirname($dir);
-  create_directory($parent) if not -d $parent;
-  mkdir "$dir",0777;
-}
-
-# Create all the directories at once.
-#   This can be much faster than calling mkdir() for each one.
-sub create_directories {
-  my @makefiles = @_;
-  my @dirs = ();
-  my $ac_file;
-  foreach $ac_file (@makefiles) {
-    push @dirs, dirname($ac_file);
-  }
-  # Call mkdir with the directories sorted by subdir count (how many /'s)
-  if (@dirs) {
-    foreach $dir (@dirs) {
-      if (not -d $dir) {
-        print STDERR "Creating directory $dir\n";
-        create_directory($dir);
-      }
-    }
-  }
-}
-
-while($arg = shift) {
-    if ($arg =~ /^--srcdir=/) {
-        $ac_given_srcdir = (split /=/, $arg)[1];
-    }
-    if ($arg =~ /^--cygwin-srcdir/) {
-        $ac_cygwin_srcdir = (split /=/, $arg)[1];
-    }
-}
-
-if (!$ac_given_srcdir) {
-  $ac_given_srcdir = $0;
-  $ac_given_srcdir =~ s|/?build/autoconf/.*$||;
-  $ac_given_srcdir = '.' if $ac_given_srcdir eq '';
-}
-
-if (!$ac_cygwin_srcdir) {
-    $ac_cygwin_srcdir = $ac_given_srcdir;
-}
-
-# Read list of makefiles from the stdin or,
-#   from files listed on the command-line.
-#
-@makefiles=();
-push @makefiles, split while (<STDIN>);
-
-# Create all the directories at once.
-#   This can be much faster than calling mkdir() for each one.
-create_directories(@makefiles);
-
-# Output the makefiles.
-#
-@unhandled=();
-foreach $ac_file (@makefiles) {
-  if (not $ac_file =~ /Makefile$/ or $ac_file =~ /:/) {
-    push @unhandled, $ac_file;
-    next;
-  }
-  $ac_file_in = "$ac_given_srcdir/$ac_file.in";
-  $ac_dir = dirname($ac_file);
-  if ($ac_dir eq '.') {
-    $ac_dir_suffix = '';
-    $ac_dots = '';
-  } else {
-    $ac_dir_suffix = "/$ac_dir";
-    $ac_dir_suffix =~ s%^/\./%/%;
-    $ac_dots = $ac_dir_suffix;
-    $ac_dots =~ s%/[^/]*%../%g;
-  }
-  if ($ac_given_srcdir eq '.') {
-    $srcdir = '.';
-    if ($ac_dots eq '') {
-      $top_srcdir = '.'
-    } else {
-      $top_srcdir = $ac_dots;
-      $top_srcdir =~ s%/$%%;
-    }
-  } elsif ($ac_cygwin_srcdir =~ m%^/% or $ac_cygwin_srcdir =~ m%^.:/%) {
-    $srcdir     = "$ac_cygwin_srcdir$ac_dir_suffix";
-    $top_srcdir = "$ac_cygwin_srcdir";
-  } else {
-    $srcdir     = "$ac_dots$ac_cygwin_srcdir$ac_dir_suffix";
-    $top_srcdir = "$ac_dots$ac_cygwin_srcdir";
-  }
-
-  if (-e $ac_file) {
-    next if -M _ < -M $ac_file_in;
-    print STDERR "updating $ac_file\n";
-  } else {
-    print STDERR "creating $ac_file\n";
-  }
-
-  open (INFILE, "<$ac_file_in")
-    or ( die "can't read $ac_file_in: No such file or directory\n");
-  open (OUTFILE, ">$ac_file")
-    or ( warn "Unable to create $ac_file\n" and next);
-
-  while (<INFILE>) {
-    #if (/\@[_a-zA-Z]*\@.*\@[_a-zA-Z]*\@/) {
-    #  warn "Two defines on a line:$ac_file:$.:$_";
-    #  push @unhandled, $ac_file;
-    #  last;
-    #}
-
-    s/\@srcdir\@/$srcdir/g;
-    s/\@top_srcdir\@/$top_srcdir/g;
-
-    if (/\@[_a-zA-Z]*\@/) {
-      warn "Unknown variable:$ac_file:$.:$_";
-      push @unhandled, $ac_file;
-      last;
-    }
-    print OUTFILE;
-  }
-  close INFILE;
-  close OUTFILE;
-}
-
-# Print the shell command to be evaluated by configure.
-#
-print "CONFIG_FILES=\"".join(' ', @unhandled)."\"; export CONFIG_FILES\n";
-
deleted file mode 100755
--- a/build/autoconf/make-makefile
+++ /dev/null
@@ -1,444 +0,0 @@
-#!/usr/bin/env perl
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-##----------------------------##
-##---] CORE/CPAN INCLUDES [---##
-##----------------------------##
-use strict;
-use warnings;
-use Getopt::Long;
-
-use Benchmark;
-use Cwd;
-use File::Basename;
-use File::Copy;
-use File::Path      qw{mkpath};
-
-##-------------------##
-##---]  EXPORTS  [---##
-##-------------------##
-our $VERSION = qw(2.0);
-
-##--------------------##
-##---]  INCLUDES  [---##
-##--------------------##
-
-##############################################################
-# pymake: special case path handling for windows cmd shell.
-#   if invoked by cmd.exe and msys-perl is in play
-#     $0 may contain a drive letter
-#     modules use-or-expect msys/unix paths
-#     adjust $0 => C:/foo => /c/foo so string tests and
-#     manipulation can by applied properly.
-##############################################################
-sub BEGIN
-{
-    if ($^O eq 'msys' && $ENV{PATH} =~ m!\w:/!)
-    {
-	$0 =~ s!^(\w):!/$1!;
-    }
-    eval 'use FindBin';
-    die $@ if ($@);
-}
-
-use lib $FindBin::Bin;
-use makemakefile;
-
-##-------------------##
-##---]  GLOBALS  [---##
-##-------------------##
-my %argv;
-
-my $t0 = Benchmark->new();
-sub END
-{
-    if ($argv{bench})
-    {
-        my $t1 = Benchmark->new();
-        my $delta = timediff($t1, $t0);
-        print STDERR timestr($delta), "\n";
-    }
-}
-
-##----------------##
-##---]  MAIN  [---##
-##----------------##
-umask 0;
-
-my $debug = $argv{debug} || 0;
-
-my $pwdcmd = ($^O eq 'msys') ? 'pwd -W' : 'pwd';
-
-# Determine various tree path variables
-#
-my ($topsrcdir, $ptopsrcdir, $depth, @makefiles) = parse_arguments(@ARGV);
-
-my $object_fullpath = `$pwdcmd`; # Cwd::getcwd()
-chdir $depth;
-my $object_root = `$pwdcmd`;  # Cwd::getcwd()
-chomp $object_fullpath;
-chomp $object_root;
-
-# $source_subdir is the path from the object root to where
-#    'make-makefile' was called. For example, if make-makefile was
-#    called from "mozilla/gfx/src", then $source_subdir would be
-#    "gfx/src/".
-my $source_subdir = "$object_fullpath/";
-my $quoted_object_root = quotemeta($object_root);
-$source_subdir =~ s|^$quoted_object_root/||;
-
-# Prefix makefiles with $source_subdir so that paths
-# will be relative to the top of the object tree.
-#
-my $makefile;
-for $makefile (@makefiles) { # dead code ?
-  $makefile = "$source_subdir$makefile";
-}
-
-# Find the path to the source directory based on how 'make-makefile'
-#  was invoked. The path is either relative to the object directory
-#  or an absolute path.
-my $given_srcdir = find_srcdir($topsrcdir, $depth);
-my $pgiven_srcdir = find_srcdir($ptopsrcdir, $depth);
-
-if ($debug) {
-  warn "object_fullpath = $object_fullpath\n";
-  warn "object_root     = $object_root\n";
-  warn "source_subdir   = $source_subdir\n";
-  warn "makefiles       = @makefiles\n";
-  warn "given_srcdir    = $given_srcdir\n";
-}
-
-my @errors;
-my @unhandled = update_makefiles_legacy($given_srcdir, $pgiven_srcdir, @makefiles);
-push(@errors, $@) if ($@);
-
-run_config_status(@unhandled);
-push(@errors, $@) if ($@ && $argv{'no-warnings'});
-
-exit scalar(@errors);
-
-# end of Main
-############################################################
-
-###########################################################################
-# find_depth: Pull the value of DEPTH out of a Makefile (or Makefile.in)
-###########################################################################
-sub find_depth {
-  my $depth = '';
-  open(MAKEFILE, "<$_[0]") || die "Unable to open $_[0]: $!\n";
-  while (<MAKEFILE>) {
-    next unless /^DEPTH\s*=\s*(\..*)/;
-    $depth = $1;
-    last;
-  }
-  close MAKEFILE;
-  return $depth;
-}
-
-###########################################################################
-## Intent: Parse command line arguments and assign values
-###########################################################################
-sub parse_arguments {
-  my @args = @_;
-  my @makefiles = ();
-
-  my @arglist = qw(badtokens! bench
-                   chdir=s
-                   debug
-                   depth|d=s
-                   enhanced
-                   obj=s top|t=s ptop|p=s
-                   src=s dst=s
-                   );
-  unless(GetOptions(\%argv, @arglist))
-  {
-      my $script = join('/', $FindBin::RealBin, $FindBin::Script);
-      system("perldoc $script </dev/null");
-      exit
-  }
-  @args = @ARGV;
-
-  my $topsrcdir = $argv{top} || '';
-  if (! $topsrcdir)
-  {
-      $topsrcdir = $argv{top} = getTopDir();
-  }
-
-  my $ptopsrcdir ||= $argv{ptop} || $topsrcdir || '';
-
-  ## Init --no- switch values
-  foreach my $var (qw(badtokens exclusions warnings))
-  {
-      $argv{"no-${var}"} = $argv{$var} || 0;
-  }
-  # Propogate parsed arguments for module use [--debug, --verbose]
-  while (my($k, $v) = each %argv)
-  {
-      $main::argv{$k} = $v;
-  }
-
-  if ($argv{chdir})
-  {
-      chdir $argv{chdir} || die "chdir $argv{chdir} failed: $!";
-  }
-
-  ##############################################################
-  ## Arguments allowing make-makefile to be invoked from $topsrc
-  ##############################################################
-  if (!$argv{top} || !$argv{obj})
-  {
-  }
-  ## Limit access to container makefiles for now
-  elsif ($argv{enhanced})
-  {
-      my @errors;
-
-      ## iterate over @ARGV to preserve original filename for 'unhandled'
-      my @files = map{ getRelPath($_) } @ARGV;
-
-      my $top = getTopDir();
-      my $obj = getObjDir();
-
-      mkdirr(map{ "$obj/$_" } @files);
-      push(@errors, $@) if ($@); # legacy behavior: do not exit with status
-
-      my $exclude = join('/', $FindBin::RealBin, $FindBin::Script);
-      $exclude .= '.excl'; # $argv{exclude}
-      my %exclude = getExclusions($exclude);
-      my @unhandled;
-      foreach my $relpath (@files)
-      {
-          my $rel = join('/', $relpath, 'Makefile.in');
-          my $mf = join('/', $top, $rel);
-          next if ($exclude{$rel});
-          print STDERR " ** relpath=[$relpath], mf=[$mf]\n" if ($main::argv{debug});
-
-          my $rc = updateMakefiles($relpath, {depth=>$depth, obj=>$obj, top=>$top});
-          if ($@)
-          {
-            push(@errors, $@);
-          }
-          elsif ($rc eq 'badtokens')
-          {
-            push(@unhandled, $mf);
-          }
-      }
-
-      run_config_status(@unhandled);
-      push(@errors, $@) if ($@ && $argv{'no-warnings'});
-      exit scalar(@errors);
-  }
-
-
-  my $depth = $argv{depth} || '';
-  if (! $depth)
-  {
-      foreach my $fyl (@args)
-      {
-          if (my $tmp = find_depth($fyl))
-          {
-              $depth = $tmp;
-              last;
-          }
-      }
-  }
-
-  if (! $depth) {
-    # Use $(DEPTH) in the Makefile or Makefile.in to determine the depth
-    if (-e "Makefile.in") {
-      $depth = find_depth("Makefile.in");
-    } elsif (-e "Makefile") {
-      $depth = find_depth("Makefile");
-    } elsif (-e "../Makefile") {
-      $depth = "../".find_depth("../Makefile");
-      $depth =~ s/\/\.$//;
-    } else {
-      warn "Unable to determine depth (e.g. ../..) to root of objdir tree.\n";
-      die  "No Makefile(.in) present. Try running with '-d <depth>'\n";
-    }
-  } 
-
-  # Build the list of makefiles to generate
-  #
-  @makefiles = ();
-  while (@args)
-  {
-      next unless my $makefile = shift @args;
-      $makefile =~ s/\.in$//;
-      $makefile =~ s/\/$//;
-      $makefile =~ /Makefile$/
-        or $makefile =~ /^\.\//
-        or $makefile .= "/Makefile";
-    push @makefiles, "$makefile";
-  }
-  @makefiles = "Makefile" unless @makefiles;
-
-  return ($topsrcdir, $ptopsrcdir, $depth, @makefiles);
-}
-
-# Find the top of the source directory
-# (Assuming that the executable is in $top_srcdir/build/autoconf)
-sub find_srcdir {
-  my ($ac_given_srcdir, $depth) = @_;
-
-  if ($debug) {
-    print "ac_given_srcdir = $ac_given_srcdir\n";
-    print "depth           = $depth\n";
-  }
-  if ($ac_given_srcdir =~ /^\./ and $depth ne '.') {
-    my $quoted_depth = quotemeta($depth);
-    $ac_given_srcdir =~ s|^$quoted_depth/?||;
-  }
-  if ($debug) {
-    print "ac_given_srcdir = $ac_given_srcdir\n";
-  }
-  $ac_given_srcdir = '.' if $ac_given_srcdir eq '';
-  return $ac_given_srcdir;
-}
-
-1;
-###########################################################################
-## perldoc 
-###########################################################################
-__END__
-
-=head1 NAME
-
-make-makefile - Generate a Makefile from a F<Makefile.in> template
-
-=head1 SYNOPSIS
-
-make-makefile [--top t] [--obj o] [--depth d] foo/bar/Makefile.in tans/fans/Makefile foo/bar
-
-=head1 DESCRIPTION
-
-Given options and makefile path arguments determine path to the template
-F<Makefile.in> beneath a source directory and path to generated F<Makefile>
-beneath $MOZ_OBJDIR.  DEPTH from destination directory to the 'root' will
-also be determined.  F<Makefile.in> will be read in, template strings of the
-gorm @token@ will be replaced with derived values and a generated makefile
-will be written out as F<Makefile>.
-
-Makefile DEPTH= can be determined in a few different ways:
-  o The string C<DEPTH=../../..> may be embedded within F<Makefile.in>.
-  o Search parent directories for F<Makefile.in> and use it to assign the child.
-
-
-=head2 Option List
-
-=over 4
-
-=item --chdir
-
-Move to this directory before doing anything else
-
-=item -d, --depth
-
-Explicitly specify the relative path from directory containing Makefile.in
-to the top sandbox directory.  memory/makefile, DEPTH=../.., js/src/config, DEPTH=..
-
-=item --enhanced
-
-Use alternate/simplified path construction when options --top and --obj are
-passed.  This feature will be used by container makefiles to support makefile
-generation while cd'd into the sandbox top directory.
-
-=item -t, --top
-
-Path the root of a development sandbox.
-
-=item --obj
-
-Path to object directory where generated makefile will be written ($MOZ_OBJDIR).
-
-=item --ptop
-
-Print top source dir
-
-=back
-
-
-=head2 Options List DEBUG
-
-=over 4
-
-=item --bench
-
-Enable script benchmarking, report elapsed runtime.
-
-=item --debug
-
-Enable script debug mode.
-
-=back
-
-
-=head2 Options List --NO-
-
-=over 4
-
-=item --no-badtokens (wip)
-
-Handle unexpanded @token@ makefile tokens as an error condition.
-Do not rely on system(config.status) to externally supply values.
-
-=item --no-excludes
-
-Ignore file entries on the exclusion list, generate everything.
-
-=item --no-warnings
-
-Warnings are handled as an error condition.
-
-=back
-
-
-=head2 Examples
-
-=over 4
-
-=item * make-makefile -t /mozilla/nightly -d . memory/mozalloc
-
-cd $MOZ_OBJDIR;
---top and --depth are explicitly set for generting memory/mozalloc/Makefile.
-
-=item * make-makefile -t /mozilla/nightly -d ../../../.. html5lib_tree_construction/Makefile
-
-cd $MOZ_OBJDIR/parser/htmlparser/tests/mochitest
-
---top and --depth are explicitly set for generting a makefile from within
-a subdirectory of $MOZ_OBJDIR
-
-=item * make-makefile --top /mozilla/nightly --obj /mozilla/nightly/obj memory/mozalloc
-
-With --top and --obj explicitly set generate $MOZ_OBJDIR/memory/mozalloc/Makefile
-while sitting in the sandbox root.
-
-=back
-
-
-=head2 Work In Progress
-
-=over 4
-
-=item --no-badtokens
-
-Fail on unexpanded @foo@ makefile tokens.  Any tokens that can be expanded
-directly by make-makefile will avoid config.status shell overhead.
-
-=item Depth from delta(--obj, --top)
-
-If DEPTH= has not been embedded within a makefile the value could
-be set directly if --top and --obj are specified and the paths overlap.
-
-=back
-
-
-=head1 SEE ALSO
-
-L<config/rules.mk>
-
-=cut
deleted file mode 100644
--- a/build/autoconf/make-makefile.excl
+++ /dev/null
@@ -1,9 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-###########################################################################
-## Intent: Exclusion list for container make builds
-###########################################################################
-
-# EOF
deleted file mode 100644
--- a/build/autoconf/makemakefile.pm
+++ /dev/null
@@ -1,711 +0,0 @@
-package makemakefile;
-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-##----------------------------##
-##---] CORE/CPAN INCLUDES [---##
-##----------------------------##
-use strict;
-use warnings;
-# use feature 'state'; 5.10+ not available everywhere
-
-##-------------------##
-##---]  EXPORTS  [---##
-##-------------------##
-our $VERSION = qw(2.0);
-use Exporter;
-our @ISA = qw(Exporter);
-our @EXPORT = qw(dirname_legacy
-                 getConfig getDepth getRelPath getObjDir getTopDir mkdirr
-                 getExclusions
-                 run_config_status
-                 updateMakefiles
-                 update_makefiles_legacy
-                 );
-
-##--------------------##
-##---]  INCLUDES  [---##
-##--------------------##
-use Cwd;
-use Cwd     qw{abs_path};
-use FindBin;
-use File::Basename;
-use File::Copy;
-
-##-------------------##
-##---]  GLOBALS  [---##
-##-------------------##
-umask 0;
-my $cwd = Cwd::abs_path('.');
-my %argv;
-
-
-###########################################################################
-## Intent: Helper function, retrieve contents of a file with error checking
-## -----------------------------------------------------------------------
-## Args:
-##   scalar   path to input file
-## Returns:
-##   array    contents of the given file
-##   $@       set on error
-###########################################################################
-sub cat
-{
-    my $fyl = shift || '';
-    $@ = '';
-    my @data;
-
-    local *FYL;
-    if (!open(FYL, $fyl))
-    {
-        $@ = "open($fyl) failed: $!";
-    }
-    else
-    {
-        @data = <FYL>;
-        close(FYL);
-    }
-    return @data;
-} # cat
-
-###########################################################################
-## Intent: Return directory path for a given argument
-## -----------------------------------------------------------------------
-## -----------------------------------------------------------------------
-## Todo:
-##   o Check if function can be replaced by File::Basename::dirname()
-###########################################################################
-sub dirname_legacy
-{
-    my $str = (@_ && defined($_[0])) ? shift : '';
-    return $str =~ /(.*)\/.*/ ? "$1" : '.';
-}
-
-###########################################################################
-## Intent: Given a list of makefile paths recursively create all
-##         directories between file and the root
-## -----------------------------------------------------------------------
-## Args:
-##   array   A list of makefiles
-##   fargs   Function arguments
-##     mode  Filesystem mode used for directory creation
-## Returns:
-##   $@      Set on error
-##   0       on success
-## -----------------------------------------------------------------------
-## Note:
-##   Reporting directory creation can be enabled by the --verbose
-##   command line argument.
-###########################################################################
-sub mkdirr
-{
-    my %fargs = (@_ && ref($_[$#_])) ? %{ (pop) } : ();
-    my $mode = $fargs{mode} || 0755;
-    my $verbose = $main::argv{verbose} || 0;
-    $@ = '' unless ($fargs{recursive});
-    $fargs{recursive} = 1;
-
-    my @errors;
-    push(@errors, $@) if ($@);
-    foreach my $path (@_)
-    {
-        (my $dir = $path) =~ s%/?Makefile[^/]*$%%o;
-        next unless (length($dir));
-        next if (-e $dir);
-        mkdirr( dirname($dir), \%fargs);
-        eval{ File::Path::mkpath($dir, $verbose, 0755); };
-        push(@errors, $@) if ($@);
-    }
-    $@ = join("\n", @errors);
-    return $@ ? 0 : 1;
-} # mkdirr
-
-###########################################################################
-## Intent: Read in configure values and return a hash of key/value pairs
-## -----------------------------------------------------------------------
-## Args:
-##   fargs  Function arguments
-##     reset   clear value storage and repopulate
-## Returns:
-##   hash  configure data to use for makefile substitutions
-## -----------------------------------------------------------------------
-## Todo: wrapper for reading config* and run_config_status
-###########################################################################
-my %_CONFIG_; # todo: state %config; w/5.10
-sub getConfig
-{
-    my %fargs = (@_ && ref($_[$#_]) eq 'HASH') ? %{ (pop) } : ();
-    if ($fargs{reset})
-    {
-        %_CONFIG_ = ();
-        shift;
-    }
-
-    #my $ac_file_in    = "$ac_given_srcdir/${ac_file}.in";
-    #my $ac_dir        = dirname_legacy($ac_file);
-    #my $ac_dots       = '';
-    #my $ac_dir_suffix = '';
-    #my $srcdir        = '.';
-    #my $top_srcdir    = '.';
-    unless (%_CONFIG_)
-    {
-        while (@_)
-        {
-            my ($k, $v) = splice(@_, 0, 2);
-            $_CONFIG_{$k} = $v;
-        }
-    }
-
-    return %_CONFIG_;
-} # getConfig
-
-###########################################################################
-## Intent: Determine path depth between leaf and root directory.
-##   o DEPTH= may be set by makefile content
-##   o DEPTH= may be set by Makefile in a parent
-##   o Manually determine by relpath form leaf to sandbox top
-## -----------------------------------------------------------------------
-## Args:
-##   scalar  Path to makefile or directory to determine DEPTH for
-## Returns:
-##   scalar  Relative path from leaf to root directory
-## -----------------------------------------------------------------------
-###########################################################################
-sub getDepth($)
-{
-    my $fyl = shift || '';
-
-    my @path = split(m%/%o, $fyl);
-    pop(@path) if ('Makefile' eq substr($path[$#path], 0, 8));
-    my $depth;
-    my @depth;
-
-    my $top = getTopDir();
-    my @top = split(m%/%o, $top);
-    my @pathNoTop = @path;
-    splice(@pathNoTop, 0, scalar(@top));
-
-    SEARCH:
-    while (@path)
-    {
-        ## Search for a file containing DEPTH=../..
-        foreach my $fyl ( qw{Makefile.in Makefile} )
-        {
-            my $path = join('/', @path, $fyl);
-            local *FYL;
-            if (!open(FYL, $path)) {} # NOP
-            elsif (my @tmp = map{ /^\s*DEPTH\s*=\s*([\.\/]+)/o ? $1 : () } <FYL>)
-            {
-                $depth = join('/', @depth, shift @tmp);
-                last SEARCH;
-            }
-            close(FYL);
-        }
-        pop @path;
-        pop @pathNoTop;
-
-        if (0 == scalar(@pathNoTop))
-        {
-            $depth = join('/', @depth);
-            last;
-        }
-        
-        ## Construct path manually
-        push(@depth, '..');
-    }
-    return $depth;
-} # getDepth
-
-###########################################################################
-## Intent: Read in the exclusion file
-###########################################################################
-sub getExclusions
-{
-    my $file = shift || '';
-    
-    return () if ($main::argv{'no-exclusions'});
-
-    my %exclude;
-    if ($file)
-    {
-        my @data = cat($file);
-        foreach (@data)
-        {
-            next unless ($_);
-            next if (/^\s*\#/o);
-            next unless (m%/%);
-            chomp;
-            $exclude{$_}++;
-        }
-    }
-    return %exclude;
-} # getExclusions
-
-###########################################################################
-## Intent: Given the path to a makefile beneath either src or obj
-##         derive the relative path prefix between makefile and root.
-###########################################################################
-sub getRelPath
-{
-    my $path0 =  shift;
-    my $abspath;
-
-    # Determine type and orientation
-    my $name = basename($path0);
-    my $haveMF = ($name eq 'Makefile.in') ? 1
-        : ($name eq 'Makefile') ? -1
-        : 0
-        ;
-
-    ####################################################
-    ## Prep work: form a relative path with ../ removed
-    ####################################################
-    my $top = getTopDir();
-    my $obj = getObjDir();
-    ## If the same Makefile will be created alongside Makefile.in
-    my $topQM = quotemeta($top);
-    my $objQM = quotemeta($obj);
-
-    if ('..' eq substr($path0, 0, 2))
-    {
-        my @cwd = split(m%/%, $cwd);
-        my @pth = split(m%/%, $path0);
-        while (@pth && $pth[0] eq '..')
-        {
-            pop(@cwd);
-            shift @pth;
-        }
-        $path0 = join('/', @cwd, @pth);
-        $abspath = $path0;
-    }
-
-    if ('/' eq substr($path0, 0, 1))
-    {
-        $path0 =~ s%^$objQM\/?%%;
-        $path0 =~ s%^$topQM\/?%%;
-    }
-
-    #######################################################################
-    ## Build a list of directories to search.  Input source will be one
-    ## of path to Makefile.in, path to Makefile, directory, file within
-    ## a directory or relative path from cwd.
-    #######################################################################
-    my @subdirs;
-    my $path = (0 == $haveMF) ? $path0 : dirname($path0);
-    push(@subdirs, $path); # containing directory
-    push(@subdirs, dirname($path)) if (0 == $haveMF && -f $path); # Arg is file within a directory
-    push(@subdirs, $cwd);  # relative to pwd
-
-    # obj - path to generated makefile
-    # top - path to Makefile.in source template
-    my @prefixes = ('/' ne substr($path0, 0, 1))
-        ? (&getTopDir, &getObjDir)
-        : ()
-        ;
-
-  ON_SAFARI:
-    for my $prefix (@prefixes)
-    {
-        next unless ($prefix); # no command line not passed
-        foreach my $subdir (@subdirs)
-        {
-            foreach my $mf ('Makefile.in', 'Makefile')
-            {
-                my $path = join('/', $prefix, $subdir, $mf);
-                if (-e $path)
-                {
-                    $name = $mf;
-                    $haveMF = ($mf eq 'Makefile.in') ? 1 : -1;
-                    $abspath = $path;
-                    last ON_SAFARI;
-                }
-            }
-        }
-    }
-
-    #######################################################################
-    ## Generated makefile does not yet exist or path is invalid.
-    ## Should this conditon be handled to detect non-existent Makefile.in:
-    ##   Makefile.am => Makefile.in => Makefile but Makefile.in
-    #######################################################################
-    if (!$abspath && -1 == $haveMF && $obj)
-    {
-        $abspath = ('/' eq substr($path0, 0, 1)) 
-            ? $path0
-            : join('/', $obj, $path0)
-            ;
-    }
-
-    ########################################################
-    ## If --top and/or --obj specified extract relative path
-    ########################################################
-    my $relpath;
-    if (! $abspath)
-    {
-        # Error, fall through
-    }
-    elsif (1 == $haveMF) # Makefile.in
-    {
-        ## err w/o --top
-        (my $tmp = $abspath) =~ s%^$topQM/?%%;
-        $relpath = dirname($tmp) unless ($tmp eq $abspath);
-    }
-    elsif (-1 == $haveMF) # Makefile
-    {
-        ## err w/o --obj
-        (my $tmp = $abspath) =~ s%^$objQM/?%%;
-        $relpath = dirname($tmp) unless ($tmp eq $abspath);
-    }
-
-    $relpath ||= '';
-    $relpath =~ s%/./%/%og; # filter ./
-
-    $@ = ($relpath) ? '' : "ERROR($path0): Unable to locate sources";
-    return $relpath || '';
-} # getRelPath
-
-###########################################################################
-## Intent: Determine sandbox root from script startup directory
-## -----------------------------------------------------------------------
-## Args:
-##    _set_    optional, if passed use the given value as path
-##    _reset_  clear cached directory path to reassign
-## Returns:
-##   scalar - absolute path to the sandbox root directory
-## -----------------------------------------------------------------------
-###########################################################################
-my $gtd_dir;
-sub getTopDir
-{
-    if (@_) # testing override
-    {
-        $gtd_dir = abs_path($_[1] || '.') if ($_[0] eq '_set_');
-        $gtd_dir = ''    if ($_[0] eq '_reset_');
-    }
-
-    unless ($gtd_dir)
-    {
-        ## Set by command line
-        if ($main::argv{top})
-        {
-            $gtd_dir = $main::argv{top};
-        }
-        else
-        {
-            my $path = abs_path($FindBin::RealBin);
-            my @path = split(m%/%o, $path);
-            ## --2 memory/mozalloc/Makefile.in
-            ## --3 was this for FindBin::Script ?
-            splice(@path, -2);
-            $gtd_dir = join('/', @path);
-        }
-    }
-    return $gtd_dir;
-} # getTopDir
-
-###########################################################################
-## Intent: Determine path to MOZ_OBJDIR/object directory
-## -----------------------------------------------------------------------
-## Args:
-##   _set_    optional testing arg, if passed re-compute cached value
-## Returns:
-##   scalar - absolute path to the sandbox object directory
-## -----------------------------------------------------------------------
-###########################################################################
-my $god_dir;
-sub getObjDir
-{
-    if (@_) # testing override
-    {
-        if ($_[0] eq '_reset_')
-        {
-            $god_dir = '';
-            shift;
-        }
-        elsif ($_[0] eq '_set_')
-        {
-            shift;
-            my $path = $_[0] || '.';
-            $god_dir = abs_path($path);
-            shift;
-        }
-    }
-
-    ## extract $obj from given path
-    unless ($god_dir)
-    {
-        if ($main::argv{obj})
-        {
-            $god_dir = $main::argv{obj};
-        }
-        elsif (@_ && 'Makefile' eq substr($_, -8))
-        {
-            $god_dir = abs_path(shift);
-        }
-        else # assume we are sitting in moz_objdir
-        {
-            $god_dir = abs_path('.');
-        }
-    }
-
-    return $god_dir;
-} # getObjDir
-
-###########################################################################
-## Intent: Generate Makefile from a given Makefile.in template
-## -----------------------------------------------------------------------
-## Args:
-##   scalar  Relative path to a directory containing a makefile
-##   fargs   Hash ref of function arguments.
-##     obj     Absolute path to MOZ_OBJ/a destination directory
-##     top     Absolute path to the sandbox root
-## Returns:
-##    $@     Set on error
-##    scalar
-##      1     True if the makefile was updated
-##      0     Otherwise
-##      badtokens - If the makefile contains unexpandable @token@ strings
-## -----------------------------------------------------------------------
-###########################################################################
-sub updateMakefiles
-{
-    my %fargs = (@_ && ref($_[$#_])) ? %{ (pop) } : ();
-    local $_;
-    $@ = '';
-
-    my $top = $fargs{top};
-    my $obj = $fargs{obj};
-
-    my $relpath = shift || '';
-    my $src = join('/',  $top, $relpath, 'Makefile.in');
-    my $depth = getDepth($src);
-
-    my @src = cat($src);
-    return 0 if ($@);
-
-    my $dst = join('/', $obj, $relpath, 'Makefile');
-    my @dst = cat($dst);
-    $@ = '';
-
-    my $dstD = dirname($dst);
-    mkdirr($dstD);
-    return 0 if ($@);
-
-    my %data =
-        ( getConfig(),
-          depth      => $depth,
-          srcdir     => join('/', $top, $relpath),
-          top_srcdir => $top,
-        );
-
-    my $line = 0;
-    my @data;
-    while (scalar @src)
-    {
-        $line++;
-        $_ = shift(@src);
-
-        ## Expand embedded @foo@
-        while (/\@[^\@\s\$]+\@/go)
-        {
-            my $end = pos($_);
-            my $val = $&;
-            my $len = length($val);
-            $val =~ s/^\@\s*//o;
-            $val =~ s/\s*\@$//o;
-
-            ## Identify expansions to see if we can avoid shell overhead
-            if (!defined $data{$val} && !$argv{'no-badtokens'})
-            {
-                if (1) # warnings
-                {
-                    print STDERR "WARNING: token $val not defined\n";
-                    print STDERR "   line $line, src: $src\n";
-                }
-                return 'badtokens';
-            }
-
-            # Insert $(error txt) makefile macros for invalid tokens
-            my $val1 = defined($data{$val})
-                ? $data{$val}
-                : "\$(error $FindBin::Script: variable ${val} is undefined)"
-                ;
-            substr($_, ($end-$len), $len, $val1);
-        }
-        push(@data, $_);
-    }
-
-    if (("@data" eq "@dst") && scalar(@data))
-    {
-        print "Skipping up2date makefile: $dst\n" if ($argv{verbose});
-    }
-    else
-    {
-        my $action = (scalar @dst) ? 'Updating' : 'Creating';
-        print "$action makefile: $dst\n";
-
-        my $tmp = join('.', $dst, "tmp_$$");
-        if (!open(FYL, "> $tmp"))
-        {
-            $@ = "open($tmp) failed: $!";
-        }
-        else
-        {
-            print FYL @data;
-            close(FYL);
-
-            ## Install the new makefile
-            File::Copy::move($tmp, $dst)
-                || ($@ = "move($tmp, $dst) failed: $!");
-        }
-    }
-
-    return $@ ? 0 : 1;
-} # updateMakefiles
-
-# Output the makefiles.
-#
-sub update_makefiles_legacy {
-  my ($ac_given_srcdir, $pac_given_srcdir, @makefiles) = @_;
-  my $debug = $main::argv{debug} || 0;
-  my $pwdcmd = ($^O eq 'msys') ? 'pwd -W' : 'pwd';
-  my @unhandled=();
-
-  my @warn;
-
-  my $ac_file;
-  foreach $ac_file (@makefiles) {
-    my $ac_file_in    = "$ac_given_srcdir/${ac_file}.in";
-    my $ac_dir        = dirname_legacy($ac_file);
-    my $ac_dots       = '';
-    my $ac_dir_suffix = '';
-    my $srcdir        = '.';
-    my $top_srcdir    = '.';
-
-    # Determine $srcdir and $top_srcdir
-    #
-    if ($ac_dir ne '.') {
-      $ac_dir_suffix = "/$ac_dir";
-      $ac_dir_suffix =~ s%^/\./%/%;
-      $ac_dots = $ac_dir_suffix;
-      # Remove .. components from the provided dir suffix, and
-      # also the forward path components they were reversing.
-      my $backtracks = $ac_dots =~ s%\.\.(/|$)%%g;
-      while ($backtracks--) {
-        $ac_dots =~ s%/[^/]*%%;
-      }
-      $ac_dots =~ s%/[^/]*%../%g;
-    }
-    if ($ac_given_srcdir eq '.') {
-      if ($ac_dots ne '') {
-        $top_srcdir = $ac_dots;
-        $top_srcdir =~ s%/$%%;
-      }
-    } elsif ($pac_given_srcdir =~ m%^/% or $pac_given_srcdir =~ m%^.:/%) {
-      $srcdir     = "$pac_given_srcdir$ac_dir_suffix";
-      $top_srcdir = "$pac_given_srcdir";
-    } else {
-      if ($debug) {
-              print "ac_dots       = $ac_dots\n";
-        print "ac_dir_suffix = $ac_dir_suffix\n";
-      }
-      $srcdir     = "$ac_dots$ac_given_srcdir$ac_dir_suffix";
-      $top_srcdir = "$ac_dots$ac_given_srcdir";
-    }
-
-    if ($debug) {
-      print "ac_dir     = $ac_dir\n";
-      print "ac_file    = $ac_file\n";
-      print "ac_file_in = $ac_file_in\n";
-      print "srcdir     = $srcdir\n";
-      print "top_srcdir = $top_srcdir\n";
-      print "cwd        = " . `$pwdcmd` . "\n";
-    }
-
-    # Copy the file and make substitutions.
-    #    @srcdir@     -> value of $srcdir
-    #    @top_srcdir@ -> value of $top_srcdir
-    #
-    if (-e $ac_file) {
-      next if -M _ < -M $ac_file_in;  # Next if Makefile is up-to-date.
-      warn "updating $ac_file\n";
-    } else {
-      warn "creating $ac_file\n";
-    }
-
-    mkdirr(dirname($ac_file));
-
-    open INFILE, "<$ac_file_in" or do {
-      warn "$0: Cannot read $ac_file_in: No such file or directory\n";
-      next;
-    };
-    open OUTFILE, ">$ac_file" or do {
-      warn "$0: Unable to create $ac_file\n";
-      next;
-    };
-
-    while (<INFILE>) {
-      s/\@srcdir\@/$srcdir/g;
-      s/\@top_srcdir\@/$top_srcdir/g;
-
-      if (/\@[_a-zA-Z]*\@/) {
-        #warn "Unknown variable:$ac_file:$.:$_";
-        push @unhandled, $ac_file;
-        last;
-      }
-      print OUTFILE;
-    }
-    close INFILE;
-    close OUTFILE;
-  }
-  return @unhandled;
-} # update_makefiles_legacy
-
-###########################################################################
-## Intent: Invoke config.status for unknown makefiles to create
-##         directory hierarchy for the tree.
-## -----------------------------------------------------------------------
-## Args:
-##   array   an optional list of makefiles to process
-## Returns:
-##   0    on success
-##   $#   set on error
-## -----------------------------------------------------------------------
-## Note: Is this function needed anymore ?  Undefined tokens should fail
-##   at time of expansion rather than having to source config.status.
-##   Also config.status could be parsed to define values and avoide the
-##   shell overhead altogether.
-###########################################################################
-sub run_config_status {
-  my @unhandled = @_;
-
-  # Run config.status with any unhandled files.
-  #
-  my @errors;
-  if (@unhandled) {
-    local $ENV{CONFIG_FILES}= join ' ', @unhandled;
-
-    my $conf = 'config.status';
-    if (! -e $conf) # legacy behavior, warn rather than err
-    {
-        my $cwd = cwd();
-        my $err = "$FindBin::Script ERROR: Config file $conf does not exist, cwd=$cwd";
-        push(@errors, $err);
-    }
-    elsif (0 != system("./config.status"))
-    {
-        my $cwd = cwd();
-        push(@errors, "config.status failed \$?=$?, \$!=$!, cwd: $cwd");
-    }
-  }
-  $@ = join("\n", @errors);
-
-  ## Legacy behavior: config.status problems are not fatal {yet}.
-  ## Display warning since caller will not be calling die.
-  warn $@ if ($@ && $argv{'no-warnings'});
-  return $@ ? 1 : 0;
-}
-
-1;
deleted file mode 100644
--- a/build/autoconf/test/Makefile.in
+++ /dev/null
@@ -1,62 +0,0 @@
-# -*- makefile -*-
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DEPTH		= ../../..
-topsrcdir	= @top_srcdir@
-srcdir		= @srcdir@
-VPATH		= @srcdir@
-
-include $(DEPTH)/config/autoconf.mk
-include $(topsrcdir)/config/rules.mk
-
-##################################################
-## Gather a list of tests, generate timestamp deps
-##################################################
-TS=.ts
-ifneq (,$(findstring check,$(MAKECMDGOALS)))
-          allsrc = $(wildcard $(srcdir)/*)
-       tests2run = $(notdir $(filter %.tpl,$(allsrc)))
-       tests2run += $(notdir $(filter %.tpm,$(allsrc)))
-  check_targets += $(addprefix $(TS)/,$(tests2run))
-endif
-
-all_nop: # export, libs and tools are not needed
-
-check:: $(TS) $(check_targets)
-
-#############################################
-# Only invoke tests when sources have changed
-#############################################
-$(TS)/%: $(srcdir)/%
-	$(PERL) $(srcdir)/runtest $<
-	@touch $@
-
-parent = $(patsubst %/,%,$(dir $(srcdir)))
-$(TS)/make-makefile.tpl: \
-  $(srcdir)/make-makefile.tpl\
-  $(parent)/makemakefile.pm\
-  $(NULL)
-	$(PERL) $(srcdir)/runtest $<
-	@touch $@
-
-$(TS)/makemakefile.tpm: \
-  $(srcdir)/makemakefile.tpm \
-  $(parent)/makemakefile.pm \
-  $(NULL)
-	$(PERL) $(srcdir)/runtest $<
-	@touch $@
-
-#####################################################
-## Extra dep needed to synchronize parallel execution
-#####################################################
-$(TS): $(TS)/.done
-$(TS)/.done:
-	$(MKDIR) -p $(dir $@)
-	touch $@
-
-GARBAGE_DIRS += $(TS)
-
-# EOF
deleted file mode 100644
--- a/build/autoconf/test/data/mf.notokens
+++ /dev/null
@@ -1,4 +0,0 @@
-jsautocfg.h: jscpucfg$(HOST_BIN_SUFFIX)
-        @$(RM) $@ jsautocfg.tmp
-        ./jscpucfg > jsautocfg.tmp
-        mv jsautocfg.tmp $@
deleted file mode 100644
--- a/build/autoconf/test/data/mf.notokens.exp
+++ /dev/null
@@ -1,4 +0,0 @@
-jsautocfg.h: jscpucfg$(HOST_BIN_SUFFIX)
-        @$(RM) $@ jsautocfg.tmp
-        ./jscpucfg > jsautocfg.tmp
-        mv jsautocfg.tmp $@
deleted file mode 100644
--- a/build/autoconf/test/make-makefile.excl
+++ /dev/null
@@ -1,8 +0,0 @@
-###########################################################################
-## Intent: Exclusion list for container make builds
-###########################################################################
-
-/dev/null
-/foo/bar
-/a/b/c
-/a/b/d
deleted file mode 100644
--- a/build/autoconf/test/make-makefile.tpl
+++ /dev/null
@@ -1,436 +0,0 @@
-#!/usr/bin/env perl
-###########################################################################
-## Intent: Unit test to verify make-makefile.tpl
-###########################################################################
-
-##----------------------------##
-##---] CORE/CPAN INCLUDES [---##
-##----------------------------##
-use strict;
-use warnings;
-#use feature 'state';  # 5.10+ not installed everywhere
-use Getopt::Long;
-
-use Cwd;
-use Cwd         qw{abs_path};
-use File::Basename;
-use File::Copy;
-use File::Path;
-use File::Temp  qw{ tempdir };
-
-use Test;
-sub BEGIN { plan tests => 4 };
-my @workdirs;
-sub END { system("/bin/rm -fr @workdirs"); }  # cleanup behind interrupts
-
-##-------------------##
-##---]  EXPORTS  [---##
-##-------------------##
-use FindBin;
-our $VERSION = qw(1.0);
-
-##------------------##
-##---] INCLUDES [---##
-##------------------##
-use FindBin;
-use lib "$FindBin::RealBin/..";
-use makemakefile;
-
-##-------------------##
-##---]  GLOBALS  [---##
-##-------------------##
-my %argv;
-
-###########################################################################
-## Intent: Create a temp sandbox populated with sources
-## -----------------------------------------------------------------------
-## Args:
-##   array    a list of file paths to copy
-## Returns:
-##     $@     set on error
-##   scalar   path to scratch sandbox
-## -----------------------------------------------------------------------
-###########################################################################
-my $root; # state $root not available
-sub createSandbox
-{
-    my @errors;
-
-    unless ($root)
-    {
-        my @tmp = split(m%/%, $FindBin::RealBin);
-        splice(@tmp, -3);
-        $root = join('/', @tmp);
-    }
-
-    my $work = tempdir();
-    push(@workdirs, $work);
-    my @dirs = map{ join('/', $work, dirname($_)) } @_;
-    mkdirr(@dirs);
-    push(@errors, "createSandbox: $@") if ($@);
-
-    foreach (@_)
-    {
-        ## Copy sources into the temp source directory
-        my $src = join('/', $root, $_);
-        my $dst = join('/', $work, $_);
-        unless (copy($src, $dst))
-        {
-            push(@errors, "copy($src, $dst) failed: $!");
-        }
-    }
-    print STDERR "createSandbox: $work\n" if ($main::argv{debug});
-    $@ = join('', map{ "$_\n" } @errors);
-    $work;
-} # createSandbox
-
-###########################################################################
-## Intent: wrapper to run the make-makefile command.
-## -----------------------------------------------------------------------
-## Args:
-##   array  command line arguments passed to make-makefile
-## Returns:
-##    array  command output
-##    $@     set by shell exit status, empty string on success
-##    $?     command shell exit status
-###########################################################################
-my $mm; # state $mm not available
-sub makemakefile
-{
-    my %fargs = (@_ && ref($_[$#_])) ? %{ (pop) } : ();
-    $mm ||= join('/', dirname($FindBin::Bin), 'make-makefile'); # cmd in parent of test/
-    my $cmd = join(' ', $mm, @_);
-    print "RUNNING: $cmd\n" if ($fargs{debug});
-    my @out = `$cmd 2>&1`;
-    print STDERR map{ "out> $_" } @out if ($argv{verbose});
-    $@ = (0 == $?) ? '' : "Command failed: $cmd\n@out";
-    @out;
-} # makemakefile
-
-###########################################################################
-## Intent: Helper function, display the contents of a given sandbox
-## -----------------------------------------------------------------------
-## Args:
-##   scalar   Path to sandbox
-## Returns:
-##   none
-## -----------------------------------------------------------------------
-###########################################################################
-sub find_ls
-{
-    my $path = shift || '';
-
-    # Assuming dot contributes to cryptic problems
-    die "find_ls: a path is required" unless ($path);
-
-    my $cmd = "find $path -ls";
-    print "\nRunning: $cmd\n";
-    print '=' x 75, "\n";
-    print `$cmd`;
-} # myls
-
-###########################################################################
-## Intent: Verify make-makefile is able to digest paths and generate
-##         makefiles when object directory is a child of top.
-###########################################################################
-sub check_makemakefile
-{
-    my $work = createSandbox
-        (
-         'memory/mozalloc/Makefile.in',
-         'toolkit/system/windowsproxy/Makefile.in',
-         'toolkit/crashreporter/google-breakpad/src/client/Makefile.in',
-        );
-
-
-    my $workdir = createSandbox();
-    my $top = $workdir;
-    chdir $top;
-
-    my $objA = 'obj-arch-dir';
-    my $obj = join('/', $top, $objA);
-
-    # getTopDir()
-    local $main::argv{top} = $work;
-    local $main::argv{obj} = $obj;
-    getObjDir('_reset_');
-
-    my @root = split(m%/%, $FindBin::RealBin);
-    splice(@root, -3);
-    my $root = join('/', @root);
-    my @args =
-        (
-
-         [
-          banner => "--top and --obj are impled, generate Makefile",
-             rel => 'memory/mozalloc',
-             cmd => join(' ',
-                         '--top', $top,
-                         '--obj', $obj,
-                         'memory/mozalloc/Makefile',
-                         ),
-         ],
-
-         [
-          banner => "--top and abs(obj) passed",
-             rel => "toolkit/system/windowsproxy",
-             cmd => join(' ',
-                         '--top', $top,
-                         "$obj/toolkit/system/windowsproxy/Makefile",
-                         ),
-             exp => "$obj/toolkit/system/windowsproxy/Makefile",
-            skip => 1, #
-         ],
-
-
-         [
-          banner => "--obj and abs(top) passed",
-             rel => "toolkit/crashreporter/google-breakpad/src/client",
-             cmd => join(' ',
-                         '--obj', $obj,
-                         "$top/toolkit/crashreporter/google-breakpad/src/client/Makefile.in",
-                         ),
-             exp => "$top/toolkit/crashreporter/google-breakpad/src/client/Makefile.in",
-          skip => 1, #
-         ],
-
-         );
-
-    foreach (@args)
-    {
-        my %rec = @{ $_ };
-        next if ($rec{skip});
-        next unless ($rec{rel});
-
-        my $srcR = join('/', $top, $rec{rel});
-        my $dstR = join('/', $obj, $rec{rel});
-
-        my $src = join('/', $top, $rec{rel}, 'Makefile.in');
-        my $dst = join('/', $obj, $rec{rel}, 'Makefile');
-
-        # Use distinct sources to avoid cleanup overhead between tests
-        die "Test source already used: $dstR" if (-d $dstR);
-
-        ## Copy sources into the temp source directory
-        my $rootR = join('/', $root, $rec{rel});
-        my $rootS = join('/', $root, $rec{rel}, 'Makefile.in');
-        File::Path::mkpath($srcR, 0, 0700);
-        copy($rootS, $src) or die "copy($rootS, $src) failed: $!";
-
-        die "source does not exist: $src" unless (-e $src);
-
-        ######################
-        ## Generate and verify
-        ######################
-        print STDERR "RUNNING: $rec{banner}\n" if ($argv{debug});
-        my @errs;
-        makemakefile('--enhanced', $rec{cmd}, {verbose=>1});
-        if ($@)
-        {
-            push(@errs, "\$@ should not be set: $@\n");
-        }
-        elsif (! -e $dst)
-        {
-            push(@errs, "Generated makefile does not exist: $dst, banner: $rec{banner}\n");
-        }
-
-        ok(scalar(@errs), 0, "Errors detected:\n" . join("    $_", @errs));
-        find_ls($top) if (@errs);
-    }
-
-} # check_makemakefile
-
-###########################################################################
-## Intent: Verify make-makefile is able to digest paths and generate
-##         makefiles when top/MOZ_OBJDIR are not parent/child directories
-## ---------------------------------------------------------------------------
-## Args:
-##   none
-## Returns:
-##   none
-## ---------------------------------------------------------------------------
-###########################################################################
-sub check_makemakefile_distinct
-{
-    my $workdir = createSandbox();
-#    my $workdir = tempdir();
-
-    ###############################################
-    ## Now update when top/obj are not parent/child
-    ###############################################
-    my $top = join('/', $workdir, 'top');
-    my $obj = join('/', $workdir, 'obj');
-
-    $main::argv{top} = $top;
-    $main::argv{obj} = $obj;  # test afterward, using undef ?
-
-    my @sbxroot = split(m%/%, $FindBin::RealBin);
-    splice(@sbxroot, -2);
-    my $sbxroot = join('/', @sbxroot);
-
-    ## Copy in a makefile template to to convert
-    File::Path::mkpath(["$top/memory/mozalloc"], 0, 0700);
-    copy("$sbxroot/memory/mozalloc/Makefile.in", "$top/memory/mozalloc/Makefile.in");
-
-
-    # work/memory/mozalloc/Makefile.in
-
-    my @args =
-        (
-         [
-          banner => '--top and --obj are distinct [1]',
-             cmd => "--obj $obj memory/mozalloc/Makefile",
-             exp => "$obj/memory/mozalloc/Makefile",
-         ],
-
-         [
-          banner => "--top and --obj are distinct [2]",
-             cmd => "--top $top memory/mozalloc/Makefile.in",
-             exp => "$obj/memory/mozalloc/Makefile",
-            skip => 1,  # test problem: top != obj
-         ],
-
-         [
-          banner => "--top and --obj are distinct [3]",
-             cmd => join(' ',
-                         "--top $top",
-                         "--obj $obj",
-                         "memory/mozalloc/Makefile.in",
-                         ),
-             exp => "$obj/memory/mozalloc/Makefile",
-            skip => 1,  # test problem: top != obj
-         ],
-        );
-
-
-    foreach (@args)
-    {
-        my %rec = @{ $_ };
-        print STDERR "banner: $rec{banner}\n" if ($argv{debug});
-        next if $rec{skip};
-
-        unlink $rec{exp};
-        makemakefile('--enhanced', $rec{cmd});
-
-        my @errs;
-        if ($@)
-        {
-            push(@errs, "\$@ should not be set: $@\n");
-        }
-        elsif (! -e $rec{exp})
-        {
-            push(@errs, "Makefile does not exist: $rec{exp}\n");
-        }
-        ok(scalar(@errs), 0, "Errors detected:\n" . join("    $_", @errs));
-    }
-
-} # check_makemakefile_distinct
-
-###########################################################################
-## Intent: Verify legacy behavior, invoke make-makefile when cwd is
-##         a subdirectory beneath MOZ_OBJDIR.
-## -----------------------------------------------------------------------
-## Args:
-##   none
-## Returns:
-##   none
-## -----------------------------------------------------------------------
-###########################################################################
-sub check_makemakefile_legacy
-{
-    my $work = createSandbox
-        (
-         'memory/mozalloc/Makefile.in',
-         'parser/htmlparser/tests/mochitest/html5lib_tree_construction/Makefile.in',
-        );
-
-    my $obj = join('/', $work, 'obj');
-    mkdir $obj;
-
-    my @args =
-        (
-         {
-             banner => '-t path -d dot',
-                cwd => $obj,
-                cmd => "-t $work -d . memory/mozalloc/Makefile",
-                exp => "$obj/memory/mozalloc/Makefile",
-               skip => 0,
-         },
-         
-         {
-             banner => '-t path -d relpath',
-                cwd => join('/', $obj, 'parser/htmlparser/tests/mochitest'),
-                cmd => "-t $work -d ../../../.. html5lib_tree_construction/Makefile",
-                exp => "$obj/parser/htmlparser/tests/mochitest/html5lib_tree_construction/Makefile",
-               skip => 0,
-         },
-        );
-
-    foreach (@args)
-    {
-        my %rec = %{ $_ };
-        next if ($rec{skip});
-
-        ## make-make while sitting in $objdir
-        mkdirr($rec{cwd});
-        chdir $rec{cwd} || die "chdir $rec{cwd} failed; $!";
-
-        makemakefile($rec{cmd});
-        my @errs;
-        if ($@)
-        {
-            push(@errs, "make-makefile $rec{cmd} failed: $@");
-        }
-        elsif (! -e $rec{exp})
-        {
-            push(@errs, "generated makefile does not exist: $rec{exp}");
-        }
-        ok(scalar(@errs), 0, "Errors detected: @errs");
-        find_ls($work) if (@errs);
-    }
-    chdir $FindBin::RealBin;
-} # check_makemakefile_legacy
-
-###########################################################################
-## Intent: Smoke tests for the unittests module
-###########################################################################
-sub smoke
-{
-    print STDERR "Running test: smoke()\n" if ($argv{debug});
-} # smoke()
-
-###########################################################################
-## Intent: Intitialize global test objects and consts
-###########################################################################
-sub init
-{
-    print "Running: init()\n" if ($argv{debug});
-#    testplan(24, 0);
-} # init()
-
-##----------------##
-##---]  MAIN  [---##
-##----------------##
-unless(GetOptions(\%argv,
-                  qw(
-                     debug|d
-                     manual
-                     test=s@
-                     verbose
-                     )))
-{
-    print "USAGE: $0\n";
-    print "  --debug    Enable script debug mode\n";
-    print "  --manual   Also run disabled tests\n";
-    print "  --smoke    Run smoke tests then exit\n";
-    print "  --test     Run a list of tests by function name\n";
-    print "  --verbose  Enable script verbose mode\n";
-    exit 1;
-}
-
-init();
-smoke();
-
-check_makemakefile();
-check_makemakefile_distinct();
-check_makemakefile_legacy();
deleted file mode 100644
--- a/build/autoconf/test/makemakefile.tpm
+++ /dev/null
@@ -1,519 +0,0 @@
-#!/usr/bin/env perl
-###########################################################################
-## Intent: Unit test to verify the makemakefile.pm module
-###########################################################################
-
-##----------------------------##
-##---] CORE/CPAN INCLUDES [---##
-##----------------------------##
-use strict;
-use warnings;
-#use feature 'state';
-use Getopt::Long;
-
-use FindBin;
-use Cwd         qw{abs_path};
-use File::Basename;
-use File::Compare;
-use File::Copy;
-use File::Temp  qw{tempdir};
-
-use Test;
-sub BEGIN { plan tests => 36 };
-my @workdirs;
-sub END { system("/bin/rm -fr @workdirs"); }  # cleanup behind interrupts
-
-##-------------------##
-##---]  EXPORTS  [---##
-##-------------------##
-our $VERSION = qw(1.0);
-
-##------------------##
-##---] INCLUDES [---##
-##------------------##
-use FindBin;
-use lib "$FindBin::RealBin/..";
-use makemakefile;
-
-##-------------------##
-##---]  GLOBALS  [---##
-##-------------------##
-my %argv;
-
-###########################################################################
-## Intent: Create a temp sandbox populated with sources
-## -----------------------------------------------------------------------
-## Args:
-##   array    files to copy into the temporary sandbox
-## Returns:
-##     $@     set on error
-##   array 
-##     top  - path to temp sandbox root
-##     obj  - path to temp sandbox moz_obj directory
-## -----------------------------------------------------------------------
-###########################################################################
-my $_root_; # state $root
-sub createSandbox
-{
-#    state $root;
-    my @errors;
-
-    unless ($_root_)
-    {
-        my @tmp = split(m%/%, $FindBin::RealBin);
-        splice(@tmp, -3);
-        $_root_ = join('/', @tmp);
-    }
-
-    my $work = tempdir(CLEANUP=>1);
-    push(@workdirs, $work);
-    my @dirs = map{ join('/', $work, dirname($_)) } @_;
-    mkdirr(@dirs);
-    push(@errors, "createSandbox: $@") if ($@);
-
-    foreach (@_)
-    {
-        ## Copy sources into the temp source directory
-        my $src = join('/', $_root_, $_);
-        my $dst = join('/', $work, $_);
-        unless (copy($src, $dst))
-        {
-            push(@errors, "copy($src, $dst) failed: $!");
-        }
-    }
-    print STDERR "createSandbox: $work\n" if ($main::argv{debug});
-    $@ = join('', map{ "$_\n" } @errors);
-    $work;
-} # createSandbox
-
-###########################################################################
-## Intent: Verify legacy dirname function
-###########################################################################
-sub check_dirname_legacy
-{
-    print "Running: check_dirname_legacy\n" if ($main::argv{debug});
-
-    foreach (
-        ['/dev/null', '/dev'],
-        ['/foo/bar/Makefile', '/foo/bar'],
-        )
-    {
-        my ($src, $exp) = @{ $_ };
-        my $dir = dirname_legacy($src);
-        ok($dir, $exp, "dirname_legacy($src) failed");
-    }
-
-    my $path = dirname_legacy(undef);
-    ok($path ? 1 : 0, 1, "dirname('') should expand to cwd");
-} # check_dirname_legacy
-
-###########################################################################
-## Intent: Verify topdir lookup function
-###########################################################################
-sub check_getTopDir
-{
-    print "Running: check_getTopDir\n" if ($main::argv{debug});
-
-    my $path = getTopDir();
-
-    ## Unit test is special, cmd not invoked from the same directory
-    ## as the makemakefile.pm module.
-    ok($path ? 1 : 0, 1, "getTopDir failed");
-    ok(-d $path ? 1 : 0, 1, "getTopDir: directory $path does not exist");
-    ok($FindBin::RealBin =~ m%\Q$path/% ? 1 : 0, 1, 'Invalid topdir path');
-    ok(-e "$path/client.mk" ? 1 : 0, 1, "client.mk not found in $path");
-} # check_getTopDir
-
-###########################################################################
-## Intent: Verify objdir lookup function
-###########################################################################
-sub check_getObjDir
-{
-    print "Running: check_getObjDir\n" if ($main::argv{debug});
-    local $main::argv{obj} = '/bin';
-    my $path = getObjDir('_reset_');
-    ok($path ? 1 : 0, 1, "getObjDir failed");
-    ok(-d $path ? 1 : 0, 1, "getObjDir: directory $path does not exist");
-
-    my $top = getTopDir();
-    $main::argv{obj} = join('/', $top, 'browser'); # use existing path so file can be resolved
-    my $obj = getObjDir('_reset_');
-    ok($top ne $obj ? 1 : 0, 1, "top and object directory paths should not match");
-
-    ## If we fail for /bin use here getObjDir() was not reset
-    my $client = join('/', $obj, '..', 'client.mk');
-    ok(-e $client ? 1 : 0, 1, "client.mk not found in parent of $path, $client");
-    getObjDir('_set_'); # clear cached value and recompute
-
-    foreach my $file ("$top/memory/mozalloc/Makefile")
-    {
-        my $obj = getObjDir('_reset_', $file);
-        ok($obj ne $file ? 1 : 0, 1, "getObjDir($file) failed")
-    }
-} # check_getObjDir
-
-###########################################################################
-## Intent: Verify rel-path-to-root/getdepth function
-###########################################################################
-sub check_getDepth
-{
-    my @tmp = split(m%/%o, $FindBin::Bin);
-    splice(@tmp, -3);
-    my $root = abs_path( join('/', @tmp) );
-
-    my %data =
-        (
-         $root => '.',
-         join('/', $root, 'netwerk/Makefile.in') => '..',
-
-         join('/', $root, 'browser/components/privatebrowsing/test/browser/Makefile.in') => '../../../../..',
-         join('/', $root, 'browser/components/privatebrowsing/test/browser/') => '../../../../..',
-         join('/', $root, 'browser/components/privatebrowsing/test/browser') => '../../../../..',
-         join('/', $root, 'browser/components/privatebrowsing/test') => '../../../..',
-        );
-
-    while (my($k, $v) = each %data)
-    {
-        my $depth = makemakefile::getDepth($k);
-        ok($depth, $v, "getDepth($k) failed");
-    }
-} # check_getDepth
-
-###########################################################################
-## Intent: Verify reading the exclusion file
-###########################################################################
-sub check_getExclusions
-{
-    my $cfg = join('/', $FindBin::RealBin, 'make-makefile.excl');
-    my %excl = getExclusions($cfg);
-    ok($@, '', '$@ should not be set');
-
-    my @excl = sort keys %excl;
-    ok(scalar @excl, 4, "Exclusion file is invalid: \@excl=@excl");
-} # check_getExclusions
-
-###########################################################################
-## Intent: Verify rel-path-to-root function
-## -----------------------------------------------------------------------
-## Args:
-##   none
-## Returns:
-##   none
-## -----------------------------------------------------------------------
-## Note:
-##   String test only, top and obj paths are bogus for this test
-###########################################################################
-sub check_getRelPath
-{
-    my @tmp = split(m%/%o, $FindBin::Bin);
-    splice(@tmp, -3);
-    my $root = abs_path( join('/', @tmp) );
-    my $obj0 = 'obj-arch';
-    my $obj = join('/', $root, $obj0);
-
-    local $main::argv{top} = $root;
-    local $main::argv{obj} = $obj;
-    getTopDir('_reset_');
-    getObjDir('_set_', $obj);
-
-    ## Cannot test relative paths with objdir beneath /tmp
-    ## Commented paths are needed for full test coverage
-    ## but are not currently supported by all module functions.
-    my %data =
-        (
-         # Relative - path correct for build directory but 
-         'profile/dirserviceprovider/public/Makefile.in'                   => 'profile/dirserviceprovider/public',
-
-         join('/', $root, 'profile/dirserviceprovider/public/Makefile.in') => 'profile/dirserviceprovider/public',
-
-         # File search
-         'profile/dirserviceprovider/public'                               => 'profile/dirserviceprovider/public',
-
-         # cwd + cleanup
-         # '../../../profile/dirserviceprovider/public/Makefile.in'          => 'profile/dirserviceprovider/public',
-#         "../../../${obj0}/profile/dirserviceprovider/public/Makefile.in"  => 'profile/dirserviceprovider/public',
-
-         ## Special case: This could be handled but permutations of non-existent files, non-overlapping paths
-         ## and relative paths containing partial subdirectories will compilicate the logic.  Wait until needed.
-         ## Relative path: $root + obj + subdir
-#         "${obj0}/profile/dirserviceprovider/public/Makefile"          => 'profile/dirserviceprovider/public',
-         join('/', $obj, 'profile/dirserviceprovider/public/Makefile') => 'profile/dirserviceprovider/public',
-
-         # $RealBin, -d ../../..
-         # top and obj not subdirectories of each other:  /foo/x, /bar/y
-        );
-
-    while (my($k, $v) = each %data)
-    {
-        my $dir = getRelPath($k);
-        ok($@, '', '$@ should not be set');
-        ok($dir, $v, "ERROR[$k]: exp[$v] != found=[$dir]");
-    }
-
-
-    my $top = '/tmp/foo';
-    my $tmp = '/tmp/bar';
-    local $main::argv{top} = $tmp;
-    local $main::argv{obj} = $obj;
-
-    %data =
-        (
-#         "$top/profile/dirserviceprovider/public/Makefile.in" => 'profile/dirserviceprovider/public',
-         "$obj/profile/dirserviceprovider/public/Makefile"    => 'profile/dirserviceprovider/public',
-        );
-
-    while (my($k, $v) = each %data)
-    {
-        my $dir = getRelPath($k);
-        ok($dir, $v, "ERROR[$k]: exp[$v] != found=[$dir]");
-    }
-} # check_getRelPath
-
-###########################################################################
-## Intent: Verify rel-path-to-root directory creation
-###########################################################################
-sub check_mkdirr
-{
-    if (-w '/bin') # cygwin may be writable
-    {
-        ok(1, 1, 'bogus test to maintain count');
-    } else {
-        mkdirr('/bin/invalid/Makefile');
-        ok($@ ? 1 : 0, 1, '$@ should be set');
-    }
-
-    my $work = createSandbox();
-    my @paths = map{ join('/', $work, $_, 'Makefile.in') } qw (xyz/abc foo/bar a/b/c/d/e);
-    mkdirr(@paths);
-    ok($@ ? 1 : 0, 0, '$@ should not be set');
-
-    push(@paths, '/bin');
-
-    my @errors;
-    foreach (@paths)
-    {
-        my $dir = dirname($_);
-        next if (-d $dir);
-        push(@errors, "mkdirr($dir) failed\n");
-    }
-    ok(scalar @errors, 0, "Errors detected: @errors");
-} # check_mkdirr
-
-###########################################################################
-## Intent: Verify permutations for system("config.status")
-###########################################################################
-sub check_run_config_status
-{
-    print STDERR "Running: check_run_config_status()\n"
-        if ($main::argv{debug});
-
-    my $work = createSandbox();
-    chdir $work;
-    run_config_status();
-    ok($@ ? 1 : 0, '$@ should be set, config.status does not exist');
-
-    my $cfg = join('/', $work, 'config.status');
-    local *CFG;
-    open(CFG, "> $cfg") && close(CFG);
-    run_config_status();
-    ok($@, qr/config.status failed/, '$@ should be set, config.status is not executabl');
-
-    open(CFG, "> $cfg");
-    print CFG join("\n",
-		   '#!/bin/sh',
-		   '',
-		   'true',
-		   '');
-    close(CFG);
-    chmod 0555, $cfg;
-    run_config_status();
-    ok($@, qr/config.status failed/, '$@ should not be set');
-		   
-} # check_run_config_status
-
-###########################################################################
-## Intent: Verify makefile generation by legacy make-makefile functions
-##   o make-makefile -t /x/y -d ..
-###########################################################################
-sub check_update_makefiles_legacy
-{
-    print STDERR "Running: check_update_makefiles_legacy()\n"
-        if ($main::argv{debug});
-    
-    return unless ($argv{legacy});
-    print STDERR "check_update_makefiles_legacy: not yet implemented\n";
-
-} # check_update_makefiles_legacy
-
-###########################################################################
-## Intent: Verify updateMakefiles()
-##   o a makefile is generated when none exists.
-##   o a makefile will only be updated when the templates changes.
-##   o existing makefiles will be updated when the template changes.
-##   o @foo@ tokens have been expanded
-###########################################################################
-sub check_updateMakefiles
-{
-    my @errors;
-
-    print STDERR "Running: check_updateMakefiles()\n"
-        if ($main::argv{debug});
-
-    my $mf = 'memory/mozalloc/Makefile.in';
-
-    my $work = createSandbox($mf);
-    my $obj = join('/', $work, 'obj');
-    my %args =
-        (
-         top => $work,
-         obj => $obj,
-        );
-
-    my $mf_src = join('/', $work, 'memory/mozalloc/Makefile.in');
-    my $mf_dst = join('/', $obj, 'memory/mozalloc/Makefile');
-
-    updateMakefiles('memory/mozalloc', \%args);
-    my $tlm0 = (stat $mf_dst)[9] || 0;
-    ok(-e $mf_dst ? 1 : 0, 1, "failed to generate makefile: $mf_dst");
-
-    #############################
-    ## Regeneration will be a nop
-    #############################
-    updateMakefiles('memory/mozalloc', \%args);   
-    my $tlm1 = (stat $mf_dst)[9] || -1;
-    ok($tlm1, $tlm0, "makefile should not have been modified");
-
-    #####################################################
-    ## Modify template to verify makefile will regenerate
-    #####################################################
-    local *MF;
-    if (open(MF, ">> $mf_src"))
-    {
-        print MF map{ "# MODIFIED MAKEFILE\n" } 0..4;
-        close(MF);
-    }
-    updateMakefiles('memory/mozalloc', \%args);
-    my @data = makemakefile::cat($mf_dst);
-    ## Check content to avoid a silly 'sleep [n]' call here
-    ok(grep(/^\# MODIFIED MAKEFILE/o, @data) ? 1 : 0,
-       1,
-       "template modified, makefile should have regenerated");
-
-    ## VERIFY template expansion
-    my @gen = makemakefile::cat($mf_dst);
-    push(@errors, $@) if ($@);
-
-    foreach (@gen)
-    {
-        if (/\@[^\@]+\@/o)
-        {
-            push(@errors, join("\n",
-                               "Unexpanded template string detected [$_]",
-                               "Makefile: $mf_src",
-                 ));
-            last;
-            
-        }
-    }
-
-    ok(scalar(@errors), 0, "Errors detected: @errors");
-} # check_updateMakefiles
-
-###########################################################################
-## Intent: Verify makefile generation by updateMakefiles() when
-##         command line arguments --top and --obj were passed.
-###########################################################################
-sub check_updateMakefilesByTopObj
-{
-    my @errors;
-
-    print STDERR "Running: check_updateMakefilesByTopObj()\n"
-        if ($main::argv{debug});
-
-    my $work = createSandbox();
-    my %args =
-        (
-         top => $work,
-         obj => $work,
-        );
-
-    ## Grab a list of makefile templates to generate
-    my @all = glob('data/mf.*');
-    my @src = map{ /\.exp$/o ? () : $_ } @all;
-
-    foreach my $src (@src)
-    {
-        my $dst = join('/', $work, 'Makefile');
-        unlink $dst;
-        copy($src, "$work/Makefile.in");
-        updateMakefiles('.', \%args);
-        ok($@, '', '$@ should not be set');
-
-        my @dst = makemakefile::cat($dst);
-
-        my $exp = join('.', $src, 'exp');
-        my @exp = makemakefile::cat($exp);
-        ok("@dst", "@exp", "updateMakefile($dst) failed");
-    }
-    return;
-} # check_updateMakefilesByTopObj
-
-###########################################################################
-## Intent: Smoke tests for the unittests module
-###########################################################################
-sub smoke
-{
-    print STDERR "Running test: smoke()\n" if ($argv{debug});
-} # smoke()
-
-###########################################################################
-## Intent: Intitialize global test objects and consts
-###########################################################################
-sub init
-{
-    print "Running: init()\n" if ($argv{debug});
-#    testplan(24, 0);
-
-    my @path = split(m%/%, $FindBin::RealBin);
-    splice(@path, -3);
-    my $top = join('/', @path);
-    ## Top set based on make-makefile startup directory so adjust for test/ use
-    getTopDir('_set_', $top);
-
-} # init()
-
-##----------------##
-##---]  MAIN  [---##
-##----------------##
-unless(GetOptions(\%argv,
-                  qw(
-                     debug|d
-                     manual
-                     test=s@
-                     verbose
-                     )))
-{
-    print "USAGE: $0\n";
-    print "  --debug    Enable script debug mode\n";
-    print "  --manual   Also run disabled tests\n";
-    print "  --smoke    Run smoke tests then exit\n";
-    print "  --test     Run a list of tests by function name\n";
-    print "  --verbose  Enable script verbose mode\n";
-    exit 1;
-}
-
-init();
-smoke();
-
-check_dirname_legacy();
-
-check_getTopDir();
-check_getObjDir();
-check_getDepth();
-check_getExclusions();
-check_getRelPath();
-check_mkdirr();
-
-check_updateMakefiles();
-check_update_makefiles_legacy();
-check_updateMakefilesByTopObj();
deleted file mode 100644
--- a/build/autoconf/test/runtest
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/usr/bin/env perl
-###########################################################################
-## Intent:
-##   Test::Harness is a testing wrapper that will process output
-##   from Test.pm module tests.  Sumarize results, report stats
-##   and exit with overall status for the testing suites.
-##
-## Run testing suite:
-##   % make clean test
-##   % perl runtest
-##
-## Run Individual tests
-##   % perl tUtils0
-###########################################################################
-
-##----------------------------##
-##---] CORE/CPAN INCLUDES [---##
-##----------------------------##
-use strict;
-use warnings;
-use Getopt::Long;
-
-use Test::Harness;
-
-##-------------------##
-##---]  EXPORTS  [---##
-##-------------------##
-our $VERSION = qw(1.0);
-use FindBin;
-
-##-------------------##
-##---]  GLOBALS  [---##
-##-------------------##
-my %argv;
-
-##----------------##
-##---]  MAIN  [---##
-##----------------##
-unless(GetOptions(\%argv,
-		  qw(debug|d)
-		 ))
-{
-    print "Usage: $0\n";
-    print "  --debug  Enable debug mode\n";
-    exit 1;
-}
-
-if (2 > $Test::Harness::VERSION)
-{
-    print "Unit tests will not be run, Test::Harness is too old\n"
-	if ($argv{debug});
-    exit 0;
-}
-
-
-my @tests;
-
-########################################
-## Gather a list of tests if none passed
-########################################
-unless (@tests = @ARGV)
-{
-  local *D;
-    opendir(D, '.');
-    while($_ = readdir(D)) {
-	next unless /.t\S+$/;
-	next if (/\.ts$/);
-	push(@tests, $_);
-    }
-    closedir(D);
-}
-
-###############################################
-## Glob a list of tests when directories passed
-###############################################
-my @tmp;
-foreach (@tests)
-{
-  local *D;
-    if (-d $_ && (my $dir = $_))
-    {
-        opendir(D, $_) || die "opendir(D) failed: $!";
-	my @tests = grep(/\.t[^\.\s]+/o, readdir(D));
-	closedir(D);
-	push(@tmp, map{ join('/', $dir, $_); } @tests);
-    } else {
-        push(@tmp, $_);
-    }
-}
-@tests = @tmp;
-
-print "$0: @ARGV\n" if ($argv{debug});
-runtests(@tests);
-
-# EOF
deleted file mode 100644
--- a/js/src/build/autoconf/acoutput-fast.pl
+++ /dev/null
@@ -1,170 +0,0 @@
-#! /usr/bin/env perl
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-# acoutput-fast.pl - Quickly create makefiles that are in a common format.
-#
-# Most of the makefiles in mozilla only refer to two configure variables:
-#     @srcdir@
-#     @top_srcdir@
-# However, configure does not know any better and it runs sed on each file
-# with over 150 replacement rules (slow as molasses).
-#
-# This script takes a list of makefiles as input. For example,
-#   
-#     echo $MAKEFILES | acoutput-fast.pl
-#
-# The script creates each Makefile that only references @srcdir@ and
-# @top_srcdir@. For other files, it lists them in a shell command that is
-# printed to stdout:
-#
-#     CONFIG_FILES="unhandled_files..."; export CONFIG_FILES
-#
-# This command can be used to have config.status create the unhandled
-# files. For example,
-#
-#     eval "echo $MAKEFILES | acoutput-fast.pl"
-#     AC_OUTPUT($MAKEFILES)
-#
-# Send comments, improvements, bugs to Steve Lamm (slamm@netscape.com).
-
-#use File::Basename;
-sub dirname {
-  my $dir = $_[0];
-  return '.' if not $dir =~ m%/%;
-  $dir =~ s%/[^/][^/]*$%%;
-  return $dir;
-}
-
-# Create one directory. Assumes it doesn't already exist.
-# Will create parent(s) if needed.
-sub create_directory {
-  my $dir = $_[0];
-  my $parent = dirname($dir);
-  create_directory($parent) if not -d $parent;
-  mkdir "$dir",0777;
-}
-
-# Create all the directories at once.
-#   This can be much faster than calling mkdir() for each one.
-sub create_directories {
-  my @makefiles = @_;
-  my @dirs = ();
-  my $ac_file;
-  foreach $ac_file (@makefiles) {
-    push @dirs, dirname($ac_file);
-  }
-  # Call mkdir with the directories sorted by subdir count (how many /'s)
-  if (@dirs) {
-    foreach $dir (@dirs) {
-      if (not -d $dir) {
-        print STDERR "Creating directory $dir\n";
-        create_directory($dir);
-      }
-    }
-  }
-}
-
-while($arg = shift) {
-    if ($arg =~ /^--srcdir=/) {
-        $ac_given_srcdir = (split /=/, $arg)[1];
-    }
-    if ($arg =~ /^--cygwin-srcdir/) {
-        $ac_cygwin_srcdir = (split /=/, $arg)[1];
-    }
-}
-
-if (!$ac_given_srcdir) {
-  $ac_given_srcdir = $0;
-  $ac_given_srcdir =~ s|/?build/autoconf/.*$||;
-  $ac_given_srcdir = '.' if $ac_given_srcdir eq '';
-}
-
-if (!$ac_cygwin_srcdir) {
-    $ac_cygwin_srcdir = $ac_given_srcdir;
-}
-
-# Read list of makefiles from the stdin or,
-#   from files listed on the command-line.
-#
-@makefiles=();
-push @makefiles, split while (<STDIN>);
-
-# Create all the directories at once.
-#   This can be much faster than calling mkdir() for each one.
-create_directories(@makefiles);
-
-# Output the makefiles.
-#
-@unhandled=();
-foreach $ac_file (@makefiles) {
-  if (not $ac_file =~ /Makefile$/ or $ac_file =~ /:/) {
-    push @unhandled, $ac_file;
-    next;
-  }
-  $ac_file_in = "$ac_given_srcdir/$ac_file.in";
-  $ac_dir = dirname($ac_file);
-  if ($ac_dir eq '.') {
-    $ac_dir_suffix = '';
-    $ac_dots = '';
-  } else {
-    $ac_dir_suffix = "/$ac_dir";
-    $ac_dir_suffix =~ s%^/\./%/%;
-    $ac_dots = $ac_dir_suffix;
-    $ac_dots =~ s%/[^/]*%../%g;
-  }
-  if ($ac_given_srcdir eq '.') {
-    $srcdir = '.';
-    if ($ac_dots eq '') {
-      $top_srcdir = '.'
-    } else {
-      $top_srcdir = $ac_dots;
-      $top_srcdir =~ s%/$%%;
-    }
-  } elsif ($ac_cygwin_srcdir =~ m%^/% or $ac_cygwin_srcdir =~ m%^.:/%) {
-    $srcdir     = "$ac_cygwin_srcdir$ac_dir_suffix";
-    $top_srcdir = "$ac_cygwin_srcdir";
-  } else {
-    $srcdir     = "$ac_dots$ac_cygwin_srcdir$ac_dir_suffix";
-    $top_srcdir = "$ac_dots$ac_cygwin_srcdir";
-  }
-
-  if (-e $ac_file) {
-    next if -M _ < -M $ac_file_in;
-    print STDERR "updating $ac_file\n";
-  } else {
-    print STDERR "creating $ac_file\n";
-  }
-
-  open (INFILE, "<$ac_file_in")
-    or ( die "can't read $ac_file_in: No such file or directory\n");
-  open (OUTFILE, ">$ac_file")
-    or ( warn "Unable to create $ac_file\n" and next);
-
-  while (<INFILE>) {
-    #if (/\@[_a-zA-Z]*\@.*\@[_a-zA-Z]*\@/) {
-    #  warn "Two defines on a line:$ac_file:$.:$_";
-    #  push @unhandled, $ac_file;
-    #  last;
-    #}
-
-    s/\@srcdir\@/$srcdir/g;
-    s/\@top_srcdir\@/$top_srcdir/g;
-
-    if (/\@[_a-zA-Z]*\@/) {
-      warn "Unknown variable:$ac_file:$.:$_";
-      push @unhandled, $ac_file;
-      last;
-    }
-    print OUTFILE;
-  }
-  close INFILE;
-  close OUTFILE;
-}
-
-# Print the shell command to be evaluated by configure.
-#
-print "CONFIG_FILES=\"".join(' ', @unhandled)."\"; export CONFIG_FILES\n";
-
deleted file mode 100644
--- a/js/src/build/autoconf/make-makefile
+++ /dev/null
@@ -1,444 +0,0 @@
-#!/usr/bin/env perl
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-##----------------------------##
-##---] CORE/CPAN INCLUDES [---##
-##----------------------------##
-use strict;
-use warnings;
-use Getopt::Long;
-
-use Benchmark;
-use Cwd;
-use File::Basename;
-use File::Copy;
-use File::Path      qw{mkpath};
-
-##-------------------##
-##---]  EXPORTS  [---##
-##-------------------##
-our $VERSION = qw(2.0);
-
-##--------------------##
-##---]  INCLUDES  [---##
-##--------------------##
-
-##############################################################
-# pymake: special case path handling for windows cmd shell.
-#   if invoked by cmd.exe and msys-perl is in play
-#     $0 may contain a drive letter
-#     modules use-or-expect msys/unix paths
-#     adjust $0 => C:/foo => /c/foo so string tests and
-#     manipulation can by applied properly.
-##############################################################
-sub BEGIN
-{
-    if ($^O eq 'msys' && $ENV{PATH} =~ m!\w:/!)
-    {
-	$0 =~ s!^(\w):!/$1!;
-    }
-    eval 'use FindBin';
-    die $@ if ($@);
-}
-
-use lib $FindBin::Bin;
-use makemakefile;
-
-##-------------------##
-##---]  GLOBALS  [---##
-##-------------------##
-my %argv;
-
-my $t0 = Benchmark->new();
-sub END
-{
-    if ($argv{bench})
-    {
-        my $t1 = Benchmark->new();
-        my $delta = timediff($t1, $t0);
-        print STDERR timestr($delta), "\n";
-    }
-}
-
-##----------------##
-##---]  MAIN  [---##
-##----------------##
-umask 0;
-
-my $debug = $argv{debug} || 0;
-
-my $pwdcmd = ($^O eq 'msys') ? 'pwd -W' : 'pwd';
-
-# Determine various tree path variables
-#
-my ($topsrcdir, $ptopsrcdir, $depth, @makefiles) = parse_arguments(@ARGV);
-
-my $object_fullpath = `$pwdcmd`; # Cwd::getcwd()
-chdir $depth;
-my $object_root = `$pwdcmd`;  # Cwd::getcwd()
-chomp $object_fullpath;
-chomp $object_root;
-
-# $source_subdir is the path from the object root to where
-#    'make-makefile' was called. For example, if make-makefile was
-#    called from "mozilla/gfx/src", then $source_subdir would be
-#    "gfx/src/".
-my $source_subdir = "$object_fullpath/";
-my $quoted_object_root = quotemeta($object_root);
-$source_subdir =~ s|^$quoted_object_root/||;
-
-# Prefix makefiles with $source_subdir so that paths
-# will be relative to the top of the object tree.
-#
-my $makefile;
-for $makefile (@makefiles) { # dead code ?
-  $makefile = "$source_subdir$makefile";
-}
-
-# Find the path to the source directory based on how 'make-makefile'
-#  was invoked. The path is either relative to the object directory
-#  or an absolute path.
-my $given_srcdir = find_srcdir($topsrcdir, $depth);
-my $pgiven_srcdir = find_srcdir($ptopsrcdir, $depth);
-
-if ($debug) {
-  warn "object_fullpath = $object_fullpath\n";
-  warn "object_root     = $object_root\n";
-  warn "source_subdir   = $source_subdir\n";
-  warn "makefiles       = @makefiles\n";
-  warn "given_srcdir    = $given_srcdir\n";
-}
-
-my @errors;
-my @unhandled = update_makefiles_legacy($given_srcdir, $pgiven_srcdir, @makefiles);
-push(@errors, $@) if ($@);
-
-run_config_status(@unhandled);
-push(@errors, $@) if ($@ && $argv{'no-warnings'});
-
-exit scalar(@errors);
-
-# end of Main
-############################################################
-
-###########################################################################
-# find_depth: Pull the value of DEPTH out of a Makefile (or Makefile.in)
-###########################################################################
-sub find_depth {
-  my $depth = '';
-  open(MAKEFILE, "<$_[0]") || die "Unable to open $_[0]: $!\n";
-  while (<MAKEFILE>) {
-    next unless /^DEPTH\s*=\s*(\..*)/;
-    $depth = $1;
-    last;
-  }
-  close MAKEFILE;
-  return $depth;
-}
-
-###########################################################################
-## Intent: Parse command line arguments and assign values
-###########################################################################
-sub parse_arguments {
-  my @args = @_;
-  my @makefiles = ();
-
-  my @arglist = qw(badtokens! bench
-                   chdir=s
-                   debug
-                   depth|d=s
-                   enhanced
-                   obj=s top|t=s ptop|p=s
-                   src=s dst=s
-                   );
-  unless(GetOptions(\%argv, @arglist))
-  {
-      my $script = join('/', $FindBin::RealBin, $FindBin::Script);
-      system("perldoc $script </dev/null");
-      exit
-  }
-  @args = @ARGV;
-
-  my $topsrcdir = $argv{top} || '';
-  if (! $topsrcdir)
-  {
-      $topsrcdir = $argv{top} = getTopDir();
-  }
-
-  my $ptopsrcdir ||= $argv{ptop} || $topsrcdir || '';
-
-  ## Init --no- switch values
-  foreach my $var (qw(badtokens exclusions warnings))
-  {
-      $argv{"no-${var}"} = $argv{$var} || 0;
-  }
-  # Propogate parsed arguments for module use [--debug, --verbose]
-  while (my($k, $v) = each %argv)
-  {
-      $main::argv{$k} = $v;
-  }
-
-  if ($argv{chdir})
-  {
-      chdir $argv{chdir} || die "chdir $argv{chdir} failed: $!";
-  }
-
-  ##############################################################
-  ## Arguments allowing make-makefile to be invoked from $topsrc
-  ##############################################################
-  if (!$argv{top} || !$argv{obj})
-  {
-  }
-  ## Limit access to container makefiles for now
-  elsif ($argv{enhanced})
-  {
-      my @errors;
-
-      ## iterate over @ARGV to preserve original filename for 'unhandled'
-      my @files = map{ getRelPath($_) } @ARGV;
-
-      my $top = getTopDir();
-      my $obj = getObjDir();
-
-      mkdirr(map{ "$obj/$_" } @files);
-      push(@errors, $@) if ($@); # legacy behavior: do not exit with status
-
-      my $exclude = join('/', $FindBin::RealBin, $FindBin::Script);
-      $exclude .= '.excl'; # $argv{exclude}
-      my %exclude = getExclusions($exclude);
-      my @unhandled;
-      foreach my $relpath (@files)
-      {
-          my $rel = join('/', $relpath, 'Makefile.in');
-          my $mf = join('/', $top, $rel);
-          next if ($exclude{$rel});
-          print STDERR " ** relpath=[$relpath], mf=[$mf]\n" if ($main::argv{debug});
-
-          my $rc = updateMakefiles($relpath, {depth=>$depth, obj=>$obj, top=>$top});
-          if ($@)
-          {
-            push(@errors, $@);
-          }
-          elsif ($rc eq 'badtokens')
-          {
-            push(@unhandled, $mf);
-          }
-      }
-
-      run_config_status(@unhandled);
-      push(@errors, $@) if ($@ && $argv{'no-warnings'});
-      exit scalar(@errors);
-  }
-
-
-  my $depth = $argv{depth} || '';
-  if (! $depth)
-  {
-      foreach my $fyl (@args)
-      {
-          if (my $tmp = find_depth($fyl))
-          {
-              $depth = $tmp;
-              last;
-          }
-      }
-  }
-
-  if (! $depth) {
-    # Use $(DEPTH) in the Makefile or Makefile.in to determine the depth
-    if (-e "Makefile.in") {
-      $depth = find_depth("Makefile.in");
-    } elsif (-e "Makefile") {
-      $depth = find_depth("Makefile");
-    } elsif (-e "../Makefile") {
-      $depth = "../".find_depth("../Makefile");
-      $depth =~ s/\/\.$//;
-    } else {
-      warn "Unable to determine depth (e.g. ../..) to root of objdir tree.\n";
-      die  "No Makefile(.in) present. Try running with '-d <depth>'\n";
-    }
-  } 
-
-  # Build the list of makefiles to generate
-  #
-  @makefiles = ();
-  while (@args)
-  {
-      next unless my $makefile = shift @args;
-      $makefile =~ s/\.in$//;
-      $makefile =~ s/\/$//;
-      $makefile =~ /Makefile$/
-        or $makefile =~ /^\.\//
-        or $makefile .= "/Makefile";
-    push @makefiles, "$makefile";
-  }
-  @makefiles = "Makefile" unless @makefiles;
-
-  return ($topsrcdir, $ptopsrcdir, $depth, @makefiles);
-}
-
-# Find the top of the source directory
-# (Assuming that the executable is in $top_srcdir/build/autoconf)
-sub find_srcdir {
-  my ($ac_given_srcdir, $depth) = @_;
-
-  if ($debug) {
-    print "ac_given_srcdir = $ac_given_srcdir\n";
-    print "depth           = $depth\n";
-  }
-  if ($ac_given_srcdir =~ /^\./ and $depth ne '.') {
-    my $quoted_depth = quotemeta($depth);
-    $ac_given_srcdir =~ s|^$quoted_depth/?||;
-  }
-  if ($debug) {
-    print "ac_given_srcdir = $ac_given_srcdir\n";
-  }
-  $ac_given_srcdir = '.' if $ac_given_srcdir eq '';
-  return $ac_given_srcdir;
-}
-
-1;
-###########################################################################
-## perldoc 
-###########################################################################
-__END__
-
-=head1 NAME
-
-make-makefile - Generate a Makefile from a F<Makefile.in> template
-
-=head1 SYNOPSIS
-
-make-makefile [--top t] [--obj o] [--depth d] foo/bar/Makefile.in tans/fans/Makefile foo/bar
-
-=head1 DESCRIPTION
-
-Given options and makefile path arguments determine path to the template
-F<Makefile.in> beneath a source directory and path to generated F<Makefile>
-beneath $MOZ_OBJDIR.  DEPTH from destination directory to the 'root' will
-also be determined.  F<Makefile.in> will be read in, template strings of the
-gorm @token@ will be replaced with derived values and a generated makefile
-will be written out as F<Makefile>.
-
-Makefile DEPTH= can be determined in a few different ways:
-  o The string C<DEPTH=../../..> may be embedded within F<Makefile.in>.
-  o Search parent directories for F<Makefile.in> and use it to assign the child.
-
-
-=head2 Option List
-
-=over 4
-
-=item --chdir
-
-Move to this directory before doing anything else
-
-=item -d, --depth
-
-Explicitly specify the relative path from directory containing Makefile.in
-to the top sandbox directory.  memory/makefile, DEPTH=../.., js/src/config, DEPTH=..
-
-=item --enhanced
-
-Use alternate/simplified path construction when options --top and --obj are
-passed.  This feature will be used by container makefiles to support makefile
-generation while cd'd into the sandbox top directory.
-
-=item -t, --top
-
-Path the root of a development sandbox.
-
-=item --obj
-
-Path to object directory where generated makefile will be written ($MOZ_OBJDIR).
-
-=item --ptop
-
-Print top source dir
-
-=back
-
-
-=head2 Options List DEBUG
-
-=over 4
-
-=item --bench
-
-Enable script benchmarking, report elapsed runtime.
-
-=item --debug
-
-Enable script debug mode.
-
-=back
-
-
-=head2 Options List --NO-
-
-=over 4
-
-=item --no-badtokens (wip)
-
-Handle unexpanded @token@ makefile tokens as an error condition.
-Do not rely on system(config.status) to externally supply values.
-
-=item --no-excludes
-
-Ignore file entries on the exclusion list, generate everything.
-
-=item --no-warnings
-
-Warnings are handled as an error condition.
-
-=back
-
-
-=head2 Examples
-
-=over 4
-
-=item * make-makefile -t /mozilla/nightly -d . memory/mozalloc
-
-cd $MOZ_OBJDIR;
---top and --depth are explicitly set for generting memory/mozalloc/Makefile.
-
-=item * make-makefile -t /mozilla/nightly -d ../../../.. html5lib_tree_construction/Makefile
-
-cd $MOZ_OBJDIR/parser/htmlparser/tests/mochitest
-
---top and --depth are explicitly set for generting a makefile from within
-a subdirectory of $MOZ_OBJDIR
-
-=item * make-makefile --top /mozilla/nightly --obj /mozilla/nightly/obj memory/mozalloc
-
-With --top and --obj explicitly set generate $MOZ_OBJDIR/memory/mozalloc/Makefile
-while sitting in the sandbox root.
-
-=back
-
-
-=head2 Work In Progress
-
-=over 4
-
-=item --no-badtokens
-
-Fail on unexpanded @foo@ makefile tokens.  Any tokens that can be expanded
-directly by make-makefile will avoid config.status shell overhead.
-
-=item Depth from delta(--obj, --top)
-
-If DEPTH= has not been embedded within a makefile the value could
-be set directly if --top and --obj are specified and the paths overlap.
-
-=back
-
-
-=head1 SEE ALSO
-
-L<config/rules.mk>
-
-=cut
deleted file mode 100644
--- a/js/src/build/autoconf/make-makefile.excl
+++ /dev/null
@@ -1,9 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-###########################################################################
-## Intent: Exclusion list for container make builds
-###########################################################################
-
-# EOF
deleted file mode 100644
--- a/js/src/build/autoconf/makemakefile.pm
+++ /dev/null
@@ -1,711 +0,0 @@
-package makemakefile;
-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-##----------------------------##
-##---] CORE/CPAN INCLUDES [---##
-##----------------------------##
-use strict;
-use warnings;
-# use feature 'state'; 5.10+ not available everywhere
-
-##-------------------##
-##---]  EXPORTS  [---##
-##-------------------##
-our $VERSION = qw(2.0);
-use Exporter;
-our @ISA = qw(Exporter);
-our @EXPORT = qw(dirname_legacy
-                 getConfig getDepth getRelPath getObjDir getTopDir mkdirr
-                 getExclusions
-                 run_config_status
-                 updateMakefiles
-                 update_makefiles_legacy
-                 );
-
-##--------------------##
-##---]  INCLUDES  [---##
-##--------------------##
-use Cwd;
-use Cwd     qw{abs_path};
-use FindBin;
-use File::Basename;
-use File::Copy;
-
-##-------------------##
-##---]  GLOBALS  [---##
-##-------------------##
-umask 0;
-my $cwd = Cwd::abs_path('.');
-my %argv;
-
-
-###########################################################################
-## Intent: Helper function, retrieve contents of a file with error checking
-## -----------------------------------------------------------------------
-## Args:
-##   scalar   path to input file
-## Returns:
-##   array    contents of the given file
-##   $@       set on error
-###########################################################################
-sub cat
-{
-    my $fyl = shift || '';
-    $@ = '';
-    my @data;
-
-    local *FYL;
-    if (!open(FYL, $fyl))
-    {
-        $@ = "open($fyl) failed: $!";
-    }
-    else
-    {
-        @data = <FYL>;
-        close(FYL);
-    }
-    return @data;
-} # cat
-
-###########################################################################
-## Intent: Return directory path for a given argument
-## -----------------------------------------------------------------------
-## -----------------------------------------------------------------------
-## Todo:
-##   o Check if function can be replaced by File::Basename::dirname()
-###########################################################################
-sub dirname_legacy
-{
-    my $str = (@_ && defined($_[0])) ? shift : '';
-    return $str =~ /(.*)\/.*/ ? "$1" : '.';
-}
-
-###########################################################################
-## Intent: Given a list of makefile paths recursively create all
-##         directories between file and the root
-## -----------------------------------------------------------------------
-## Args:
-##   array   A list of makefiles
-##   fargs   Function arguments
-##     mode  Filesystem mode used for directory creation
-## Returns:
-##   $@      Set on error
-##   0       on success
-## -----------------------------------------------------------------------
-## Note:
-##   Reporting directory creation can be enabled by the --verbose
-##   command line argument.
-###########################################################################
-sub mkdirr
-{
-    my %fargs = (@_ && ref($_[$#_])) ? %{ (pop) } : ();
-    my $mode = $fargs{mode} || 0755;
-    my $verbose = $main::argv{verbose} || 0;
-    $@ = '' unless ($fargs{recursive});
-    $fargs{recursive} = 1;
-
-    my @errors;
-    push(@errors, $@) if ($@);
-    foreach my $path (@_)
-    {
-        (my $dir = $path) =~ s%/?Makefile[^/]*$%%o;
-        next unless (length($dir));
-        next if (-e $dir);
-        mkdirr( dirname($dir), \%fargs);
-        eval{ File::Path::mkpath($dir, $verbose, 0755); };
-        push(@errors, $@) if ($@);
-    }
-    $@ = join("\n", @errors);
-    return $@ ? 0 : 1;
-} # mkdirr
-
-###########################################################################
-## Intent: Read in configure values and return a hash of key/value pairs
-## -----------------------------------------------------------------------
-## Args:
-##   fargs  Function arguments
-##     reset   clear value storage and repopulate
-## Returns:
-##   hash  configure data to use for makefile substitutions
-## -----------------------------------------------------------------------
-## Todo: wrapper for reading config* and run_config_status
-###########################################################################
-my %_CONFIG_; # todo: state %config; w/5.10
-sub getConfig
-{
-    my %fargs = (@_ && ref($_[$#_]) eq 'HASH') ? %{ (pop) } : ();
-    if ($fargs{reset})
-    {
-        %_CONFIG_ = ();
-        shift;
-    }
-
-    #my $ac_file_in    = "$ac_given_srcdir/${ac_file}.in";
-    #my $ac_dir        = dirname_legacy($ac_file);
-    #my $ac_dots       = '';
-    #my $ac_dir_suffix = '';
-    #my $srcdir        = '.';
-    #my $top_srcdir    = '.';
-    unless (%_CONFIG_)
-    {
-        while (@_)
-        {
-            my ($k, $v) = splice(@_, 0, 2);
-            $_CONFIG_{$k} = $v;
-        }
-    }
-
-    return %_CONFIG_;
-} # getConfig
-
-###########################################################################
-## Intent: Determine path depth between leaf and root directory.
-##   o DEPTH= may be set by makefile content
-##   o DEPTH= may be set by Makefile in a parent
-##   o Manually determine by relpath form leaf to sandbox top
-## -----------------------------------------------------------------------
-## Args:
-##   scalar  Path to makefile or directory to determine DEPTH for
-## Returns:
-##   scalar  Relative path from leaf to root directory
-## -----------------------------------------------------------------------
-###########################################################################
-sub getDepth($)
-{
-    my $fyl = shift || '';
-
-    my @path = split(m%/%o, $fyl);
-    pop(@path) if ('Makefile' eq substr($path[$#path], 0, 8));
-    my $depth;
-    my @depth;
-
-    my $top = getTopDir();
-    my @top = split(m%/%o, $top);
-    my @pathNoTop = @path;
-    splice(@pathNoTop, 0, scalar(@top));
-
-    SEARCH:
-    while (@path)
-    {
-        ## Search for a file containing DEPTH=../..
-        foreach my $fyl ( qw{Makefile.in Makefile} )
-        {
-            my $path = join('/', @path, $fyl);
-            local *FYL;
-            if (!open(FYL, $path)) {} # NOP
-            elsif (my @tmp = map{ /^\s*DEPTH\s*=\s*([\.\/]+)/o ? $1 : () } <FYL>)
-            {
-                $depth = join('/', @depth, shift @tmp);
-                last SEARCH;
-            }
-            close(FYL);
-        }
-        pop @path;
-        pop @pathNoTop;
-
-        if (0 == scalar(@pathNoTop))
-        {
-            $depth = join('/', @depth);
-            last;
-        }
-        
-        ## Construct path manually
-        push(@depth, '..');
-    }
-    return $depth;
-} # getDepth
-
-###########################################################################
-## Intent: Read in the exclusion file
-###########################################################################
-sub getExclusions
-{
-    my $file = shift || '';
-    
-    return () if ($main::argv{'no-exclusions'});
-
-    my %exclude;
-    if ($file)
-    {
-        my @data = cat($file);
-        foreach (@data)
-        {
-            next unless ($_);
-            next if (/^\s*\#/o);
-            next unless (m%/%);
-            chomp;
-            $exclude{$_}++;
-        }
-    }
-    return %exclude;
-} # getExclusions
-
-###########################################################################
-## Intent: Given the path to a makefile beneath either src or obj
-##         derive the relative path prefix between makefile and root.
-###########################################################################
-sub getRelPath
-{
-    my $path0 =  shift;
-    my $abspath;
-
-    # Determine type and orientation
-    my $name = basename($path0);
-    my $haveMF = ($name eq 'Makefile.in') ? 1
-        : ($name eq 'Makefile') ? -1
-        : 0
-        ;
-
-    ####################################################
-    ## Prep work: form a relative path with ../ removed
-    ####################################################
-    my $top = getTopDir();
-    my $obj = getObjDir();
-    ## If the same Makefile will be created alongside Makefile.in
-    my $topQM = quotemeta($top);
-    my $objQM = quotemeta($obj);
-
-    if ('..' eq substr($path0, 0, 2))
-    {
-        my @cwd = split(m%/%, $cwd);
-        my @pth = split(m%/%, $path0);
-        while (@pth && $pth[0] eq '..')
-        {
-            pop(@cwd);
-            shift @pth;
-        }
-        $path0 = join('/', @cwd, @pth);
-        $abspath = $path0;
-    }
-
-    if ('/' eq substr($path0, 0, 1))
-    {
-        $path0 =~ s%^$objQM\/?%%;
-        $path0 =~ s%^$topQM\/?%%;
-    }
-
-    #######################################################################
-    ## Build a list of directories to search.  Input source will be one
-    ## of path to Makefile.in, path to Makefile, directory, file within
-    ## a directory or relative path from cwd.
-    #######################################################################
-    my @subdirs;
-    my $path = (0 == $haveMF) ? $path0 : dirname($path0);
-    push(@subdirs, $path); # containing directory
-    push(@subdirs, dirname($path)) if (0 == $haveMF && -f $path); # Arg is file within a directory
-    push(@subdirs, $cwd);  # relative to pwd
-
-    # obj - path to generated makefile
-    # top - path to Makefile.in source template
-    my @prefixes = ('/' ne substr($path0, 0, 1))
-        ? (&getTopDir, &getObjDir)
-        : ()
-        ;
-
-  ON_SAFARI:
-    for my $prefix (@prefixes)
-    {
-        next unless ($prefix); # no command line not passed
-        foreach my $subdir (@subdirs)
-        {
-            foreach my $mf ('Makefile.in', 'Makefile')
-            {
-                my $path = join('/', $prefix, $subdir, $mf);
-                if (-e $path)
-                {
-                    $name = $mf;
-                    $haveMF = ($mf eq 'Makefile.in') ? 1 : -1;
-                    $abspath = $path;
-                    last ON_SAFARI;
-                }
-            }
-        }
-    }
-
-    #######################################################################
-    ## Generated makefile does not yet exist or path is invalid.
-    ## Should this conditon be handled to detect non-existent Makefile.in:
-    ##   Makefile.am => Makefile.in => Makefile but Makefile.in
-    #######################################################################
-    if (!$abspath && -1 == $haveMF && $obj)
-    {
-        $abspath = ('/' eq substr($path0, 0, 1)) 
-            ? $path0
-            : join('/', $obj, $path0)
-            ;
-    }
-
-    ########################################################
-    ## If --top and/or --obj specified extract relative path
-    ########################################################
-    my $relpath;
-    if (! $abspath)
-    {
-        # Error, fall through
-    }
-    elsif (1 == $haveMF) # Makefile.in
-    {
-        ## err w/o --top
-        (my $tmp = $abspath) =~ s%^$topQM/?%%;
-        $relpath = dirname($tmp) unless ($tmp eq $abspath);
-    }
-    elsif (-1 == $haveMF) # Makefile
-    {
-        ## err w/o --obj
-        (my $tmp = $abspath) =~ s%^$objQM/?%%;
-        $relpath = dirname($tmp) unless ($tmp eq $abspath);
-    }
-
-    $relpath ||= '';
-    $relpath =~ s%/./%/%og; # filter ./
-
-    $@ = ($relpath) ? '' : "ERROR($path0): Unable to locate sources";
-    return $relpath || '';
-} # getRelPath
-
-###########################################################################
-## Intent: Determine sandbox root from script startup directory
-## -----------------------------------------------------------------------
-## Args:
-##    _set_    optional, if passed use the given value as path
-##    _reset_  clear cached directory path to reassign
-## Returns:
-##   scalar - absolute path to the sandbox root directory
-## -----------------------------------------------------------------------
-###########################################################################
-my $gtd_dir;
-sub getTopDir
-{
-    if (@_) # testing override
-    {
-        $gtd_dir = abs_path($_[1] || '.') if ($_[0] eq '_set_');
-        $gtd_dir = ''    if ($_[0] eq '_reset_');
-    }
-
-    unless ($gtd_dir)
-    {
-        ## Set by command line
-        if ($main::argv{top})
-        {
-            $gtd_dir = $main::argv{top};
-        }
-        else
-        {
-            my $path = abs_path($FindBin::RealBin);
-            my @path = split(m%/%o, $path);
-            ## --2 memory/mozalloc/Makefile.in
-            ## --3 was this for FindBin::Script ?
-            splice(@path, -2);
-            $gtd_dir = join('/', @path);
-        }
-    }
-    return $gtd_dir;
-} # getTopDir
-
-###########################################################################
-## Intent: Determine path to MOZ_OBJDIR/object directory
-## -----------------------------------------------------------------------
-## Args:
-##   _set_    optional testing arg, if passed re-compute cached value
-## Returns:
-##   scalar - absolute path to the sandbox object directory
-## -----------------------------------------------------------------------
-###########################################################################
-my $god_dir;
-sub getObjDir
-{
-    if (@_) # testing override
-    {
-        if ($_[0] eq '_reset_')
-        {
-            $god_dir = '';
-            shift;
-        }
-        elsif ($_[0] eq '_set_')
-        {
-            shift;
-            my $path = $_[0] || '.';
-            $god_dir = abs_path($path);
-            shift;
-        }
-    }
-
-    ## extract $obj from given path
-    unless ($god_dir)
-    {
-        if ($main::argv{obj})
-        {
-            $god_dir = $main::argv{obj};
-        }
-        elsif (@_ && 'Makefile' eq substr($_, -8))
-        {
-            $god_dir = abs_path(shift);
-        }
-        else # assume we are sitting in moz_objdir
-        {
-            $god_dir = abs_path('.');
-        }
-    }
-
-    return $god_dir;
-} # getObjDir
-
-###########################################################################
-## Intent: Generate Makefile from a given Makefile.in template
-## -----------------------------------------------------------------------
-## Args:
-##   scalar  Relative path to a directory containing a makefile
-##   fargs   Hash ref of function arguments.
-##     obj     Absolute path to MOZ_OBJ/a destination directory
-##     top     Absolute path to the sandbox root
-## Returns:
-##    $@     Set on error
-##    scalar
-##      1     True if the makefile was updated
-##      0     Otherwise
-##      badtokens - If the makefile contains unexpandable @token@ strings
-## -----------------------------------------------------------------------
-###########################################################################
-sub updateMakefiles
-{
-    my %fargs = (@_ && ref($_[$#_])) ? %{ (pop) } : ();
-    local $_;
-    $@ = '';
-
-    my $top = $fargs{top};
-    my $obj = $fargs{obj};
-
-    my $relpath = shift || '';
-    my $src = join('/',  $top, $relpath, 'Makefile.in');
-    my $depth = getDepth($src);
-
-    my @src = cat($src);
-    return 0 if ($@);
-
-    my $dst = join('/', $obj, $relpath, 'Makefile');
-    my @dst = cat($dst);
-    $@ = '';
-
-    my $dstD = dirname($dst);
-    mkdirr($dstD);
-    return 0 if ($@);
-
-    my %data =
-        ( getConfig(),
-          depth      => $depth,
-          srcdir     => join('/', $top, $relpath),
-          top_srcdir => $top,
-        );
-
-    my $line = 0;
-    my @data;
-    while (scalar @src)
-    {
-        $line++;
-        $_ = shift(@src);
-
-        ## Expand embedded @foo@
-        while (/\@[^\@\s\$]+\@/go)
-        {
-            my $end = pos($_);
-            my $val = $&;
-            my $len = length($val);
-            $val =~ s/^\@\s*//o;
-            $val =~ s/\s*\@$//o;
-
-            ## Identify expansions to see if we can avoid shell overhead
-            if (!defined $data{$val} && !$argv{'no-badtokens'})
-            {
-                if (1) # warnings
-                {
-                    print STDERR "WARNING: token $val not defined\n";
-                    print STDERR "   line $line, src: $src\n";
-                }
-                return 'badtokens';
-            }
-
-            # Insert $(error txt) makefile macros for invalid tokens
-            my $val1 = defined($data{$val})
-                ? $data{$val}
-                : "\$(error $FindBin::Script: variable ${val} is undefined)"
-                ;
-            substr($_, ($end-$len), $len, $val1);
-        }
-        push(@data, $_);
-    }
-
-    if (("@data" eq "@dst") && scalar(@data))
-    {
-        print "Skipping up2date makefile: $dst\n" if ($argv{verbose});
-    }
-    else
-    {
-        my $action = (scalar @dst) ? 'Updating' : 'Creating';
-        print "$action makefile: $dst\n";
-
-        my $tmp = join('.', $dst, "tmp_$$");
-        if (!open(FYL, "> $tmp"))
-        {
-            $@ = "open($tmp) failed: $!";
-        }
-        else
-        {
-            print FYL @data;
-            close(FYL);
-
-            ## Install the new makefile
-            File::Copy::move($tmp, $dst)
-                || ($@ = "move($tmp, $dst) failed: $!");
-        }
-    }
-
-    return $@ ? 0 : 1;
-} # updateMakefiles
-
-# Output the makefiles.
-#
-sub update_makefiles_legacy {
-  my ($ac_given_srcdir, $pac_given_srcdir, @makefiles) = @_;
-  my $debug = $main::argv{debug} || 0;
-  my $pwdcmd = ($^O eq 'msys') ? 'pwd -W' : 'pwd';
-  my @unhandled=();
-
-  my @warn;
-
-  my $ac_file;
-  foreach $ac_file (@makefiles) {
-    my $ac_file_in    = "$ac_given_srcdir/${ac_file}.in";
-    my $ac_dir        = dirname_legacy($ac_file);
-    my $ac_dots       = '';
-    my $ac_dir_suffix = '';
-    my $srcdir        = '.';
-    my $top_srcdir    = '.';
-
-    # Determine $srcdir and $top_srcdir
-    #
-    if ($ac_dir ne '.') {
-      $ac_dir_suffix = "/$ac_dir";
-      $ac_dir_suffix =~ s%^/\./%/%;
-      $ac_dots = $ac_dir_suffix;
-      # Remove .. components from the provided dir suffix, and
-      # also the forward path components they were reversing.
-      my $backtracks = $ac_dots =~ s%\.\.(/|$)%%g;
-      while ($backtracks--) {
-        $ac_dots =~ s%/[^/]*%%;
-      }
-      $ac_dots =~ s%/[^/]*%../%g;
-    }
-    if ($ac_given_srcdir eq '.') {
-      if ($ac_dots ne '') {
-        $top_srcdir = $ac_dots;
-        $top_srcdir =~ s%/$%%;
-      }
-    } elsif ($pac_given_srcdir =~ m%^/% or $pac_given_srcdir =~ m%^.:/%) {
-      $srcdir     = "$pac_given_srcdir$ac_dir_suffix";
-      $top_srcdir = "$pac_given_srcdir";
-    } else {
-      if ($debug) {
-              print "ac_dots       = $ac_dots\n";
-        print "ac_dir_suffix = $ac_dir_suffix\n";
-      }
-      $srcdir     = "$ac_dots$ac_given_srcdir$ac_dir_suffix";
-      $top_srcdir = "$ac_dots$ac_given_srcdir";
-    }
-
-    if ($debug) {
-      print "ac_dir     = $ac_dir\n";
-      print "ac_file    = $ac_file\n";
-      print "ac_file_in = $ac_file_in\n";
-      print "srcdir     = $srcdir\n";
-      print "top_srcdir = $top_srcdir\n";
-      print "cwd        = " . `$pwdcmd` . "\n";
-    }
-
-    # Copy the file and make substitutions.
-    #    @srcdir@     -> value of $srcdir
-    #    @top_srcdir@ -> value of $top_srcdir
-    #
-    if (-e $ac_file) {
-      next if -M _ < -M $ac_file_in;  # Next if Makefile is up-to-date.
-      warn "updating $ac_file\n";
-    } else {
-      warn "creating $ac_file\n";
-    }
-
-    mkdirr(dirname($ac_file));
-
-    open INFILE, "<$ac_file_in" or do {
-      warn "$0: Cannot read $ac_file_in: No such file or directory\n";
-      next;
-    };
-    open OUTFILE, ">$ac_file" or do {
-      warn "$0: Unable to create $ac_file\n";
-      next;
-    };
-
-    while (<INFILE>) {
-      s/\@srcdir\@/$srcdir/g;
-      s/\@top_srcdir\@/$top_srcdir/g;
-
-      if (/\@[_a-zA-Z]*\@/) {
-        #warn "Unknown variable:$ac_file:$.:$_";
-        push @unhandled, $ac_file;
-        last;
-      }
-      print OUTFILE;
-    }
-    close INFILE;
-    close OUTFILE;
-  }
-  return @unhandled;
-} # update_makefiles_legacy
-
-###########################################################################
-## Intent: Invoke config.status for unknown makefiles to create
-##         directory hierarchy for the tree.
-## -----------------------------------------------------------------------
-## Args:
-##   array   an optional list of makefiles to process
-## Returns:
-##   0    on success
-##   $#   set on error
-## -----------------------------------------------------------------------
-## Note: Is this function needed anymore ?  Undefined tokens should fail
-##   at time of expansion rather than having to source config.status.
-##   Also config.status could be parsed to define values and avoide the
-##   shell overhead altogether.
-###########################################################################
-sub run_config_status {
-  my @unhandled = @_;
-
-  # Run config.status with any unhandled files.
-  #
-  my @errors;
-  if (@unhandled) {
-    local $ENV{CONFIG_FILES}= join ' ', @unhandled;
-
-    my $conf = 'config.status';
-    if (! -e $conf) # legacy behavior, warn rather than err
-    {
-        my $cwd = cwd();
-        my $err = "$FindBin::Script ERROR: Config file $conf does not exist, cwd=$cwd";
-        push(@errors, $err);
-    }
-    elsif (0 != system("./config.status"))
-    {
-        my $cwd = cwd();
-        push(@errors, "config.status failed \$?=$?, \$!=$!, cwd: $cwd");
-    }
-  }
-  $@ = join("\n", @errors);
-
-  ## Legacy behavior: config.status problems are not fatal {yet}.
-  ## Display warning since caller will not be calling die.
-  warn $@ if ($@ && $argv{'no-warnings'});
-  return $@ ? 1 : 0;
-}
-
-1;