old_contents: #!/usr/bin/env python
  
  # Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
  #
  # Use of this source code is governed by a BSD-style license
  # that can be found in the LICENSE file in the root of the source
  # tree. An additional intellectual property rights grant can be found
  # in the file PATENTS.  All contributing project authors may
  # be found in the AUTHORS file in the root of the source tree.
  
  # Searches for libraries and/or object files on the specified path and
  # merges them into a single library.
  
  import subprocess
  import sys
  
  if __name__ == '__main__':
    if len(sys.argv) != 3:
      sys.stderr.write('Usage: ' + sys.argv[0] + ' <search_path> <output_lib>\n')
      sys.exit(2)
  
    search_path = sys.argv[1]
    output_lib = sys.argv[2]
  
    from subprocess import call, PIPE
    if sys.platform.startswith('linux'):
      call(["rm -f " + output_lib], shell=True)
      call(["rm -rf " + search_path + "/obj.target/*do_not_use*"], shell=True)
      call(["ar crs " + output_lib + " $(find " + search_path +
            "/obj.target -name *\.o)"], shell=True)
      call(["ar crs " + output_lib + " $(find " + search_path +
            "/obj/gen -name *\.o)"], shell=True)
  
    elif sys.platform == 'darwin':
      call(["rm -f " + output_lib], shell=True)
      call(["rm -f " + search_path + "/*do_not_use*"], shell=True)
      call(["libtool -static -v -o " + output_lib + " " + search_path + "/*.a"],
           shell=True)
  
    elif sys.platform == 'win32':
      # We need to execute a batch file to set some environment variables for the
      # lib command. VS 8 uses vsvars.bat and VS 9 uses vsvars32.bat. It's
      # required that at least one of them is in the system PATH. We try both and
      # suppress stderr and stdout to fail silently.
      call(["vsvars.bat"], stderr=PIPE, stdout=PIPE, shell=True)
      call(["vsvars32.bat"], stderr=PIPE, stdout=PIPE, shell=True)
      call(["del " + output_lib], shell=True)
      call(["del /F /S /Q " + search_path + "/lib/*do_not_use*"],
            shell=True)
      call(["lib /OUT:" + output_lib + " " + search_path + "/lib/*.lib"],
           shell=True)
  
    else:
      sys.stderr.write('Platform not supported: %r\n\n' % sys.platform)
      sys.exit(1)
  
    sys.exit(0)
  
  
new_contents: #!/usr/bin/env python
  
  # Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
  #
  # Use of this source code is governed by a BSD-style license
  # that can be found in the LICENSE file in the root of the source
  # tree. An additional intellectual property rights grant can be found
  # in the file PATENTS.  All contributing project authors may
  # be found in the AUTHORS file in the root of the source tree.
  
  # Searches for libraries or object files on the specified path and merges them
  # them into a single library. Assumes ninja is used on all platforms.
  
  import fnmatch
  import os
  import subprocess
  import sys
  
  
  def FindFiles(path, pattern):
    """Finds files matching |pattern| under |path|.
  
    Returns a list of file paths matching |pattern|, by walking the directory tree
    under |path|. Filenames containing the string 'do_not_use' are excluded.
  
    Args:
      path: The root path for the search.
      pattern: A shell-style wildcard pattern to match filenames against.
          (e.g. '*.a')
  
    Returns:
      A list of file paths, relative to the current working directory.
    """
    files = []
    for root, _, filenames in os.walk(path):
      for filename in fnmatch.filter(filenames, pattern):
        if 'do_not_use' not in filename:
          # We use the relative path here to avoid "argument list too long"
          # errors on Linux.
          files.append(os.path.relpath(os.path.join(root, filename)))
    return files
  
  
  def main(argv):
    if len(argv) != 3:
      sys.stderr.write('Usage: ' + argv[0] + ' <search_path> <output_lib>\n')
      return 1
  
    search_path = os.path.normpath(argv[1])
    output_lib = os.path.normpath(argv[2])
  
    if not os.path.exists(search_path):
      sys.stderr.write('search_path does not exist: %s\n' % search_path)
      return 1
  
    if os.path.isfile(output_lib):
      os.remove(output_lib)
  
    if sys.platform.startswith('linux'):
      objects = FindFiles(search_path, '*.o')
      cmd = 'ar crs '
    elif sys.platform == 'darwin':
      objects = FindFiles(search_path, '*.a')
      cmd = 'libtool -static -v -o '
    elif sys.platform == 'win32':
      objects = FindFiles(search_path, '*.lib')
      cmd = 'lib /OUT:'
    else:
      sys.stderr.write('Platform not supported: %r\n\n' % sys.platform)
      return 1
  
    cmd += output_lib + ' ' + ' '.join(objects)
    print cmd
    subprocess.check_call(cmd, shell=True)
    return 0
  
  if __name__ == '__main__':
    sys.exit(main(sys.argv))
  
  
subject: Use ninja with merge_libs.py on Windows and clean up.