<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Wed, Jan 17, 2018 at 11:25 AM Robinson, Paul <<a href="mailto:paul.robinson@sony.com">paul.robinson@sony.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div class="m_119641913190225571WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Looking at build-procedure files for link-order hints is technically "written down" but not really human-friendly and not at all what I had in mind.
</span><span style="font-size:11.0pt;font-family:Wingdings;color:#1f497d">J</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u><u></u></span></p>
<p class="MsoNormal"><a name="m_119641913190225571__MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I get that writing it down on a doc page will have the usual bit-rot problems, but if you want to tell developers (especially newer
 developers) "get the layering right" you really need to point to a place that says what the layering *is*.  Maybe you were agreeing to do that, but I'm not sure.</span></a></p></div></div></blockquote><div><br>I wasn't planning on writing it down anymore than it's already necessarily enshrined in the build system. I'm not expecting to yell at/complain to people who violate it unknowingly (Apple/Windows developers in general don't get layering checked today because their linkers do resolve circular dependencies - but they get failures on Linux buildbots and fix them when they arise) - but to point out "oh, hey, maybe you didn't notice but this introduces a layering violation - please fix it".<br><br>I'm not sure what makes LLVMBuild.txt not human-friendly - they're very terse text files, contain little other than a list of dependencies. They're probably easier to read/maintain than CMakeLists.txt which have to be updated whenever a new source file is added. These lists have to be updated/maintained when new libraries or dependencies are introduced & yeah, for the most part we don't have to think about them - and most changes won't impact layering/violate layering constraints, but then rarely we will hit these things & check or update the layering, etc.<br><br>- Dave<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple"><div class="m_119641913190225571WordSection1"><p class="MsoNormal"><a name="m_119641913190225571__MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u><u></u></span></a></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">--paulr<u></u><u></u></span></p></div></div><div lang="EN-US" link="blue" vlink="purple"><div class="m_119641913190225571WordSection1">
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I have found layering to be a particularly useful and beneficial model in past large software projects.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Is LLVM's layering actually written down anywhere?  Last time I went looking, there was nothing. 
 If there's no spec, there's no verifiable conformance; you have to guess based on what other files do.</span><u></u><u></u></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal" style="margin-left:4.8pt"><br>
Fair point - Google's build system is pretty specific about this & so we've got it codified there, and the open source build system has to know some of this to get the link order right - otherwise LLVM programs couldn't successfully link (if the libraries weren't
 placed in the right order on the link command)<br>
<br>
I think the the LLVMBuild.txt files contain the library dependency lists for the CMake build.<br>
<br>
- Dave<br>
 <span style="color:#1f497d"><u></u><u></u></span></p>
</div>
</div>
</div>
</div>
</div></div></blockquote></div></div>