1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#!/bin/sh
2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Copyright (c) 2009 The Chromium Authors. All rights reserved.
3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Use of this source code is governed by a BSD-style license that can be
4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# found in the LICENSE file.
5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#
6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# This script takes libcmt.lib for VS2005 and removes the allocation related
7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# functions from it.
8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#
9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Usage: prep_libcmt.bat <VCInstallDir> <OutputFile>
10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#
11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# VCInstallDir is the path where VC is installed, typically:
12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#    C:\Program Files\Microsoft Visual Studio 8\VC\
13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#
14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# OutputFile is the directory where the modified libcmt file should be stored.
15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#
16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottLIBCMT="${1}\\libcmt.lib"
18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottLIBCMTPDB="${1}\\libcmt.pdb"
19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottOUTDIR=$2
20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottOUTCMT="${2}\\libcmt.lib"
21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottmkdir -p $OUTDIR
23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcp "$LIBCMT" "$OUTDIR"
24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcp "$LIBCMTPDB" "$OUTDIR"
25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# We'll remove the symbols based on paths found in either the VS2005 or VS2008
28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# libcmt.lib files.
29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottLIBCMTSRCPATHVS2005="build\\intel\\mt_obj\\"
30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottLIBCMTSRCPATHVS2008="f:\\dd\\vctools\\crt_bld\\SELF_X86\\crt\\src\\build\\INTEL\\mt_obj\\"
31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottOBJFILES="malloc.obj free.obj realloc.obj new.obj delete.obj new2.obj delete2.obj align.obj msize.obj heapinit.obj expand.obj heapchk.obj heapwalk.obj heapmin.obj sbheap.obj calloc.obj recalloc.obj calloc_impl.obj new_mode.obj newopnt.obj"
33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfor FILE in $OBJFILES
35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdo
36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  echo ${FILE}
37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  LIB /NOLOGO /IGNORE:4006,4014,4221 /REMOVE:${LIBCMTSRCPATHVS2005}${FILE} $OUTCMT
38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  LIB /NOLOGO /IGNORE:4006,4014,4221 /REMOVE:${LIBCMTSRCPATHVS2008}${FILE} $OUTCMT
39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdone
40