<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2015-08-29 14:45 GMT+08:00 Martell Malone <span dir="ltr"><<a href="mailto:martellmalone@gmail.com" target="_blank">martellmalone@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span style="font-size:12.8px">Why are there two ways to compile LLVM?<br></span><span style="font-size:12.8px">        make and cmake!<br></span><span style="font-size:12.8px">What's the difference of those two ways?</span></blockquote><div><br></div></span><div>make and cmake are used together not separately.</div><div>cmake is a high level generator that creates a makefile for make</div><div><br></div></div></blockquote><div>I compile llvm according to this website(<a href="http://clang.llvm.org/get_started.html">http://clang.llvm.org/get_started.html</a>)</div><ol style="font-family:'Lucida Grande','Lucida Sans Unicode',Arial,Verdana,Helvetica,sans-serif;line-height:19.5px"><li style="padding-bottom:0.5em">Checkout LLVM:<ul style="padding-left:1.5em"><li style="padding-bottom:0.5em">Change directory to where you want the llvm directory placed.</li><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">svn co <a href="http://llvm.org/svn/llvm-project/llvm/trunk">http://llvm.org/svn/llvm-project/llvm/trunk</a> llvm</tt></li></ul></li><li style="padding-bottom:0.5em">Checkout Clang:<ul style="padding-left:1.5em"><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">cd llvm/tools</tt></li><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">svn co <a href="http://llvm.org/svn/llvm-project/cfe/trunk">http://llvm.org/svn/llvm-project/cfe/trunk</a> clang</tt></li><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">cd ../..</tt></li></ul></li><li style="padding-bottom:0.5em">Checkout extra Clang Tools: (optional)<ul style="padding-left:1.5em"><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">cd llvm/tools/clang/tools</tt></li><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">svn co <a href="http://llvm.org/svn/llvm-project/clang-tools-extra/trunk">http://llvm.org/svn/llvm-project/clang-tools-extra/trunk</a> extra</tt></li><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">cd ../../../..</tt></li></ul></li><li style="padding-bottom:0.5em">Checkout Compiler-RT:<ul style="padding-left:1.5em"><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">cd llvm/projects</tt></li><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">svn co <a href="http://llvm.org/svn/llvm-project/compiler-rt/trunk">http://llvm.org/svn/llvm-project/compiler-rt/trunk</a> compiler-rt</tt></li><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">cd ../..</tt></li></ul></li><li style="padding-bottom:0.5em">Build LLVM and Clang:<ul style="padding-left:1.5em"><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">mkdir build</tt> (in-tree build is not supported)</li><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">cd build</tt></li><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">cmake -G "Unix Makefiles" ../llvm</tt></li><li style="padding-bottom:0.5em"><tt style="color:rgb(0,0,0)">make</tt></li></ul></li></ol><div>And I don't compile llvm separately. Should I compile llvm separately?</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>You may however be confusing make with autotools.</div><div>autotools like cmake generates a makefile for make to use.</div><div><br></div><div>autotools is an older tool typically used by gcc so it was natural for llvm/clang to adopt this</div><div>llvm as a project is moving towards only having cmake as the high level generator.</div><div><br></div></div></blockquote><div><div><span style="color:rgb(0,0,0);font-family:'Lucida Grande','Lucida Sans Unicode',Geneva,Verdana,sans-serif;font-size:14px;line-height:21px">Configure and build LLVM and Clang using autotools :</span></div><ul style="color:rgb(0,0,0);font-family:'Lucida Grande','Lucida Sans Unicode',Geneva,Verdana,sans-serif;font-size:14px;line-height:21px"><li><tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">cd</span> <span class="">where-you-want-to-build-llvm</span></tt></li><li><tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">mkdir</span> <span class="">build</span></tt> (for building without polluting the source dir)</li><li><tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">cd</span> <span class="">build</span></tt></li><li><tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">../llvm/configure</span> <span class="">[options]</span></tt> Some common options:<ul><li><tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">--prefix=directory</span></tt> — Specify for <em>directory</em> the full pathname of where you want the LLVM tools and libraries to be installed (default <tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">/usr/local</span></tt>).</li><li><tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">--enable-optimized</span></tt> — Compile with optimizations enabled (default is NO).</li><li><tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">--enable-assertions</span></tt> — Compile with assertion checks enabled (default is YES).</li></ul></li><li><tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">make</span> <span class="">[-j]</span></tt> — The <tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">-j</span></tt> specifies the number of jobs (commands) to run simultaneously. This builds both LLVM and Clang for Debug+Asserts mode. The <tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">--enable-optimized</span></tt> configure option is used to specify a Release build.</li><li><tt class="" style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span class="">make</span> <span class="">check-all</span></tt> — This run the regression tests to ensure everything is in working order.</li></ul></div><div>I indeed am confused with this compiling method.  For example , there are two files : CMakeLists.txt and Makefile in llvm/lib/Transfroms/Hello.</div><div>I want to add my testing Pass in lib for testing. I should prepare two files according to the way you compile.( Makefile : autotools  , CMakeLists.txt : cmake)</div><div>Please correct me if what I say are wrong.</div><div>    - mudongliang</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div></div><div>Please someone correct me if I am wrong but the autotools build will be deprecated soon</div><div>so I suggest you use cmake when building</div><div><br></div><div>Kind Regards</div><div>Martell</div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Fri, Aug 28, 2015 at 9:18 PM, mudongliang via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div class="h5">Why are there two ways to compile LLVM?<br>
        make and cmake!<br>
What's the difference of those two ways?<br>
<br>
- mudongliang<br></div></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div><br></div>
</blockquote></div><br></div></div>