<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:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" 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;}
/* 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;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1933081664;
        mso-list-template-ids:-397358784;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></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">Thanks.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thankfully, the practical problem is less expansive that you might think.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">That functionality is modelled after that provided by Clang-Modules.<o:p></o:p></p>
<p class="MsoNormal">What that paragraph is saying is that if your programs has a header import of H somewhere, and it also #includes it somewhere, the compiler may reuse the result of building the PCH build for H. Since the build tool is already scanning
TUs for dependencies, it will have this information as part of that dependency scan.<o:p></o:p></p>
<p class="MsoNormal">Furthermore, whether an implementation actually behaves that way will be documented along with any additional flags. So, you actually only pay (if you pay anything at all) for what you use.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Corentin <corentin.jabot@gmail.com> <br>
<b>Sent:</b> Friday, February 8, 2019 9:31 AM<br>
<b>To:</b> Gabriel Dos Reis <gdr@microsoft.com><br>
<b>Cc:</b> Evolution Working Group mailing list <ext@lists.isocpp.org>; ben.boeckel@kitware.com; WG21 Tooling Study Group SG15 <tooling@open-std.org><br>
<b>Subject:</b> Re: [Ext] [Tooling] [D1483] How CMake supports Fortran modules and its applicability to C++<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Sorry, Legacy Header Units<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Referring specifically to that part of the modules proposal<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Courier New"">When a #include appears within non-modular code, if the named header file is known to correspond to a legacy header unit, the implementation treats the #include as an import of the corresponding legacy
header unit. The mechanism for discovering this correspondence is left implementation-defined; there are multiple viable strategies here (such as explicitly building legacy header modules and providing them as input to downstream compilations, or introducing
accompanying files describing the legacy header structure) and we wish to encourage exploration of this space. An implementation is also permitted to not provide any mapping mechanism, and process each legacy header unit independently</span><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>
<p class="MsoNormal">The list of such headers can only be maintained manually or synthesized by scanning the complete dependency tree - rather than be extractable from an arbitrary individual source file.<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Fri, 8 Feb 2019 at 18:20 Gabriel Dos Reis <<a href="mailto:gdr@microsoft.com">gdr@microsoft.com</a>> wrote:<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">I cannot understand what you are saying because I don’t know what LHU is, and I don’t understand the second bullet and why that is the case.<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b>From:</b> Corentin <<a href="mailto:corentin.jabot@gmail.com" target="_blank">corentin.jabot@gmail.com</a>>
<br>
<b>Sent:</b> Friday, February 8, 2019 9:18 AM<br>
<b>To:</b> Evolution Working Group mailing list <<a href="mailto:ext@lists.isocpp.org" target="_blank">ext@lists.isocpp.org</a>><br>
<b>Cc:</b> <a href="mailto:ben.boeckel@kitware.com" target="_blank">ben.boeckel@kitware.com</a>; WG21 Tooling Study Group SG15 <<a href="mailto:tooling@open-std.org" target="_blank">tooling@open-std.org</a>>; Gabriel Dos Reis <<a href="mailto:gdr@microsoft.com" target="_blank">gdr@microsoft.com</a>><br>
<b>Subject:</b> Re: [Ext] [Tooling] [D1483] How CMake supports Fortran modules and its applicability to C++<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Nice document.<o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#212121">6.4 I believe LHU imported through include will need to be identified by either</span><o:p></o:p></p>
</div>
<div>
<ul type="disc">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
<span style="font-size:10.0pt;color:#212121">Having a manually maintained list of LHU</span><o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
<span style="font-size:10.0pt;color:#212121">Parsing all files in the projects/dependency and assuming that files that are not imported with import at least once are not LHU</span><o:p></o:p></li></ul>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;color:#212121">I agree that letting the compiler decides to treat an include as an LHU without the blessing of the build system would be asking for
trouble</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">On Fri, 8 Feb 2019 at 17:51 Gabriel Dos Reis via Ext <<a href="mailto:ext@lists.isocpp.org" target="_blank">ext@lists.isocpp.org</a>> wrote:<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-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Early feedback regarding section 6.3 and 6.4.<br>
<br>
Concern in 6.3:<br>
The description there is notional, not a requirement that needs to be followed by the letter by compilers.<br>
There is an alternative formulation that uses the notion or "semantics abstract graph" (term defined in the Modules TS) that does not rely on synthesized header unit.<br>
<br>
Concern in 6.4:<br>
The way to import of "header import" is that of using a precompiled header file. If CMAKE already supports uses of PCHs, then the machinery is already there.<br>
For every import of a header H, there would be a rule for building say H.pch unless there is already a H.pch supplied by the system or other sources.<br>
<br>
<br>
Early feedback on section 7.<br>
That ask in 7.1 looks immensely reasonable to me; we have been considering similar for a while.
<br>
The Visual C++ team would be happy to team up with other tool vendor to provide an open source version.<br>
<br>
-- Gaby<br>
<br>
| -----Original Message-----<br>
| From: <a href="mailto:tooling-bounces@open-std.org" target="_blank">tooling-bounces@open-std.org</a> <<a href="mailto:tooling-bounces@open-std.org" target="_blank">tooling-bounces@open-std.org</a>> On<br>
| Behalf Of Ben Boeckel<br>
| Sent: Friday, February 8, 2019 7:55 AM<br>
| To: WG21 Tooling Study Group SG15 <<a href="mailto:tooling@open-std.org" target="_blank">tooling@open-std.org</a>><br>
| Subject: [Tooling] [D1483] How CMake supports Fortran modules and its<br>
| applicability to C++<br>
| <br>
| Hi,<br>
| <br>
| Here is copy of Kitware's paper to be discussed at Kona. I have a PDF,<br>
| but it was too large to attach to the list. I'll be at Kona, but the<br>
| other authors are not able to make it.<br>
| <br>
| An HTML version is hosted here:<br>
| <br>
| <br>
| <a href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmath" target="_blank">
https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmath</a><br>
| <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fstuf.fedorapeople.org&data=02%7C01%7Cgdr%40microsoft.com%7C0fc75e3276d84674c68108d68deb2876%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636852438476031606&sdata=sdcGYesC3%2BaYjPOeCMQG%2FcQMrCtQQL4KN%2ByHO1qmVF0%3D&reserved=0" target="_blank">
stuf.fedorapeople.org</a>%2Ffortran-modules%2Ffortran-<br>
| modules.html&amp;data=02%7C01%7Cgdr%<a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2F40microsoft.com&data=02%7C01%7Cgdr%40microsoft.com%7C0fc75e3276d84674c68108d68deb2876%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636852438476041600&sdata=5cpB36E0IUQwlSNCyIryo2lUg2kFNr3Ba2NS1AfSoSU%3D&reserved=0" target="_blank">40microsoft.com</a>%7Cd49f0fb63<br>
| aac4ce886ff08d68dddd8b0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7<br>
| C1%7C636852381303060160&amp;sdata=ltkTtPf84tUk76Am5swiz6eNBGqZW<br>
| ydRfDoswsYEmlA%3D&amp;reserved=0<br>
| <br>
| Feedback welcome.<br>
| <br>
| Thanks,<br>
| <br>
| --Ben<br>
| _______________________________________________<br>
| Tooling mailing list<br>
| <a href="mailto:Tooling@isocpp.open-std.org" target="_blank">Tooling@isocpp.open-std.org</a><br>
| <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww" target="_blank">
https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww</a>.<br>
| open-<br>
| <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fstd.org&data=02%7C01%7Cgdr%40microsoft.com%7C0fc75e3276d84674c68108d68deb2876%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636852438476041600&sdata=dWfpP0zlpN5QmBc0PYuWju87u3YUibgsuAs%2FgbdAUTI%3D&reserved=0" target="_blank">
std.org</a>%2Fmailman%2Flistinfo%2Ftooling&amp;data=02%7C01%7Cgdr%40m<br>
| <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Ficrosoft.com&data=02%7C01%7Cgdr%40microsoft.com%7C0fc75e3276d84674c68108d68deb2876%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636852438476051594&sdata=9dHnkp8BLWEOZb3ey5PYBV1OzQ4VxW2Pb6Q%2BVcULURw%3D&reserved=0" target="_blank">
icrosoft.com</a>%7Cd49f0fb63aac4ce886ff08d68dddd8b0%7C72f988bf86f141af9<br>
| 1ab2d7cd011db47%7C1%7C1%7C636852381303060160&amp;sdata=YLene6t<br>
| qdjuV7ad%2BAHf5kceett%2F1Whqj7Db0zka470g%3D&amp;reserved=0<br>
_______________________________________________<br>
Ext mailing list<br>
<a href="mailto:Ext@lists.isocpp.org" target="_blank">Ext@lists.isocpp.org</a><br>
Subscription: <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.isocpp.org%2Fmailman%2Flistinfo.cgi%2Fext&data=02%7C01%7Cgdr%40microsoft.com%7C0fc75e3276d84674c68108d68deb2876%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636852438476051594&sdata=JdpROamOqPZ5%2B7DaJD6CsHe%2BOQtl20ZQJwhbBfFr0yY%3D&reserved=0" target="_blank">
http://lists.isocpp.org/mailman/listinfo.cgi/ext</a><br>
Link to this post: <a href="https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flists.isocpp.org%2Fext%2F2019%2F02%2F7507.php&data=02%7C01%7Cgdr%40microsoft.com%7C0fc75e3276d84674c68108d68deb2876%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636852438476061590&sdata=nj%2BUYjkEtQc1zzi0MNucFK1YFV84wUZ83JERG7Jw8oA%3D&reserved=0" target="_blank">
http://lists.isocpp.org/ext/2019/02/7507.php</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</body>
</html>