<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Iterative builds are very useful and work well.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">But when I’m reviewing a change from someone else or starting on a new change for myself, I build all of flang.  In the last six hours, I’ve done four non-iterative builds, for example.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Pete<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Michael Kruse <llvm@meinersbur.de> <br>
<b>Sent:</b> Friday, July 31, 2020 12:01 PM<br>
<b>To:</b> Peter Steinfeld <psteinfeld@nvidia.com><br>
<b>Cc:</b> flang-dev@lists.llvm.org<br>
<b>Subject:</b> Re: [flang-dev] Out-of-tree flang builds<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<table class="MsoNormalTable" border="1" cellspacing="5" cellpadding="0" style="background:#FFEB9C">
<tbody>
<tr>
<td style="padding:.75pt .75pt .75pt .75pt">
<p class="MsoNormal"><b><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:black">External email: Use caution opening links or attachments</span></b><span style="font-size:7.5pt;font-family:"Verdana",sans-serif;color:black">
</span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">Support for out-of-tree builds, like BUILD_SHARED_LIBS or gn builds, are helpful for developers, but not relevant for release builds. Requiring to maintain all combinations of build configurations is not feasible before every commit, this
 is why they are only best effort. When you notice a out-of-tree build breaking, you are free to fix the problem (and assuming the fix is straightforward, low-risk, without review).
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">However, I am wondering, why isn't an iterative build sufficient? Assuming you are not touching any non-flang files, make/ninja should not try to rebuild them.<br>
  <o:p></o:p></p>
<div>
<p class="MsoNormal">Michael<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">Am Fr., 31. Juli 2020 um 13:41 Uhr schrieb Peter Steinfeld via flang-dev <<a href="mailto:flang-dev@lists.llvm.org">flang-dev@lists.llvm.org</a>>:<o:p></o:p></p>
</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" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Out-of-tree builds are a way to build only the flang code using a pre-existing full build of llvm.  Out-of-tree flang builds are four times faster than full builds.  Thus, for those
 of us actively developing code and reviewing other people's changes, out-of-tree builds significantly improve our productivity.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Unfortunately, out-of-tree builds are not currently supported by the llvm buildbots.  Thus, people changing build files must test this feature themselves.  The process of doing
 an out-of-tree build is described in the flang overview document -- <a href="https://github.com/llvm/llvm-project/tree/master/flang" target="_blank">
https://github.com/llvm/llvm-project/tree/master/flang</a>.  Alternatively, people changing build files could ask someone familiar with out-of-tree builds to review their changes.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">A recent update from David Truby broke out-of-tree builds --
<a href="https://reviews.llvm.org/D84022" target="_blank">https://reviews.llvm.org/D84022</a>.  In the conversation in the Phabricator review, David states that he understands that "out-of-tree builds are considered a "best effort" feature that isn't guaranteed
 to work".  But since out-of-tree builds are critical for my development, I don't consider them optional.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I'm writing this note to bring this issue to the broader flang community.  I consider out-of-tree builds to be a critical feature that no change should break.  What do you think?<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
flang-dev mailing list<br>
<a href="mailto:flang-dev@lists.llvm.org" target="_blank">flang-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/flang-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/flang-dev</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</body>
</html>