<table><tr><td style="">kfunk requested changes to this revision.<br />kfunk added a comment.<br />This revision now requires changes to proceed.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D5865" rel="noreferrer">View Revision</a></tr></table><br /><div><div><p>Can't go in as-is, as it breaks compilation on MSVC 2015.</p>

<p>But interesting to see that <tt style="background: #ebebeb; font-size: 13px;">/Za</tt> is actually problematic. Which proves my point: Just don't use named operators in code which claims to be cross-platform.</p></div></div><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D5865#inline-24635" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">KDECompilerSettings.cmake:230</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #304a96">if</span> <span class="p">(</span><span style="color: #aa2211">${</span><span style="color: #001294">CMAKE_CXX_COMPILER_VERSION</span><span style="color: #aa2211">}</span> <span style="color: #766510">VERSION_LESS</span> <span style="color: #766510">19.0.24210</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span style="color: #304a96">set</span><span class="p">(</span><span style="color: #766510">CMAKE_CXX_FLAGS</span> <span style="color: #766510">"${CMAKE_CXX_FLAGS} /Za"</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #304a96">elseif</span><span class="p">()</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Doesn't work, breaks compilation inside WinSDK 10:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">FAILED: src/CMakeFiles/KF5Parts.dir/readwritepart.cpp.obj
C:\PROGRA~2\MICROS~2.0\VC\bin\amd64\cl.exe   /nologo /TP -DKCOREADDONS_LIB -DKF5Parts_EXPORTS -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_SIG
NALS_SLOTS_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING -DQT_USE_FAST_OPERATOR_PLUS -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQT_XML_LIB -DTRANSLATION_DOMAIN=\"kparts5\" -DUNICODE -DWIN32_LEAN_AND_MEAN -DW
INVER=0x0600 -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D_USE_MATH_DEFINES -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0600 -Isrc -
IZ:\kderoot\download\git\kparts\src -I. -IZ:\kderoot\include\KF5\KIOWidgets -IZ:\kderoot\include\KF5 -IZ:\kderoot\include\KF5\KIOCore -IZ:\kderoot\include\KF5\KCoreAddons -IZ:\kderoot\include\qt5 -IZ
:\kderoot\include\qt5\QtCore -IZ:\kderoot\.\mkspecs\win32-msvc2015 -IZ:\kderoot\include\KF5\KService -IZ:\kderoot\include\KF5\KConfigCore -IZ:\kderoot\include\KF5\KJobWidgets -IZ:\kderoot\include\qt5
\QtWidgets -IZ:\kderoot\include\qt5\QtGui -IZ:\kderoot\include\qt5\QtNetwork -IZ:\kderoot\include\KF5\KCompletion -IZ:\kderoot\include\KF5\KWidgetsAddons -IZ:\kderoot\include\KF5\KXmlGui -IZ:\kderoot
\include\qt5\QtDBus -IZ:\kderoot\include\qt5\QtXml -IZ:\kderoot\include\KF5\KConfigWidgets -IZ:\kderoot\include\KF5\KCodecs -IZ:\kderoot\include\KF5\KConfigGui -IZ:\kderoot\include\KF5\KAuth -IZ:\kde
root\include\KF5\KTextWidgets -IZ:\kderoot\include\KF5\SonnetUi -IZ:\kderoot\include\KF5\KI18n -IZ:\kderoot\include\KF5\KIconThemes /DWIN32 /D_WINDOWS /W3 /GR /EHsc /wd4250 /wd4251 /wd4396 /wd4661 /Z
a /MD /Zi /O2 /Ob1 /DNDEBUG /showIncludes /Fosrc\CMakeFiles\KF5Parts.dir\readwritepart.cpp.obj /Fdsrc\CMakeFiles\KF5Parts.dir\ /FS -c Z:\kderoot\download\git\kparts\src\readwritepart.cpp
C:\Program Files (x86)\Windows Kits\10\include\10.0.14393.0\um\winnt.h(12128): error C2467: illegal declaration of anonymous 'struct'</pre></div>

<p style="padding: 0; margin: 8px;">Known issue: <a href="https://stackoverflow.com/questions/5489326/za-compiler-directive-does-not-compile-system-headers-in-vs2010" class="remarkup-link" target="_blank" rel="noreferrer">https://stackoverflow.com/questions/5489326/za-compiler-directive-does-not-compile-system-headers-in-vs2010</a></p>

<p style="padding: 0; margin: 8px;">Apparently Microsoft doesn't even test their own headers against compiling with <tt style="background: #ebebeb; font-size: 13px;">/Za</tt></p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D5865#inline-24634" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">KDECompilerSettings.cmake:231</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span style="color: #304a96">set</span><span class="p">(</span><span style="color: #766510">CMAKE_CXX_FLAGS</span> <span style="color: #766510">"${CMAKE_CXX_FLAGS} /Za"</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #304a96">elseif</span><span class="p">()</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span style="color: #74777d"># /permissive- became the preferred switch to obtain standards-compliant</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Typo: <tt style="background: #ebebeb; font-size: 13px;">else()</tt> then this branch is actually executed.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D5865#inline-24636" rel="noreferrer">View Inline</a><span style="color: #4b4d51; font-weight: bold;">KDECompilerSettings.cmake:239</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span style="color: #74777d"># https://sourceforge.net/p/predef/wiki/Compilers/</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span style="color: #304a96">set</span><span class="p">(</span><span style="color: #766510">CMAKE_CXX_FLAGS</span> <span style="color: #766510">"${CMAKE_CXX_FLAGS} /permissive-"</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #304a96">endif</span><span class="p">()</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Doesn't work on MSVC 2015 Update 3:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">cl : Command line warning D9002 : ignoring unknown option '/permissive-'</pre></div>

<p style="padding: 0; margin: 8px;">My Version:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24215.1 for x64</pre></div></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R240 Extra CMake Modules</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D5865" rel="noreferrer">https://phabricator.kde.org/D5865</a></div></div><br /><div><strong>To: </strong>rjvbb, Frameworks, Build System, cgilles, kfunk<br /><strong>Cc: </strong>kfunk<br /></div>