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





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On February 3rd, 2014, 6:07 p.m. UTC, <b>Raphael Kubo da Costa</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Please see the big comment below the elseif line, the link to the kde-core-devel and http://lists.kde.org/?l=kde-core-devel&m=138244424421211&w=2: the issue here is that if you pass -fno-exceptions to clang you need to guarantee it is not going to include any headers that throw exceptions either, even if it is in some template code that never gets instantiated.

For example, this does not build with clang++ -fno-exceptions, but does with GCC 4.8:

  #include <exception>
  template <typename T>
  struct S { void f() { throw std::exception(); } };

This was a problem for kdelibs including OpenEXR headers, or kdepim including pimlibs headers that all fell into this case.
</pre>
 </blockquote>




 <p>On February 3rd, 2014, 6:13 p.m. UTC, <b>Alex Merry</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Arguably, the solution here is to always enable exceptions for code that encounters this (as we do for the OpenEXR QImage format plugin, for example).</pre>
 </blockquote>





 <p>On February 3rd, 2014, 6:51 p.m. UTC, <b>Alexander Richardson</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">It works with all the STL headers, the question is should we have everything built with clang be 7% bigger, or just enable exceptions in those cases where it breaks compilation? I don't really mind either way, I just realized that all of frameworks builds fine even with -fno-exceptions.</pre>
 </blockquote>





 <p>On February 3rd, 2014, 10:47 p.m. UTC, <b>Raphael Kubo da Costa</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">The situation might be easier with frameworks and we can choose to selectively enable exceptions where necessary; I only worry about ending up having to play catch up with libraries that suddenly end up including headers that throw exceptions via a dependency of a dependency, or issues going undetected due to everyone using GCC.</pre>
 </blockquote>








</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">The choice, I guess, is between making life easy for Clang users by avoiding errors that don't crop up with GCC, and making use of Clang's better diagnostics to catch these sorts of problems.  I'm not sure which we should be going for.</pre>
<br />










<p>- Alex</p>


<br />
<p>On January 29th, 2014, 11:18 p.m. UTC, Alexander Richardson wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://git.reviewboard.kde.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Build System, Extra Cmake Modules and KDE Frameworks.</div>
<div>By Alexander Richardson.</div>


<p style="color: grey;"><i>Updated Jan. 29, 2014, 11:18 p.m.</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
extra-cmake-modules
</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;">Also pass -fno-exceptions when building with clang

All of KF5 + kate + kde-workspace compile with clang and -fno-exceptions

The only problem related to clang and -fno-exceptions I could find was
http://llvm.org/bugs/show_bug.cgi?id=10910 and that is fixed since
clang version 3.0 which was released in December 2011</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;">compiled all of kf5 + kate + kde-workspace without any issues using clang 3.3

Would be good if someone with an older clang version could test it and see whether it works.
May also be related to the libstdc++ headers (4.8 installed here).
</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>kde-modules/KDECompilerSettings.cmake <span style="color: grey">(335e1270d19f8342e41b22e7081dea3f7ac0fbfc)</span></li>

</ul>

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







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








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