Updating XTBs based on .GRDs from branch master
[chromium-blink-merge.git] / build / win / reorder-imports.py
blob281668fff5b457a363608a00865e5b285d94e417
1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 import glob
7 import optparse
8 import os
9 import shutil
10 import subprocess
11 import sys
13 def reorder_imports(input_dir, output_dir, architecture):
14 """Run swapimports.exe on the initial chrome.exe, and write to the output
15 directory. Also copy over any related files that might be needed
16 (pdbs, manifests etc.).
17 """
19 input_image = os.path.join(input_dir, 'chrome.exe')
20 output_image = os.path.join(output_dir, 'chrome.exe')
22 swap_exe = os.path.join(
23 __file__,
24 '..\\..\\..\\third_party\\syzygy\\binaries\\exe\\swapimport.exe')
26 args = [swap_exe, '--input-image=%s' % input_image,
27 '--output-image=%s' % output_image, '--overwrite', '--no-logo']
29 if architecture == 'x64':
30 args.append('--x64');
32 args.append('chrome_elf.dll');
34 subprocess.call(args)
36 for fname in glob.iglob(os.path.join(input_dir, 'chrome.exe.*')):
37 shutil.copy(fname, os.path.join(output_dir, os.path.basename(fname)))
38 return 0
41 def main(argv):
42 usage = 'reorder_imports.py -i <input_dir> -o <output_dir> -a <target_arch>'
43 parser = optparse.OptionParser(usage=usage)
44 parser.add_option('-i', '--input', help='reorder chrome.exe in DIR',
45 metavar='DIR')
46 parser.add_option('-o', '--output', help='write new chrome.exe to DIR',
47 metavar='DIR')
48 parser.add_option('-a', '--arch', help='architecture of build (optional)',
49 default='ia32')
50 opts, args = parser.parse_args()
52 if not opts.input or not opts.output:
53 parser.error('Please provide and input and output directory')
54 return reorder_imports(opts.input, opts.output, opts.arch)
56 if __name__ == "__main__":
57 sys.exit(main(sys.argv[1:]))