Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

platformio created projects don't quite work in CDT LSP #443

Open
jonahgraham opened this issue Feb 22, 2025 · 7 comments
Open

platformio created projects don't quite work in CDT LSP #443

jonahgraham opened this issue Feb 22, 2025 · 7 comments

Comments

@jonahgraham
Copy link
Member

@joaopedrotaveira provided instructions in #441 on how to setup a platformio project. These projects work in the classic CDT Editor, but run into a few problems for CDT LSP, at least out of the box.

Here are the instructions from #441, slightly modified.

  1. Install platformio as instructed here. Quick version is:
$ curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py
# review what was downloaded
$ python3 get-platformio.py
$ export PATH=$PWD/.platformio/penv/bin:$PATH
  1. create project folder:
$ mkdir -p /tmp/platformio-blink-test-1
  1. Initialize a new project with some board, but specify eclipse as IDE
$ cd /tmp/platformio-blink-test-1
$ platformio project init --board esp32-s3-devkitc-1 --ide eclipse
  1. add basic example of code to src, example blink.cpp:
/**
 * Blink
 * Turns on an LED on for one second,
 * then off for one second, repeatedly.
 */
#include "Arduino.h"

void setup()
{
  // initialize LED digital pin as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_BUILTIN, HIGH);
  // wait for a second
  delay(1000);
  // turn the LED off by making the voltage LOW
  digitalWrite(LED_BUILTIN, LOW);
   // wait for a second
  delay(1000);
}
  1. one can see that eclipse project files are in the folder
$ ls -a
.
..
.cproject
.gitignore
.pio
.project
.settings
include
lib
platformio.ini
src
test
  1. open Eclipse for C/C++ Developers and import the project folder
  2. Build the project
  3. Open blink.cpp in the CDT Editor - observe everything works

screenshot of cdt editor with no warnings nor errors

  1. Click "try the new c/c++ editing experience" and reopen editors in CDT LSP Editor - observe many error and warning markers

screenshot of cdt lsp editor with warnings and errors

@jonahgraham
Copy link
Member Author

First step to resolve is create a compile_commands.json

Fortunately platformio already supports such generation, see docs:

$ platformio -f -c eclipse run --target compiledb 

or even create a build target for it:

build target

Having a compile_commands.json in the root of the project will resolve most of the errors because clangd will now be able to find Arduino.h. However if you open (Ctrl-click) stdio.h it will go to /usr/include/stdio.h instead of the toolchain one, leading to some false info:

improved cdt lsp editor

@jonahgraham
Copy link
Member Author

Second step is to allow clangd to run the compiler to obtain real includes

Find the path to the compiler, in my case it was /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/xtensa-esp32s3-elf-g++, extracted from compile_commands.json and add that path to Preferences -> C/C++ -> Editor (LSP) -> Drivers to give clangd permission to run that program. See query driver in clangd help for more info

Image

This will resolve many of the issues, and stdio.h will be picked up from the expected location now:

clangd finding right stdio

@jonahgraham
Copy link
Member Author

Still some errors?

At this point there are still errors, from what I can tell clangd is still trying to run clang somewhere to pick up some information. Here are the errors that remain:

remaining errors

The warning on stdio.h is legitimate as I only included that line as part of my testing and the warning is Included header stdio.h is not used directly

hal.h not found

This seems to be because clangd is indexing a different branch of the #ifdef in core.h than what CDT's indexer is doing.

The CDT indexer see __XTENSA__ defined:

Image

But the CDT LSP editor is erroring on the "wrong" branch

Image

My best guess is that clangd isn't getting built-in symbols from xtensa-esp32s3-elf-g++ so the __XTENSA__ isn't getting defined. I am pretty sure this is clangd/clangd#533

drv_unknown_argument errors

The error marker at line 1 covers the other three errors which are of the form:

Unknown argument: '-fno-tree-switch-conversion' [drv_unknown_argument]

