Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(314)

Side by Side Diff: base/allocator/prep_libc.py

Issue 1414453017: Allocator shims working on VS2015. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/allocator/allocator_shim_win.cc ('k') | base/process/memory_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
6 #
7 # This script takes libcmt.lib for VS2013 and removes the allocation related
8 # functions from it.
9 #
10 # Usage: prep_libc.py <VCLibDir> <OutputDir> <arch> [<environment_file>]
11 #
12 # VCLibDir is the path where VC is installed, something like:
13 # C:\Program Files\Microsoft Visual Studio 8\VC\lib
14 #
15 # OutputDir is the directory where the modified libcmt file should be stored.
16 # arch is one of: 'ia32', 'x86' or 'x64'. ia32 and x86 are synonyms.
17 #
18 # If the environment_file argument is set, the environment variables in the
19 # given file will be used to execute the VC tools. This file is in the same
20 # format as the environment block passed to CreateProcess.
21
22 import os
23 import shutil
24 import subprocess
25 import sys
26
27 def run(command, env_dict):
28 """Run |command|. If any lines that match an error condition then
29 terminate.
30
31 The env_dict, will be used for the environment. None can be used to get the
32 default environment."""
33 error = 'cannot find member object'
34 # Need shell=True to search the path in env_dict for the executable.
35 popen = subprocess.Popen(
36 command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True,
37 env=env_dict)
38 out, _ = popen.communicate()
39 for line in out.splitlines():
40 print line
41 if error and line.find(error) != -1:
42 print 'prep_libc.py: Error stripping object from C runtime.'
43 sys.exit(1)
44
45 def main():
46 bindir = 'SELF_X86'
47 objdir = 'INTEL'
48 vs_install_dir = sys.argv[1]
49 outdir = sys.argv[2]
50 if "x64" in sys.argv[3]:
51 bindir = 'SELF_64_amd64'
52 objdir = 'amd64'
53 vs_install_dir = os.path.join(vs_install_dir, 'amd64')
54
55 if len(sys.argv) == 5:
56 env_pairs = open(sys.argv[4]).read()[:-2].split('\0')
57 env_dict = dict([item.split('=', 1) for item in env_pairs])
58 else:
59 env_dict = None # Use the default environment.
60
61 output_lib = os.path.join(outdir, 'libcmt.lib')
62 shutil.copyfile(os.path.join(vs_install_dir, 'libcmt.lib'), output_lib)
63 shutil.copyfile(os.path.join(vs_install_dir, 'libcmt.pdb'),
64 os.path.join(outdir, 'libcmt.pdb'))
65 cvspath = 'f:\\binaries\\Intermediate\\vctools\\crt_bld\\' + bindir + \
66 '\\crt\\prebuild\\build\\' + objdir + '\\mt_obj\\nativec\\\\';
67 cppvspath = 'f:\\binaries\\Intermediate\\vctools\\crt_bld\\' + bindir + \
68 '\\crt\\prebuild\\build\\' + objdir + '\\mt_obj\\nativecpp\\\\';
69
70 cobjfiles = ['malloc', 'free', 'realloc', 'heapinit', 'calloc', 'recalloc',
71 'calloc_impl']
72 cppobjfiles = ['new', 'new2', 'delete', 'delete2', 'new_mode', 'newopnt',
73 'newaopnt']
74 for obj in cobjfiles:
75 cmd = ('lib /nologo /ignore:4006,4221 /remove:%s%s.obj %s' %
76 (cvspath, obj, output_lib))
77 run(cmd, env_dict)
78 for obj in cppobjfiles:
79 cmd = ('lib /nologo /ignore:4006,4221 /remove:%s%s.obj %s' %
80 (cppvspath, obj, output_lib))
81 run(cmd, env_dict)
82
83 if __name__ == "__main__":
84 sys.exit(main())
OLDNEW
« no previous file with comments | « base/allocator/allocator_shim_win.cc ('k') | base/process/memory_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698