<div dir="ltr"><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.8000001907349px">And I don't compile llvm separately. Should I compile llvm separately?</span></blockquote><div>Build together is fine.</div><div><br></div><div>I typically use git and </div><div>clone clang into llvm/tools</div><div>and compiler-rt into llvm/projects.</div><div><br></div><div>Then I just run cmake as described and make if I am using -G "Unix Makefiles"</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"><span style="font-size:12.8000001907349px">I indeed am confused with this compiling method.  For example , there are two files : CMakeLists.txt and Makefile in llvm/lib/Transfroms/Hello.</span></blockquote><div>They CmakeLists.txt are part of the source of llvm so I don't see what the confusion is.</div><div>The makefile has not been touched in 5 years so you would just leave that.</div><div>It's the CMakeLists you want to edit.</div><div><br></div><div><blockquote 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" class="gmail_quote">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)<br>Please correct me if what I say are wrong.</blockquote></div><div>Testcases are usually automatically picked up when they are in the correct folder regardless of the build system.</div><div>If you want to add something to the system I would do it in CMakeList.txt and submit it for review via phabracator.</div><div><br></div><div>Kind Regards</div><div>Martell</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Aug 29, 2015 at 12:16 AM, 慕冬亮 <span dir="ltr"><<a href="mailto:mudongliangabcd@gmail.com" target="_blank">mudongliangabcd@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote"><span class="">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><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></span><div>I compile llvm according to this website(<a href="http://clang.llvm.org/get_started.html" target="_blank">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" target="_blank">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" target="_blank">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" target="_blank">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" target="_blank">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><span class=""><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></span><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 style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>cd</span> <span>where-you-want-to-build-llvm</span></tt></li><li><tt style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>mkdir</span> <span>build</span></tt> (for building without polluting the source dir)</li><li><tt style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>cd</span> <span>build</span></tt></li><li><tt style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>../llvm/configure</span> <span>[options]</span></tt> Some common options:<ul><li><tt style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>--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 style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>/usr/local</span></tt>).</li><li><tt style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>--enable-optimized</span></tt> — Compile with optimizations enabled (default is NO).</li><li><tt style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>--enable-assertions</span></tt> — Compile with assertion checks enabled (default is YES).</li></ul></li><li><tt style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>make</span> <span>[-j]</span></tt> — The <tt style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>-j</span></tt> specifies the number of jobs (commands) to run simultaneously. This builds both LLVM and Clang for Debug+Asserts mode. The <tt style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>--enable-optimized</span></tt> configure option is used to specify a Release build.</li><li><tt style="font-family:Consolas,'Deja Vu Sans Mono','Bitstream Vera Sans Mono',monospace;font-size:0.95em"><span>make</span> <span>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><span class=""><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>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>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></span></div><br></div></div>
</blockquote></div><br></div>