<div dir="ltr">Hey Mark,<br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Apr 28, 2013 at 10:49 AM, Mark Charlebois <span dir="ltr">&lt;<a href="mailto:charlebm@gmail.com" target="_blank">charlebm@gmail.com</a>&gt;</span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>The build system tries to keep as much common as possible while allowing you to do the following:</div>
<div><br></div><div>- add new targets</div><div>- write common rules of targets of the same architecture</div><div>- write patches that are common, arch specific or target specific, or git branch specific (for particular kernel versions as some targets do not tract the upstream trunk)</div>



<div>- support multiple cross toolchains to validate using clang with particular assemblers and linkers</div><div>- switching the toolchain to use with clang is as simple as changing a line in the target makefile</div><div>



- provide easy commands to do common tasks: syncing, building at target or rebuilding clang, etc</div></blockquote><div><br></div><div>So if I understand this right, the system is a set of hand-written Makefiles (as opposed to systems like cmake or autotools)?</div>


<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>cd llvmlinux</div><div>
make build-dep-check</div><div><br></div><div>-- install anything missing --</div><div><br></div><div>cd target/vexpress</div><div><br></div><div>make kernel-build</div></blockquote><div><br></div><div>I was able to x64 just fine the other day. (I also tried it with allyesconfig but that (obviously) failed).</div>


<div><br></div><div>Quick question though, why is vexpress always used as an example (buildbot, wiki, etc)? Is there something special about it or &quot;just because&quot;?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>This will download LLVM and clang and build them, download the cross compiler toolchains specified in the vexpress Makefile, download the kernel, and then build the kernel, apply the patches to the kernel and build the kernel with clang. </div>



<div><br></div><div>The build system tracks all of the dependencies in state subdirectories. When you clean a particular make target it will clean out the files from the associated state directory.</div></blockquote><div>


 </div><div>About the state directories: I noticed the files are empty. I assume you&#39;re testing for state using test -f like methods?</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>As far as the scope for implementing checker for the kernel, many of the frequent contributors just have not had the time to try it. From those who have tried it, we know it doesn&#39;t just work out of the box.  </div>


</blockquote><div><br></div><div>I see. When ever I used the analyzer it was using the scan-build tool. Need to check whether it works with the custom build system</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>Its an advanced task because the kernel make system is complcated, and it may require modifying LLVM or checker code. We just don&#39;t know yet. </div></blockquote><div><br></div><div>Alright. My plan was to read up on the whole kbuild system and see how flags/commands enabling the analyzer would be integrated.</div>


<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Thanks for your interest in the project!</div></blockquote><div><br></div><div style>Let&#39;s hope I can help :-).</div>

<div style><br></div><div style>Eduard </div></div></div></div>