<table><tr><td style="">cgiboudeaux added a comment.
</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/D16894">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
          color: #6B748C;
          font-style: italic;
          margin: 4px 0 12px 0;
          padding: 8px 12px;
          background-color: #F8F9FC;">
<div style="font-style: normal;
          padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D16894#402701" style="background-color: #e7e7e7;
          border-color: #e7e7e7;
          border-radius: 3px;
          padding: 0 4px;
          font-weight: bold;
          color: black;text-decoration: none;">D16894#402701</a>, <a href="https://phabricator.kde.org/p/rjvbb/" style="
              border-color: #f1f7ff;
              color: #19558d;
              background-color: #f1f7ff;
                border: 1px solid transparent;
                border-radius: 3px;
                font-weight: bold;
                padding: 0 4px;">@rjvbb</a> wrote:</div>
<div style="margin: 0;
          padding: 0;
          border: 0;
          color: rgb(107, 116, 140);"><blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><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);">There are tests for other ECM modules in the **tests** subdir.</pre></div></blockquote>

<p>That's not the expected answer, so let me rephrase: which existing test can I clone and adapt (which is about the only thing I know how to do in this domain)?</p></div>
</blockquote>

<p>And the answer is the same, there are examples in the tests/ folder.</p>

<blockquote style="border-left: 3px solid #a7b5bf; color: #464c5c; font-style: italic; margin: 4px 0 12px 0; padding: 4px 12px; background-color: #f8f9fc;"><p>I'm going to need a hand here if not only because the only kind of testing that makes sense to me is checking manually with a selection of the compilers you happen to have installed. Anything automatic I can think of would not be able to do much more than taking the resulting CMAKE_??_FLAGS variable and check if the compiler indeed accepts all the arguments. That's basically just repeating the same tests already performed in the macro you're supposed to be testing and thus as much (if not more) a test of the input logic (the conditional expression(s)) as of the macro.</p></blockquote>

<p>The macro has different parameters.</p>

<p>Things you can test:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">Compiler flags accepted by all compilers (-Wall, -Wextra...)</li>
<li class="remarkup-list-item">flags only accepted by a given compiler. You can then check that it's not added by mistake to unsupported platforms</li>
</ul>

<p>About the code itself:<br />
The two functions are clones, this can be avoided by only having one ECM_ADD_COMPILER_FLAG function and a LANGUAGE argument.<br />
This has 2 benefits:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">The module name matches the function name</li>
<li class="remarkup-list-item">it's shorter than ecm_add_cxx_compiler_flag_if_supported and easier to remember.</li>
</ul></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/D16894#inline-103439">View Inline</a><span style="color: #4b4d51; font-weight: bold;">ECMAddCompilerFlag.cmake:94</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"># if the user provided conditions, evaluate them now to simplify things later</span>
</div><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: #766510">EASCXXFLAGS_IF_SUPPORTED</span> <span style="color: #766510">AND</span> <span class="p">(</span><span style="color: #aa2211">${</span><span style="color: #001294">EASCXXFLAGS_IF_SUPPORTED</span><span style="color: #aa2211">}</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">EASCXXFLAGS_is_supported</span> <span style="color: #766510">ON</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">EASCXXFLAGS_SUPPORTED_IF</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/D16894#inline-103440">View Inline</a><span style="color: #4b4d51; font-weight: bold;">ECMAddCompilerFlag.cmake:98</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: #766510">EASCXXFLAGS_QUERY_IF</span> <span style="color: #766510">AND</span> <span class="p">(</span><span style="color: #aa2211">${</span><span style="color: #001294">EASCXXFLAGS_QUERY_IF</span><span style="color: #aa2211">}</span><span class="p">))</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #766510">OR</span> <span class="p">(</span><span style="color: #766510">NOT</span> <span style="color: #766510">EASCXXFLAGS_IF_SUPPORTED</span> <span style="color: #766510">AND</span> <span style="color: #766510">NOT</span> <span style="color: #766510">EASCXXFLAGS_QUERY_IF</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">EASCXXFLAGS_needs_query</span> <span style="color: #766510">ON</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">EASCXXFLAGS_SUPPORTED_IF</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/D16894#inline-103441">View Inline</a><span style="color: #4b4d51; font-weight: bold;">ECMAddCompilerFlag.cmake:129</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"># if the user provided conditions, evaluate them now to simplify things later</span>
</div><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: #766510">EASCFLAGS_IF_SUPPORTED</span> <span style="color: #766510">AND</span> <span class="p">(</span><span style="color: #aa2211">${</span><span style="color: #001294">EASCFLAGS_IF_SUPPORTED</span><span style="color: #aa2211">}</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">EASCFLAGS_is_supported</span> <span style="color: #766510">ON</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">EASCFLAGS_SUPPORTED_IF</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/D16894#inline-103442">View Inline</a><span style="color: #4b4d51; font-weight: bold;">ECMAddCompilerFlag.cmake:133</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: #766510">EASCFLAGS_QUERY_IF</span> <span style="color: #766510">AND</span> <span class="p">(</span><span style="color: #aa2211">${</span><span style="color: #001294">EASCFLAGS_QUERY_IF</span><span style="color: #aa2211">}</span><span class="p">))</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #766510">OR</span> <span class="p">(</span><span style="color: #766510">NOT</span> <span style="color: #766510">EASCFLAGS_IF_SUPPORTED</span> <span style="color: #766510">AND</span> <span style="color: #766510">NOT</span> <span style="color: #766510">EASCFLAGS_QUERY_IF</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">EASCFLAGS_needs_query</span> <span style="color: #766510">ON</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">EASCFLAGS_SUPPORTED_IF</p></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/D16894">https://phabricator.kde.org/D16894</a></div></div><br /><div><strong>To: </strong>rjvbb, Build System, kfunk<br /><strong>Cc: </strong>cgiboudeaux, dfaure, kfunk, apol, kde-frameworks-devel, kde-buildsystem, Build System, michaelh, ngraham, bruns<br /></div>