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

    <tr>
        <th>Summary</th>
        <td>
            Building compiler-rt + libcxx doesn't use in-tree libcxx headers
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    STR, on a mac with MacOSX11.1.sdk (any SDK < 11.3 should do, alternatively, remove the usr/include/c++ directory from the SDK):
- `cmake -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE_RELEASE -B obj llvm`
- `make -C obj`
- `cmake -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi" -DCMAKE_C_COMPILER=$PWD/obj/bin/clang -DLLVM_CONFIG=$PWD/obj/bin/llvm-config -DCOMPILER_RT_ENABLE_IOS=OFF -DCOMPILER_RT_ENABLE_WATCHOS=OFF -DCOMPILER_RT_ENABLE_TVOS=OFF -B obj2 runtimes`
- `make -C obj2`

The last command fails with e.g.:
```
In file included from (...)/compiler-rt/lib/orc/debug.cpp:13:
(...)/compiler-rt/lib/orc/debug.h:16:10: fatal error: 'atomic' file not found
#include <atomic>
         ^~~~~~~~
1 error generated.
```

Failures happen in all C++ code in compiler-rt because SDKs before MacOSX11.3.sdk didn't include the C++ headers, and for some reason the `-I${LIBCXX_GENERATED_INCLUDE_DIR}` doesn't make it to the flags for those files, while it makes it for C++ code for e.g. libcxxabi. Interestingly, the dependencies are set correctly for the C++ headers to be generated before the C++ code is compiled, only the `-I` flag is missing. Also interestingly, things work properly when doing it all with one cmake invocation using both `LLVM_ENABLE_PROJECTS` and `LLVM_ENABLE_RUNTIMES`.

`-DCMAKE_CXX_FLAGS=-I$PWD/obj2/include/c++/v1` works around the problem.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVVVFzokgQ_jX4MiUlEDA--KAIOW5NTBmzm3uyBmaU2QyMNTMk67_fbhB1b92rOouigO7p_vrrr9tcseP0ZbN2_JiomlBS0YJ8CluSR1qsXt48z_Vcw96J49_T-kheFl-IE8QEvgfElKqRjDCFp6m0XNfUig8uj_hB80p9cGJLThqjHT8VdSEbxuGpcPw5XIQJzQur9JHstKpaV0jg-BMnmDmjhTOaDYkTjYqKvnMyXCyXXx-3ydNsvky2z-vV30m8eXGCRSFpvQdz_Dj7kmznr9lysd3885xs18kymb0kZDgnKv9OpPyoINpV4C5ujNZfDbcyrl-fNtljghkd3y9UdRCS66G2TjCXIi9-_Dg_0FyAyxlSvI1Xj8_ZMlm3Z--ev8E9xaR-mosaCTmV0OaLV09p9vAnV6xiWKh6J9qaT4G3602PM1shxFWa3jZ_m23iv_7bZfP1Ym-p84luaisqbv7In3-2dPcN9FJSYwkQVdGakR0V0nTS4u7ePXcYz3VX-5rVZAe8kpNYWKcMUJ_ruigM4OqKeaBD5EiQBkmljOfN3i0OBwjuBZcM_-NwiUcjvI3gBqAtlYRrrTS-Ov6YWlUJ8B93MGtlyU41NetTBSfgOCUn3yDpjKT_OWHijG9drZvX5SN7XnNNLWfuTaK6ewqsNpobUtLDgddAGwyiJPFpwArFkEpyVTbJeUEb006agZed0vwy7EE77EwwkNrY9l1oJ7OPWXLKuDbtzGNfAapRFYd5pwZWCLoCyGEG6nXG82U2j9_etg_JU7KebZLFNnuKl6-LZLvI1s54AZ6wP7jp0rV6EpZY1YbZSbo3bQJbKkCMjLd5P8tWIt0Bgw_o9EvR-AF1Rs4T6ZKshhXFjRX1vltRmIRx4I3xuhAQiQIXhqNoNW4meTxl_616hJjzS496Iq9dO_JNTz7rdizEvFAE1WOR6FUJYwCYS2bSKCD-N6jwCPOj9Ds5aHXgGgJ9ltBypsCCHGDj2_lSNSfdBhP1hypgJ0NfGoxOcgV2SHtzlQIa7Oi_zOe9F43ca-lhBf2Cgw6ny9kDbo228ee15d_a-_D04WE2rAZJxwFqWYHKcskrd8CmAZsEEzqwwko-nTdCMsR_LWTkuOvulYRQ2aIeWs15bzy1bNBoOS2tPRjcDH4K1x7YanIXgp4Wa79fAcd36D-CN6ZB0aVhGI7vB-U04uE4v7-PdhGLdnd3Ib0vgoh6I-7zwh_7k4GkOZdm6oRzJ1wMxNQf-f4o9CajMJh4d27khd5uPMkpG_lh5EfO3YhXMMUuJnaV3g_0tMUA68iAUQpjzcVIQSX7mvM-Pm1gNvR0D38gTDTVoMU7bcH-BCS-a04">