<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/62719>62719</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            bumping `cmake_minimum_required` causes compiler-rt test link failures on Windows
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            cmake,
            compiler-rt
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          zmodem
      </td>
    </tr>
</table>

<pre>
    Surprisingly, it seems the `cmake_minimum_required` bump from 3.13.4 to 3.20.0 in @mordante's ffb807ab5375b3f78df198dc5d4302b3b552242f is causing some behavior change that makes compiler-rt tests fail to link on Windows.

>From the top of https://lab.llvm.org/buildbot/#/builders/127/builds/48120/steps/8/logs/stdio

```
[58/136] Generating Fuzzer-x86_64-Test.exe
FAILED: projects/compiler-rt/lib/fuzzer/tests/Fuzzer-x86_64-Test.exe C:/b/slave/sanitizer-windows/build/stage1/projects/compiler-rt/lib/fuzzer/tests/Fuzzer-x86_64-Test.exe 
cmd.exe /C "cd /D C:\b\slave\sanitizer-windows\build\stage1\projects\compiler-rt\lib\fuzzer\tests && C:\b\slave\sanitizer-windows\build\stage1\.\bin\clang++.exe FuzzerTestObjects.FuzzerUnittest.cpp.x86_64.o FuzzerTestObjects.gtest-all.cc.x86_64.o C:/b/slave/sanitizer-windows/build/stage1/projects/compiler-rt/lib/fuzzer/tests/RTFuzzerTest.x86_64.lib -o C:/b/slave/sanitizer-windows/build/stage1/projects/compiler-rt/lib/fuzzer/tests/./Fuzzer-x86_64-Test.exe --driver-mode=g++ -Wl,-defaultlib:libcmt,-defaultlib:oldnames"
RTFuzzerTest.x86_64.lib(FuzzerIOWindows.cpp.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in FuzzerTestObjects.FuzzerUnittest.cpp.x86_64.o
```

I can also reproduce this locally. My CMake version is 3.20.21032501-MSVC_2

```
C:\src\llvm-project\build.nana>cmake -GNinja -DLLVM_ENABLE_PROJECTS="llvm;clang;compiler-rt" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_TARGETS_TO_BUILD=X86 ..\llvm && ninja check-fuzzer
[...]
[2985/2987] Generating Fuzzer-x86_64-Test.exe
FAILED: projects/compiler-rt/lib/fuzzer/tests/Fuzzer-x86_64-Test.exe
cmd.exe /C "cd /D C:\src\llvm-project\build.nana\projects\compiler-rt\lib\fuzzer\tests && C:\src\llvm-project\build.nana\.\bin\clang++.exe FuzzerTestObjects.FuzzerUnittest.cpp.x86_64.o FuzzerTestObjects.gtest-all.cc.x86_64.o C:/src/llvm-project/build.nana/projects/compiler-rt/lib/fuzzer/tests/RTFuzzerTest.x86_64.lib -o C:/src/llvm-project/build.nana/projects/compiler-rt/lib/fuzzer/tests/./Fuzzer-x86_64-Test.exe --driver-mode=g++ -Wl,-defaultlib:libcmt,-defaultlib:oldnames"
RTFuzzerTest.x86_64.lib(FuzzerIOWindows.cpp.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in FuzzerTestObjects.FuzzerUnittest.cpp.x86_64.o
```

