<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/128272/">https://git.reviewboard.kde.org/r/128272/</a>
     </td>
    </tr>
   </table>
   <br />











<div>



<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://git.reviewboard.kde.org/r/128272/diff/10/?file=469908#file469908line30" style="color: black; font-weight: bold; text-decoration: underline;">languages/clang/duchain/clangparsingenvironment.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 10)

    </span>
   </th>
  </tr>
 </thead>



 
 

 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">30</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">m_frameworkPaths</span> <span class="o">+=</span> <span class="n">Path</span><span class="p">(</span><span class="n">QString</span><span class="o">::</span><span class="n">fromUtf8</span><span class="p">(</span><span class="s">"/Library/Frameworks"</span><span class="p">));</span></pre></td>
  </tr>

 </tbody>

</table>

 <div style="margin-left: 2em;">

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">there is a huge difference between <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">QString::fromUtf8</code> and <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">QStringLiteral</code>, namely performance. Please read the docs. Use the latter. Also note that in Qt 5, every source file is assumed to be UTF8 encoded, and that QString is internally UTF16 encoded.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Yes, there can be different environments - one per set of {defines, include paths, frameworks paths}.</p></pre>
 </div>
</div>
<br />



<p>- Milian Wolff</p>


<br />
<p>On June 27th, 2016, 9:28 p.m. UTC, RenĂ© J.V. Bertin wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for KDE Software on Mac OS X and KDevelop.</div>
<div>By RenĂ© J.V. Bertin.</div>


<p style="color: grey;"><i>Updated June 27, 2016, 9:28 p.m.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
kdevelop
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This is a draft implementation for parser support of the <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">-iframework dir</code> and <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">-F dir</code> compiler arguments. On OS X these are the framework equivalents of <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">-isystem</code> and <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">-I</code> respectively, telling the compiler and/or linker where to find framework bundles.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I started out making the new code available on OS X only but that introduces a lot of #ifdefs for probably little benefit. On the contrary, clang supports the arguments on Linux too, presumably because clang is a functional cross-compiler that can generate Darwin Mach-O object files on Linux too.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">For the 1st approach I propose to parse the framework directories, adding the effective header directories of the individual frameworks as if they were added explicitly. The framework directories are also added to a new list in the result structure. I presume that this is a prerequisite for adding them to the (lib)clang arguments of the clang parser.</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">the unittest works as expected on OS X.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">20160625: the patch works as expected on OS X. The <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">-iframework /opt/local/libexec/qt5/Library/Frameworks</code> argument added by cmake to each compiler invocation is detected and put to use; Qt header files are found in the frameworks without a wrapper Qt5 header directory (<code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">/opt/local/include/qt5</code>) added to the header search path. Header files from the system SDKs are found too</p></pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>languages/clang/clangparsejob.cpp <span style="color: grey">(8375eb5)</span></li>

 <li>languages/clang/duchain/clangparsingenvironment.h <span style="color: grey">(c689132)</span></li>

 <li>languages/clang/duchain/clangparsingenvironment.cpp <span style="color: grey">(b515037)</span></li>

 <li>languages/clang/duchain/parsesession.cpp <span style="color: grey">(aae0661)</span></li>

 <li>languages/plugins/custom-definesandincludes/compilerprovider/compilerprovider.h <span style="color: grey">(7a5184f)</span></li>

 <li>languages/plugins/custom-definesandincludes/compilerprovider/compilerprovider.cpp <span style="color: grey">(24e532a)</span></li>

 <li>languages/plugins/custom-definesandincludes/definesandincludesmanager.h <span style="color: grey">(6d0d210)</span></li>

 <li>languages/plugins/custom-definesandincludes/definesandincludesmanager.cpp <span style="color: grey">(ebceb4d)</span></li>

 <li>languages/plugins/custom-definesandincludes/idefinesandincludesmanager.h <span style="color: grey">(5da71f2)</span></li>

 <li>projectmanagers/cmake/cmakeimportjsonjob.cpp <span style="color: grey">(f064647)</span></li>

 <li>projectmanagers/cmake/cmakemanager.h <span style="color: grey">(3096b7d)</span></li>

 <li>projectmanagers/cmake/cmakemanager.cpp <span style="color: grey">(5c15e2f)</span></li>

 <li>projectmanagers/cmake/cmakeprojectdata.h <span style="color: grey">(60e8773)</span></li>

 <li>projectmanagers/custom-buildsystem/custombuildsystemplugin.h <span style="color: grey">(372b283)</span></li>

 <li>projectmanagers/custom-buildsystem/custombuildsystemplugin.cpp <span style="color: grey">(b04647e)</span></li>

 <li>projectmanagers/custommake/custommakemanager.h <span style="color: grey">(33c2997)</span></li>

 <li>projectmanagers/custommake/custommakemanager.cpp <span style="color: grey">(e2ce943)</span></li>

 <li>projectmanagers/custommake/makefileresolver/makefileresolver.h <span style="color: grey">(debe977)</span></li>

 <li>projectmanagers/custommake/makefileresolver/makefileresolver.cpp <span style="color: grey">(97973d4)</span></li>

 <li>projectmanagers/custommake/makefileresolver/tests/test_custommake.h <span style="color: grey">(3ad0f36)</span></li>

 <li>projectmanagers/custommake/makefileresolver/tests/test_custommake.cpp <span style="color: grey">(368e83e)</span></li>

 <li>projectmanagers/qmake/qmakemanager.h <span style="color: grey">(e5e3266)</span></li>

 <li>projectmanagers/qmake/qmakemanager.cpp <span style="color: grey">(123b474)</span></li>

</ul>

<p><a href="https://git.reviewboard.kde.org/r/128272/diff/" style="margin-left: 3em;">View Diff</a></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">File Attachments </h1>


 <li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2016/06/22/67189f62-ec2c-4797-a315-cafc44fbbb6d__patch-support-kdevp-frameworks.diff">the real companion patch for kdevplatform</a></li>

</ul>




  </td>
 </tr>
</table>







  </div>
 </body>
</html>