|
|
@ -69,35 +69,24 @@ A regular build will generate `build/compile_commands.json`, which clangd will |
|
|
|
automatically pick up. However, there are a couple of additional steps to get |
|
|
|
automatically pick up. However, there are a couple of additional steps to get |
|
|
|
everything to play nicely. |
|
|
|
everything to play nicely. |
|
|
|
|
|
|
|
|
|
|
|
First, you will need to download the xtensa clang toolchain. You can do this |
|
|
|
First, create a `.clangd` file in the this directory, with contents like: |
|
|
|
via ESP-IDF by running `idf_tools.py install xtensa-clang` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This will install their prebuild clang into a path like `~/.espressif/tools/xtensa-clang/VERSION/xtensa-esp32-elf-clang/` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Next, you will need to configure clangd to use this version of clang, plus |
|
|
|
|
|
|
|
forcible remove a couple of GCC-specific build flags. Do this by creating |
|
|
|
|
|
|
|
`.clangd` in the root directory of your project, with contents like so: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
``` |
|
|
|
CompileFlags: |
|
|
|
CompileFlags: |
|
|
|
Add: [ |
|
|
|
Add: [ |
|
|
|
-ferror-limit=0, |
|
|
|
-D__XTENSA__, |
|
|
|
-I/Users/YOU/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch5-8.4.0/xtensa-esp32-elf/include, |
|
|
|
--target=mipsel-linux-gnu, |
|
|
|
-I/Users/YOU/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch5-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/include, |
|
|
|
|
|
|
|
-I/Users/YOU/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch5-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/8.4.0, |
|
|
|
|
|
|
|
-I/Users/YOU/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch5-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf/include/c++/8.4.0/xtensa-esp32-elf, |
|
|
|
|
|
|
|
-isysroot=/Users/YOU/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch5-8.4.0/xtensa-esp32-elf/xtensa-esp32-elf, |
|
|
|
|
|
|
|
] |
|
|
|
] |
|
|
|
Remove: [ |
|
|
|
Remove: [ |
|
|
|
-Wduplicated-cond, |
|
|
|
|
|
|
|
-Wduplicated-branches, |
|
|
|
|
|
|
|
-Wlogical-op, |
|
|
|
|
|
|
|
-fno-tree-switch-conversion, |
|
|
|
-fno-tree-switch-conversion, |
|
|
|
-mtext-section-literals, |
|
|
|
|
|
|
|
-mlongcalls, |
|
|
|
-mlongcalls, |
|
|
|
-fstrict-volatile-bitfields, |
|
|
|
-fstrict-volatile-bitfields, |
|
|
|
] |
|
|
|
] |
|
|
|
Compiler: /Users/YOU/.espressif/tools/xtensa-clang/esp-clang/bin/clang++ |
|
|
|
|
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
You may need to tweak the `target` flag until `clangd` is happy to build. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If you get errors involving missing C++ includes, then you may need to edit |
|
|
|
|
|
|
|
your editor's LSP invocation to include `--query-driver=**`. |
|
|
|
|
|
|
|
|
|
|
|
You should then get proper LSP integration via clangd. |
|
|
|
You should then get proper LSP integration via clangd. |
|
|
|