These errors are happening because somewhere clangd is processing the command line specified in compile_commands.json with clang instead of (or really in addition to) g++. -fno-tree-switch-conversion is a gcc option, but not a clang option, hence the error.

This issue is part of clangd too clangd/clangd#662

@jonahgraham
Copy link
Member Author

jonahgraham commented Feb 22, 2025

Here is the clangd log for simply opening the editor

log
I[12:39:03.814] clangd version 19.1.2 (https://github.com/llvm/llvm-project 7ba7d8e2f7b6445b60679da826210cdde29eaf8b)
I[12:39:03.814] Features: linux+grpc
I[12:39:03.814] PID: 141544
I[12:39:03.814] Working directory: /scratch/eclipse
I[12:39:03.814] argv[0]: clangd
I[12:39:03.814] argv[1]: --clang-tidy
I[12:39:03.814] argv[2]: --background-index
I[12:39:03.814] argv[3]: --completion-style=detailed
I[12:39:03.814] argv[4]: --pretty
I[12:39:03.814] argv[5]: --query-driver=/home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/xtensa-esp32s3-elf-g++
I[12:39:03.814] argv[6]: --function-arg-placeholders=true
I[12:39:03.814] Starting LSP over stdin/stdout
I[12:39:03.815] <-- initialize("1")
I[12:39:03.815] --> reply:initialize("1") 0 ms
I[12:39:03.816] <-- initialized
I[12:39:03.816] <-- textDocument/didOpen
I[12:39:03.817] <-- textDocument/inlayHint("2")
I[12:39:03.819] Loaded compilation database from /tmp/platformio-blink-test-1/compile_commands.json
I[12:39:03.819] --> window/workDoneProgress/create(0)
I[12:39:03.819] Enqueueing 1 commands for indexing
I[12:39:03.819] <-- reply(0)
I[12:39:03.819] --> $/progress
I[12:39:03.819] --> $/progress
E[12:39:03.824] System include extraction: invalid target "xtensa-esp32s3-elf", ignoring
I[12:39:03.825] System includes extractor: successfully executed /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/xtensa-esp32s3-elf-g++
	got includes: "/home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/include/c++/8.4.0, /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/include/c++/8.4.0/xtensa-esp32s3-elf, /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/include/c++/8.4.0/backward, /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/include-fixed, /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/sys-include, /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/include"
	got target: ""
I[12:39:03.826] ASTWorker building file /tmp/platformio-blink-test-1/src/blink.cpp version 1 with command 
[/tmp/platformio-blink-test-1]
/home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/xtensa-esp32s3-elf-g++ --driver-mode=g++ -o .pio/build/esp32-s3-devkitc-1/src/blink.cpp.o -c -std=gnu++11 -fexceptions -fno-rtti -Os -mlongcalls -ffunction-sections -fdata-sections -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -ggdb -freorder-blocks -Wwrite-strings -fstack-protector -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -MMD -DPLATFORMIO=60117 -DARDUINO_ESP32S3_DEV -DARDUINO_USB_MODE=1 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DHAVE_CONFIG_H "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DUNITY_INCLUDE_CONFIG_H -DWITH_POSIX -D_GNU_SOURCE "-DIDF_VER=\"v4.4.7-dirty\"" -DESP_PLATFORM -D_POSIX_READER_WRITER_LOCKS -DARDUINO_ARCH_ESP32 -DESP32 -DF_CPU=240000000L -DARDUINO=10812 "-DARDUINO_VARIANT=\"esp32s3\"" "-DARDUINO_BOARD=\"Espressif ESP32-S3-DevKitC-1-N8 (8 MB QD, No PSRAM)\"" -DARDUINO_PARTITION_default -Iinclude -Isrc -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/newlib/platform_include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/freertos/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/freertos/include/esp_additions/freertos -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/freertos/port/xtensa/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/freertos/include/esp_additions -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_hw_support/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_hw_support/include/soc -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_hw_support/include/soc/esp32s3 -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_hw_support/port/esp32s3 -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_hw_support/port/esp32s3/private_include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/heap/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/log/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/lwip/include/apps -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/lwip/include/apps/sntp -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/lwip/lwip/src/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/lwip/port/esp32/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/lwip/port/esp32/include/arch -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/soc/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/soc/esp32s3 -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/soc/esp32s3/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/hal/esp32s3/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/hal/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/hal/platform_port/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_rom/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_rom/include/esp32s3 -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_rom/esp32s3 -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_common/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_system/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_system/port/soc -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_system/port/public_compat -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/xtensa/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/xtensa/esp32s3/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/driver/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/driver/esp32s3/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_pm/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_ringbuf/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/efuse/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/efuse/esp32s3/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/vfs/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_wifi/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_event/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_netif/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_eth/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/tcpip_adapter/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_phy/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_phy/esp32s3/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_ipc/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/app_trace/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_timer/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/mbedtls/port/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/mbedtls/mbedtls/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/mbedtls/esp_crt_bundle/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/app_update/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/spi_flash/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bootloader_support/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/nvs_flash/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/pthread/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_gdbstub/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_gdbstub/xtensa -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_gdbstub/esp32s3 -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espcoredump/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espcoredump/include/port/xtensa -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/wpa_supplicant/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/wpa_supplicant/port/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/wpa_supplicant/esp_supplicant/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/ieee802154/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/console -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/asio/asio/asio/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/asio/port/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/common/osi/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/include/esp32c3/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/common/api/include/api -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/common/btc/profile/esp/blufi/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/common/btc/profile/esp/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/host/bluedroid/api/include/api -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/mesh_common/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/mesh_common/tinycrypt/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/mesh_core -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/mesh_core/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/mesh_core/storage -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/btc/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/mesh_models/common/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/mesh_models/client/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/mesh_models/server/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/api/core/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/api/models/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/bt/esp_ble_mesh/api -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/cbor/port/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/unity/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/unity/unity/src -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/cmock/CMock/src -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/coap/port/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/coap/libcoap/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/nghttp/port/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/nghttp/nghttp2/lib/includes -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-tls -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-tls/esp-tls-crypto -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_adc_cal/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_hid/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/tcp_transport/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_http_client/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_http_server/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_https_ota/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_https_server/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_lcd/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_lcd/interface -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/protobuf-c/protobuf-c -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/protocomm/include/common -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/protocomm/include/security -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/protocomm/include/transports -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/mdns/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_local_ctrl/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/sdmmc/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_serial_slave_link/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_websocket_client/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/expat/expat/expat/lib -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/expat/port/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/wear_levelling/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/fatfs/diskio -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/fatfs/vfs -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/fatfs/src -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/freemodbus/freemodbus/common/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/idf_test/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/idf_test/include/esp32s3 -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/jsmn/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/json/cJSON -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/libsodium/libsodium/src/libsodium/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/libsodium/port_include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/mqtt/esp-mqtt/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/openssl/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/perfmon/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/spiffs/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/usb/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/ulp/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/wifi_provisioning/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/rmaker_common/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_diagnostics/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/rtc_store/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_insights/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/json_parser/upstream/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/json_parser/upstream -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/json_generator/upstream -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_schedule/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp_secure_cert_mgr/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_rainmaker/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/gpio_button/button/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/qrcode/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/ws2812_led -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/freertos/include/freertos -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/arduino_tinyusb/tinyusb/src -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/arduino_tinyusb/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp_littlefs/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-dl/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-dl/include/tool -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-dl/include/typedef -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-dl/include/image -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-dl/include/math -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-dl/include/nn -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-dl/include/layer -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-dl/include/detect -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp-dl/include/model_zoo -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp32-camera/driver/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/esp32-camera/conversions/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/dotprod/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/support/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/support/mem/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/windows/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/windows/hann/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/windows/blackman/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/windows/blackman_harris/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/windows/blackman_nuttall/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/windows/nuttall/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/windows/flat_top/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/iir/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/fir/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/math/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/math/add/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/math/sub/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/math/mul/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/math/addc/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/math/mulc/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/math/sqrt/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/matrix/mul/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/matrix/add/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/matrix/addc/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/matrix/mulc/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/matrix/sub/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/matrix/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/fft/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/dct/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/conv/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/common/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/matrix/mul/test/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/kalman/ekf/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/espressif__esp-dsp/modules/kalman/ekf_imu13states/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/include/fb_gfx/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32s3/qio_qspi/include -I/home/jonah/.platformio/packages/framework-arduinoespressif32/cores/esp32 -I/home/jonah/.platformio/packages/framework-arduinoespressif32/variants/esp32s3 -D__XTENSA__ -isystem /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/include/c++/8.4.0 -isystem /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/include/c++/8.4.0/xtensa-esp32s3-elf -isystem /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/include/c++/8.4.0/backward -isystem /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/include-fixed -isystem /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/sys-include -isystem /home/jonah/.platformio/packages/toolchain-xtensa-esp32s3/bin/../lib/gcc/xtensa-esp32s3-elf/8.4.0/../../../../xtensa-esp32s3-elf/include -resource-dir=/scratch/clangd/clangd_19.1.2/lib/clang/19 -- /tmp/platformio-blink-test-1/src/blink.cpp
I[12:39:03.831] <-- textDocument/documentSymbol("3")
I[12:39:03.881] --> $/progress
I[12:39:03.881] --> $/progress
I[12:39:04.144] Built preamble of size 5711320 for file /tmp/platformio-blink-test-1/src/blink.cpp version 1 in 0.31 seconds
I[12:39:04.145] Indexing c++11 standard library in the context of /tmp/platformio-blink-test-1/src/blink.cpp
I[12:39:04.172] --> textDocument/publishDiagnostics
I[12:39:04.173] --> reply:textDocument/inlayHint("2") 355 ms
I[12:39:04.173] --> reply:textDocument/documentSymbol("3") 341 ms
I[12:39:04.285] <-- textDocument/documentLink("4")
I[12:39:04.285] <-- textDocument/semanticTokens/full("5")
I[12:39:04.285] --> reply:textDocument/documentLink("4") 0 ms
I[12:39:04.285] --> reply:textDocument/semanticTokens/full("5") 0 ms
I[12:39:04.285] <-- textDocument/foldingRange("6")
I[12:39:04.286] --> reply:textDocument/foldingRange("6") 0 ms
I[12:39:04.290] <-- textDocument/documentHighlight("7")
I[12:39:04.290] --> reply:textDocument/documentHighlight("7") 0 ms
I[12:39:04.331] <-- textDocument/documentSymbol("8")
I[12:39:04.331] --> reply:textDocument/documentSymbol("8") 0 ms
I[12:39:05.166] Indexed c++11 standard library (incomplete due to errors): 11100 symbols, 1728 filtered

@jonahgraham
Copy link
Member Author

What to do?

I think CDT is in a unique position to handle some of this - we already have a good scanner that picks up compiler built-in defines and includes. Using that to generate a compiler_commands.json that doesn't require clangd to run the driver at all may be a solution. This aligns well with the discussion about Sonar at the last monthly call and how they also would like a compile_commands.json.

xref eclipse-cdt/cdt#996 (reply in thread)

@joaopedrotaveira
Copy link

Hi

Following the instructions of generating the compile_commands.json and by including driver to avr-g++, the simple blink example works pretty well if platformio board family is an AVR board.

Image

I think you would like to know.

@joaopedrotaveira
Copy link

Hi,

The simple blink example also works with arm-none-eabi-g++ toolchain, like for new Arduino UNO Wifi R4.

Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants