<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 15px; font-family: Calibri, sans-serif; ">
<div>Ah, I just tried with a properly written project and everything worked smoothly. Thanks John.</div>
<div><br>
</div>
<span id="OLK_SRC_BODY_SECTION">
<div style="font-family:Calibri; font-size:11pt; text-align:left; color:black; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: #b5c4df 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 3pt">
<span style="font-weight:bold">From: </span>John Criswell <<a href="mailto:criswell@illinois.edu">criswell@illinois.edu</a>><br>
<span style="font-weight:bold">Organization: </span>University of Illinois<br>
<span style="font-weight:bold">Date: </span>Thu, 22 Sep 2011 16:08:31 -0500<br>
<span style="font-weight:bold">To: </span>Jinwook Shin <<a href="mailto:Jinwook.Shin@microsoft.com">Jinwook.Shin@microsoft.com</a>><br>
<span style="font-weight:bold">Cc: </span>"<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>" <<a href="mailto:llvmdev@cs.uiuc.edu">llvmdev@cs.uiuc.edu</a>><br>
<span style="font-weight:bold">Subject: </span>Re: [LLVMdev] running a module pass via opt on multiple bitcode files<br>
</div>
<div><br>
</div>
<div>
<div bgcolor="#FFFFFF" text="#000000">On 9/22/11 4:04 PM, Jinwook Shin wrote:
<blockquote cite="mid:CAA0ECBE.14270%25jinshin@microsoft.com" type="cite">
<div>Thanks John. I appreciate your help. <br>
</div>
</blockquote>
<br>
De nada.<br>
<br>
<blockquote cite="mid:CAA0ECBE.14270%25jinshin@microsoft.com" type="cite">
<div><br>
</div>
<div>I have taken the libLTO approach and it worked like a charm :) For those who wanted to achieve the same thing, below are the steps I've taken. </div>
<div><br>
</div>
<div>John --  a small question: I thought I wouldn't need to touch Makefiles at all, but that wasn't the case. Could you take a look at Step 4) and tell me what you think? Thanks! 
<br>
</div>
</blockquote>
<br>
A properly written project will allow the person compiling the software to easily change the compiler and the compiler/linker flags used.<br>
<br>
For example, autoconf-based configure scripts usually use the following environment variables:<br>
<br>
CC - C compiler<br>
CXX - C++ compiler<br>
CFLAGS - compiler flags<br>
LDFLAGS - linker flags<br>
<br>
So, you would do the following in sh/ksh syntax:<br>
<br>
CC=llvm-gcc<br>
CXX=llvm-g++<br>
CFLAGS="-emit-llvm"<br>
export CC<br>
export CXX<br>
export CFLAGS<br>
./configure<br>
<br>
<br>
<blockquote cite="mid:CAA0ECBE.14270%25jinshin@microsoft.com" type="cite">
<div><br>
</div>
<div>1) Create your own libLTO and add your pass to it. Do a code diff between /safecode/tools/LTO/LTOCodeGenerator.cpp and /llvm/tools/lto/LTOCodeGenerator.cpp to figure out what changes are needed to do this.</div>
<div>2) Make a backup copy of the original linker  /usr/lib/libLTO.dylib.</div>
<div>3) Copy your libLTO.dylib to /usr/lib.</div>
<div>4) Open Makefiles in your target project and change CC and CFLAGS as follows: </div>
<div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>CC=llvm-gcc</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>CFLAGS=-emit-llvm …</div>
</div>
<div>5) Build the project with LLVM.</div>
</blockquote>
<br>
-- John T.<br>
<br>
</div>
</div>
</span>
</body>
</html>