I thought LLVM builds defauled to `/MT` (and compiler-rt's cmake files does some flag massaging for it here: https://github.com/llvm/llvm-project/blob/llvmorg-16.0.3/compiler-rt/CMakeLists.txt#L398), but for some reason ffb807ab5375b3f78df198dc5d4302b3b552242f changes that?

If I add `-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded`, it builds. Maybe that should be added as a default somewhere?


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV12TmzoS_TXySxcUSObDD36wwaS8sWdSHifZPLkECKOMQF5JTOL8-i0Bnow3k6-9ucnLrZpirKZpnW61jnSo1vzYMjZHwRIF6YR2ppZq_qmRJWsmuSzP87tOnRTXvD2KM8IJcAOasUaDqRmg0Csaes8ODW950zUHxf7TccVKFHqQd80JKiUbIK5P3CkYCcTFnusBbwFNvUaqkraGIRxpqKo89iKaByQKclJFcVn5s7gsgnJKPJyTPAgwnuIKuIaCdhYQaNkwyFlNH7hUUNS0PTIwNTVgQWkoZHPigilHGTBMGw0V5cLiELy9B9nCW96W8oN2kZcibzE8MwvZZmfkCWQFtTEnjcgC4QzhTNDcFeKhcaU6IpzlHRdlLk3_klwMTGmEMx9HF4MdTmMfewhn2rCTHcc2mjzq3lRy-RQDCr3xbxgGy8C6-yREQQovWMsUNbYEWffpE1POxzg8hFNnz7Rx2Uc2JrJYb1YpIgs4KfmeFcZO9aQmdn6eI5xVfRCEs75ICGfPR4VkqIL9RAv6wOx_2nLDrfOHoZSXjPus6JH5CGe_aPohq6IphxHOEkAYF6X9mQ7ggiRHQTKAC5IvwQXJAC5IRnBB8gguSJ6CCxILLkhGcEEyNBDCIcLh_z2Za428tXMJ2h4RXiK87NMZcra53uY9HnewvG65sVO7xenkDhVx5TPeR-vkUCHcovjs97tWbLf_jOgyu-A5OL8Pgvv1xnGcUvEHphzLa4ikY93BeSsQTpySVbQTxsYlC8HzojFfmKUoW9owjTAe2vArGSMcD_b17YVb7MLJ_D3CM7B7kSklFWxuXmKPxNbQcN1QU9RQMsMKw0qopAKEo13XGt6wDc8VVWeEI-v9QEVnmz_apof03NKGFzsmGNWWRqGUTLcIR5YBbcjP3vvDnaHmypm3P9d1z1NT_1xDQVugQktQ7KRk2RWWibkGIQsqxNmF7RmSLb1n8MCU5rK1RN4fB9j3CA4839nevUkO-Bs0OO46rQq7PcVD44xNctlqbktbisiqP5TAeXHD2_cUnHSzebM9rG4Wy83q8Gp3-69Vsr9DJEUY2yiILIfdSJZXnYbBSZPt4uXqsHy93qSH_btXK0TSsYL_E3Zxd7fa7de3Nzbw7c3l7X6xe7Ha3x32t0MQRNJ_xyG47pjBhVDaHmlRs-LeGVv7wvyudU4fh3gWBwhneBZHf_As-CEu_t5C_TXy_X70P8S2FhjOroCN_DYA-zvo9dfP-Q-f_lE-NbXsjrUByyIw3CFhqCAr7Q3WfoCz7d7etBGOaVvC1bJGGgYWrLhguk9kuC9Xgh6hoVrToyUNWxtuoGaK2XJcX3aP3NRd7hayGZvrmR4TMh-tUh0dP3Q9l3zRYz3zb7g22jUfDcJkQ2YxwjOrKPLO9Ch6dIpRLdsfVwPDpV_3t35EsqsaVrAGWpa2VBci74-Y3eub_Xq7OmzWy91i9w6RdNsJw_e1YrTstcsodIayu7Cl53wUFrqWnSghZzYyK4FqoOO6mD6DD0Mlr5BMyjkpZ2RGJ2zuh_HUj0gU-pN6Hvtl7M-q0C_ywJ9iP4yCMGTMD_3QC3MWT_gce5h4gR_4sYenvhvldEoLXExJ5TOvCtHUYw3l4lGTTLjWHZuHOPJnE0FzJnSv7jDu28HuN5zY0dVJZ8WfmvdLm3dHjaae6BfrMarhRrC5lXS2ab6p-6w6e0Z8DZrLCrBOMf1EfE06JeY_3Xd9mpan-kz_GwAA___muMP-">