| Index: base/allocator/prep_libc.py
|
| diff --git a/base/allocator/prep_libc.py b/base/allocator/prep_libc.py
|
| index 471140cb548052a18a1a60cdf4266a93656eff56..3238eec8c0fcf274fed05982b71c444f50432acc 100755
|
| --- a/base/allocator/prep_libc.py
|
| +++ b/base/allocator/prep_libc.py
|
| @@ -4,8 +4,8 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
| #
|
| -# This script takes libcmt.lib for VS2005/08/10/12/13 and removes the allocation
|
| -# related functions from it.
|
| +# This script takes libcmt.lib for VS2013 and removes the allocation related
|
| +# functions from it.
|
| #
|
| # Usage: prep_libc.py <VCLibDir> <OutputDir> <arch>
|
| #
|
| @@ -19,16 +19,18 @@ import shutil
|
| import subprocess
|
| import sys
|
|
|
| -def run(command, filter=None):
|
| - """Run |command|, removing any lines that match |filter|. The filter is
|
| - to remove the echoing of input filename that 'lib' does."""
|
| +def run(command):
|
| + """Run |command|. If any lines that match an error condition then
|
| + terminate."""
|
| + error = 'cannot find member object'
|
| popen = subprocess.Popen(
|
| command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
| out, _ = popen.communicate()
|
| for line in out.splitlines():
|
| - if filter and line.strip() != filter:
|
| - print line
|
| - return popen.returncode
|
| + print line
|
| + if error and line.find(error) != -1:
|
| + print 'prep_libc.py: Error stripping object from C runtime.'
|
| + sys.exit(1)
|
|
|
| def main():
|
| bindir = 'SELF_X86'
|
| @@ -43,28 +45,24 @@ def main():
|
| shutil.copyfile(os.path.join(vs_install_dir, 'libcmt.lib'), output_lib)
|
| shutil.copyfile(os.path.join(vs_install_dir, 'libcmt.pdb'),
|
| os.path.join(outdir, 'libcmt.pdb'))
|
| + cvspath = 'f:\\binaries\\Intermediate\\vctools\\crt_bld\\' + bindir + \
|
| + '\\crt\\prebuild\\build\\' + objdir + '\\mt_obj\\nativec\\\\';
|
| + cppvspath = 'f:\\binaries\\Intermediate\\vctools\\crt_bld\\' + bindir + \
|
| + '\\crt\\prebuild\\build\\' + objdir + '\\mt_obj\\nativecpp\\\\';
|
|
|
| - vspaths = [
|
| - 'build\\intel\\mt_obj\\',
|
| - 'f:\\dd\\vctools\\crt_bld\\' + bindir + \
|
| - '\\crt\\src\\build\\' + objdir + '\\mt_obj\\',
|
| - 'F:\\dd\\vctools\\crt_bld\\' + bindir + \
|
| - '\\crt\\src\\build\\' + objdir + '\\mt_obj\\nativec\\\\',
|
| - 'F:\\dd\\vctools\\crt_bld\\' + bindir + \
|
| - '\\crt\\src\\build\\' + objdir + '\\mt_obj\\nativecpp\\\\',
|
| - 'f:\\binaries\\Intermediate\\vctools\\crt_bld\\' + bindir + \
|
| - '\\crt\\prebuild\\build\\INTEL\\mt_obj\\cpp_obj\\\\',
|
| - ]
|
| -
|
| - objfiles = ['malloc', 'free', 'realloc', 'new', 'delete', 'new2', 'delete2',
|
| - 'align', 'msize', 'heapinit', 'expand', 'heapchk', 'heapwalk',
|
| - 'heapmin', 'sbheap', 'calloc', 'recalloc', 'calloc_impl',
|
| - 'new_mode', 'newopnt', 'newaopnt']
|
| - for obj in objfiles:
|
| - for vspath in vspaths:
|
| - cmd = ('lib /nologo /ignore:4006,4014,4221 /remove:%s%s.obj %s' %
|
| - (vspath, obj, output_lib))
|
| - run(cmd, obj + '.obj')
|
| + cobjfiles = ['malloc', 'free', 'realloc', 'align', 'msize', 'heapinit',
|
| + 'expand', 'heapchk', 'heapwalk', 'heapmin', 'calloc', 'recalloc',
|
| + 'calloc_impl']
|
| + cppobjfiles = ['new', 'new2', 'delete', 'delete2', 'new_mode', 'newopnt',
|
| + 'newaopnt']
|
| + for obj in cobjfiles:
|
| + cmd = ('lib /nologo /ignore:4006,4221 /remove:%s%s.obj %s' %
|
| + (cvspath, obj, output_lib))
|
| + run(cmd)
|
| + for obj in cppobjfiles:
|
| + cmd = ('lib /nologo /ignore:4006,4221 /remove:%s%s.obj %s' %
|
| + (cppvspath, obj, output_lib))
|
| + run(cmd)
|
|
|
| if __name__ == "__main__":
|
| sys.exit(main())
|
|
|