Linking issue after compilation ESP32

matt001k
Posts: 11
Joined: Thu Sep 03, 2020 2:42 am

Linking issue after compilation ESP32

Postby matt001k » Thu Jun 10, 2021 3:17 am

Hi all,
I'm having an issue while linking my executable I'm the esp-idf. I'm getting a lot of "undefined reference to" functions in the output failing the build. This made me believe that there is an issue with missing source files included in the build but this is not the case, I have the associated object files needed for linking in my build directory. The following is a brief overview of my build setup:

Code: Select all

- drivers
    - needed src/libs
    - CMakeLists.txt
- interface
    - needed src/libs
    - CMakeLists.txt
- main
    - needed src/libs
    - CMakeLists.txt
- lib
    - needed src/libs
    - CMakeLists.txt
- platform
    - needed src/libs
    - CMakeLists.txt 
- CMakeLists.txt 
I'm registering these components in using idf_component_register and many of these libraries depend on one another.
For example the LM75 driver depends on the I2C interface and the temperature interface depends on the LM75 driver. Now some components from drivers are required in interface and visa versa.
I'm thinking that because under registered components:
PRIV_REQUIRES: interface(for drivers)
PRIV_REQUIRES: drivers(for interface)
There is a dual dependency happening and the linker is not able to determine the order of operation needed to link these files.
I've come across this error before in CMake environments but have always found work around, with the ESP-IDF there is a lot of abstraction within the CMake files and does not allow a lot of manipulation.
I'm just curious if anyone else has had this issue and what they did to fix this

Angus
Espressif staff
Espressif staff
Posts: 2344
Joined: Sun May 08, 2016 4:11 am

Re: Linking issue after compilation ESP32

Postby Angus » Thu Jun 10, 2021 3:42 am

Hi matt001k,

If you're sure all the components are being included in the build (can check the list that is output in the CMake run output), and the problem is due to cyclic dependencies in the components, then there are three possible fixes:
  • Set this CMake property in a component that's part of the cycle. This line can be placed anywhere under the idf_component_register line:

    Code: Select all

    set_property(TARGET ${COMPONENT_LIB} APPEND PROPERTY LINK_INTERFACE_MULTIPLICITY 3)
    . This is something of a heavy solution as it causes all components in the linker cycle to be repeated 3 times instead of 2, to make sure all parts of the cycle are resolved. There may be circumstances where you need to increase the number furhter.
  • If you only have a few symbols (functions or variables) that have a "reverse" dependency and it is a pure link-time dependency (ie the header dependency at compile time is one way only), then *instead* you can mark these as "undefined" on the linker command line and remove the reverse "REQUIRES" so it's one way. Adding an undefined symbol ensures that it always get included into the link, even if the linker hasn't processed the thing that relies on it yet. You can do this by adding a line like:

    Code: Select all

    target_link_libraries(${COMPONENT_LIB} INTERFACE "-u symbol_in_this_component_that_is_always_required")
    . This is less heavy-handed than LINK_INTERFACE_MULTIPLICITY and linking will be faster. However, as mentioned, it only works if the dependency cycle doesn't also exist at compile time and you can remove one of the "REQUIRES" directions.
  • Combine the components which have a dependency cycle. This may seem silly, but it's still possible to have modular code without absolutely everything being a component. If two things are very tightly coupled then it may make sense for them to be in the same component.
This is a common question when folks are scaling up to more involved project structures, so we'll add some advice to the Build System page in the docs.

matt001k
Posts: 11
Joined: Thu Sep 03, 2020 2:42 am

Re: Linking issue after compilation ESP32

Postby matt001k » Thu Jun 10, 2021 10:34 am

Thank you so much for the information ESP_Angus. I will try it out today, I attempted the MULTIPLICITY directive, but was not sure how to name the set component, but it makes sense now. Will there be a way in the future to bring some of that abstraction away from CMake and allow for better transparency in large projects? My company uses Espressif products heavily and this would be greatly beneficial to have.

Angus
Espressif staff
Espressif staff
Posts: 2344
Joined: Sun May 08, 2016 4:11 am

Re: Linking issue after compilation ESP32

Postby Angus » Fri Jun 11, 2021 12:04 am

Will there be a way in the future to bring some of that abstraction away from CMake and allow for better transparency in large projects? My company uses Espressif products heavily and this would be greatly beneficial to have.
Hi Matt,

What kind of support do you have in mind? If there's particular tasks you'd wish had easier or clearer solutions ("How do I ..."), please let us know and we'll try to improve them.

Something we want to make it easier to do is detect cyclic dependencies between components (A depends on B depends on C depends on A). This is something we also do inside ESP-IDF as we can clean up its internal architecture. However, once a cyclic dependency is identified the fix will probably be one of things mentioned above (or re-architecting the software to remove the cycle). CMake doesn't have any additional magic for handling cyclic dependencies between libraries and neither does the GNU linker.

(There are the linker options --start-group/--end-group option which we used in the old GNU Make build system but this leads to slow links, encourages "big ball of mud" architectures where everything depends on everything else, and isn't well supported in CMake anyhow - so for these reasons it probably won't be coming back).

Angus

matt001k
Posts: 11
Joined: Thu Sep 03, 2020 2:42 am

Re: Linking issue after compilation ESP32

Postby matt001k » Sat Jun 12, 2021 12:44 am

Hi Angus!
Thanks again for the response, the fix for cyclic dependencies worked our well.
I was just curious if there will ever be a more "bare" option in which building will not be as reliant on the IDF? I guess it is possible to build with gcc's Extensa compiler, and maybe that question is not that important :) .
I did have another question about low level register manipulation for led pwm library. I can open another thread on that if that works best or ask on here?

ailika
Posts: 3
Joined: Fri Jan 03, 2025 1:55 am

Re: Linking issue after compilation ESP32

Postby ailika » Fri Jan 10, 2025 3:48 am

I just started using ESP32 system. I have 2 components:board and auido which are dependent on each other.so I want to use the LINK_INTERFACE_MULTIPLICITY methed:

About "set_property(TARGET ${COMPONENT_LIB} APPEND PROPERTY LINK_INTERFACE_MULTIPLICITY 3)",
Specificly, for my component(audio and board), how do I use this?
I have written like this:
set(COMPONENT_LIB board audio)
set_property(TARGET ${COMPONENT_LIB} APPEND PROPERTY LINK_INTERFACE_MULTIPLICITY 3)

but it didn't work. So What should I write exactly?

chrisc
Posts: 1
Joined: Fri Mar 27, 2026 1:47 pm

Re: Linking issue after compilation ESP32

Postby chrisc » Fri Mar 27, 2026 2:01 pm

Sorry I am beginner with ESP32 , I have some few years expierience with microchip mplab X also based on java and eclipse.

I am very dissapointed about the workflow.

Why Espressif IDE is linking and building tausend of files whereas 98% of them are not used in the project? :?:

1047 file shas been processed, it took like 3 or 5 minutes to process them and get error messeage! Man we have XXI centruy and wasting of time is wasting of money.

Please look bellow:

Code: Select all

[1036/1047] C:\WINDOWS\system32\cmd.exe /C "cd . && C:\Espressif\tools\cmake\4.0.3\bin\cmake.exe -E rm -f esp-idf\spiffs\libspiffs.a && C:\Espressif\tools\xtensa-esp-elf\esp-15.2.0_20251204\xtensa-esp-elf\bin\xtensa-esp32s3-elf-ar.exe qc esp-idf\spiffs\libspiffs.a  esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs_api.c.obj esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs/src/spiffs_cache.c.obj esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs/src/spiffs_check.c.obj esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs/src/spiffs_gc.c.obj esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs/src/spiffs_hydrogen.c.obj esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/spiffs/src/spiffs_nucleus.c.obj esp-idf/spiffs/CMakeFiles/__idf_spiffs.dir/esp_spiffs.c.obj && C:\Espressif\tools\xtensa-esp-elf\esp-15.2.0_20251204\xtensa-esp-elf\bin\xtensa-esp32s3-elf-ranlib.exe esp-idf\spiffs\libspiffs.a && cd ."
[1037/1047] C:\Espressif\tools\xtensa-esp-elf\esp-15.2.0_20251204\xtensa-esp-elf\bin\xtensa-esp32s3-elf-gcc.exe -DESP_PLATFORM -DESP_PSA_ITS_AVAILABLE -DIDF_VER=\"v6.0\" -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -DMBEDTLS_MAJOR_VERSION=4 -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -DTF_PSA_CRYPTO_USER_CONFIG_FILE=\"mbedtls/esp_config.h\" -DUNITY_INCLUDE_CONFIG_H -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/ESP_Workspace/quadBLE/build/config -IC:/esp/v6.0/esp-idf/components/esp_libc/platform_include -IC:/esp/v6.0/esp-idf/components/freertos/config/include -IC:/esp/v6.0/esp-idf/components/freertos/config/include/freertos -IC:/esp/v6.0/esp-idf/components/freertos/config/xtensa/include -IC:/esp/v6.0/esp-idf/components/freertos/FreeRTOS-Kernel/include -IC:/esp/v6.0/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -IC:/esp/v6.0/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -IC:/esp/v6.0/esp-idf/components/freertos/esp_additions/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/include/soc -IC:/esp/v6.0/esp-idf/components/esp_hw_support/ldo/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/debug_probe/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/etm/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/mspi_timing_tuning/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/power_supply/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/modem/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/include/soc/esp32s3 -IC:/esp/v6.0/esp-idf/components/esp_hw_support/port/esp32s3/. -IC:/esp/v6.0/esp-idf/components/esp_hw_support/port/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/mspi_timing_tuning/port/esp32s3/. -IC:/esp/v6.0/esp-idf/components/esp_hw_support/mspi_timing_tuning/port/esp32s3/include -IC:/esp/v6.0/esp-idf/components/heap/include -IC:/esp/v6.0/esp-idf/components/heap/tlsf -IC:/esp/v6.0/esp-idf/components/log/include -IC:/esp/v6.0/esp-idf/components/soc/include -IC:/esp/v6.0/esp-idf/components/soc/esp32s3 -IC:/esp/v6.0/esp-idf/components/soc/esp32s3/include -IC:/esp/v6.0/esp-idf/components/soc/esp32s3/register -IC:/esp/v6.0/esp-idf/components/hal/platform_port/include -IC:/esp/v6.0/esp-idf/components/hal/esp32s3/include -IC:/esp/v6.0/esp-idf/components/hal/include -IC:/esp/v6.0/esp-idf/components/esp_rom/include -IC:/esp/v6.0/esp-idf/components/esp_rom/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_rom/esp32s3/include/esp32s3 -IC:/esp/v6.0/esp-idf/components/esp_rom/esp32s3 -IC:/esp/v6.0/esp-idf/components/esp_common/include -IC:/esp/v6.0/esp-idf/components/esp_system/include -IC:/esp/v6.0/esp-idf/components/esp_system/port/soc -IC:/esp/v6.0/esp-idf/components/esp_system/port/include/private -IC:/esp/v6.0/esp-idf/components/esp_stdio/include -IC:/esp/v6.0/esp-idf/components/xtensa/esp32s3/include -IC:/esp/v6.0/esp-idf/components/xtensa/include -IC:/esp/v6.0/esp-idf/components/xtensa/deprecated_include -IC:/esp/v6.0/esp-idf/components/esp_hal_gpio/include -IC:/esp/v6.0/esp-idf/components/esp_hal_gpio/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_usb/include -IC:/esp/v6.0/esp-idf/components/esp_hal_usb/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_pmu/include -IC:/esp/v6.0/esp-idf/components/esp_hal_pmu/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ana_conv/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ana_conv/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_dma/include -IC:/esp/v6.0/esp-idf/components/esp_hal_dma/esp32s3/include -IC:/esp/v6.0/esp-idf/components/lwip/include -IC:/esp/v6.0/esp-idf/components/lwip/include/apps -IC:/esp/v6.0/esp-idf/components/lwip/lwip/src/include -IC:/esp/v6.0/esp-idf/components/lwip/port/include -IC:/esp/v6.0/esp-idf/components/lwip/port/freertos/include -IC:/esp/v6.0/esp-idf/components/lwip/port/esp32xx/include -IC:/esp/v6.0/esp-idf/components/lwip/port/esp32xx/include/arch -IC:/esp/v6.0/esp-idf/components/lwip/port/esp32xx/include/sys -IC:/esp/v6.0/esp-idf/components/esp_hal_gpspi/include -IC:/esp/v6.0/esp-idf/components/esp_hal_gpspi/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_clock/include -IC:/esp/v6.0/esp-idf/components/esp_hal_clock/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_mspi/include -IC:/esp/v6.0/esp-idf/components/esp_hal_mspi/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_blockdev/include -IC:/esp/v6.0/esp-idf/components/esp_hal_security/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_security/include -IC:/esp/v6.0/esp-idf/components/esp_app_format/include -IC:/esp/v6.0/esp-idf/components/esp_bootloader_format/include -IC:/esp/v6.0/esp-idf/components/app_update/include -IC:/esp/v6.0/esp-idf/components/bootloader_support/include -IC:/esp/v6.0/esp-idf/components/bootloader_support/bootloader_flash/include -IC:/esp/v6.0/esp-idf/components/esp_partition/include -IC:/esp/v6.0/esp-idf/components/efuse/include -IC:/esp/v6.0/esp-idf/components/efuse/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_security/include -IC:/esp/v6.0/esp-idf/components/esp_driver_gpio/include -IC:/esp/v6.0/esp-idf/components/esp_hal_uart/include -IC:/esp/v6.0/esp-idf/components/esp_hal_uart/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_pm/include -IC:/esp/v6.0/esp-idf/components/esp_mm/include -IC:/esp/v6.0/esp-idf/components/esp_driver_dma/include -IC:/esp/v6.0/esp-idf/components/mbedtls/port/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/library -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/core -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/drivers/builtin/src -IC:/esp/v6.0/esp-idf/components/mbedtls/esp_crt_bundle/include -IC:/esp/v6.0/esp-idf/components/mbedtls/port/psa_driver/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/drivers/builtin/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/drivers/everest/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/drivers/p256-m -IC:/esp/v6.0/esp-idf/components/esp_hal_timg/include -IC:/esp/v6.0/esp-idf/components/esp_hal_timg/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_wdt/include -IC:/esp/v6.0/esp-idf/components/esp_hal_wdt/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_rtc_timer/include -IC:/esp/v6.0/esp-idf/components/esp_hal_rtc_timer/esp32s3/include -IC:/esp/v6.0/esp-idf/components/spi_flash/include -IC:/esp/v6.0/esp-idf/components/esp_usb_cdc_rom_console/include -IC:/esp/v6.0/esp-idf/components/esp_hal_touch_sens/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_touch_sens/include -IC:/esp/v6.0/esp-idf/components/esp_hal_i2s/include -IC:/esp/v6.0/esp-idf/components/esp_hal_i2s/esp32s3/include -IC:/esp/v6.0/esp-idf/components/pthread/include -IC:/esp/v6.0/esp-idf/components/esp_timer/include -IC:/esp/v6.0/esp-idf/components/esp_ringbuf/include -IC:/esp/v6.0/esp-idf/components/esp_psram/include -IC:/esp/v6.0/esp-idf/components/esp_psram/xip_impl/include -IC:/esp/v6.0/esp-idf/components/esp_driver_uart/include -IC:/esp/v6.0/esp-idf/components/vfs/include -IC:/esp/v6.0/esp-idf/components/esp_driver_gptimer/include -IC:/esp/v6.0/esp-idf/components/app_trace/include -IC:/esp/v6.0/esp-idf/components/esp_event/include -IC:/esp/v6.0/esp-idf/components/nvs_sec_provider/include -IC:/esp/v6.0/esp-idf/components/nvs_flash/include -IC:/esp/v6.0/esp-idf/components/esp_phy/include -IC:/esp/v6.0/esp-idf/components/esp_phy/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_usb_serial_jtag/include -IC:/esp/v6.0/esp-idf/components/esp_netif/include -IC:/esp/v6.0/esp-idf/components/wpa_supplicant/include -IC:/esp/v6.0/esp-idf/components/wpa_supplicant/port/include -IC:/esp/v6.0/esp-idf/components/wpa_supplicant/esp_supplicant/include -IC:/esp/v6.0/esp-idf/components/esp_coex/include -IC:/esp/v6.0/esp-idf/components/esp_wifi/include -IC:/esp/v6.0/esp-idf/components/esp_wifi/include/local -IC:/esp/v6.0/esp-idf/components/esp_wifi/wifi_apps/include -IC:/esp/v6.0/esp-idf/components/esp_wifi/wifi_apps/nan_app/include -IC:/esp/v6.0/esp-idf/components/esp_driver_spi/include -IC:/esp/v6.0/esp-idf/components/esp_gdbstub/include -IC:/esp/v6.0/esp-idf/components/unity/include -IC:/esp/v6.0/esp-idf/components/unity/unity/src -IC:/esp/v6.0/esp-idf/components/cmock/CMock/src -IC:/esp/v6.0/esp-idf/components/console -IC:/esp/v6.0/esp-idf/components/esp_hal_i2c/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_i2c/include -IC:/esp/v6.0/esp-idf/components/esp_hal_twai/include -IC:/esp/v6.0/esp-idf/components/esp_hal_twai/esp32s3/include -IC:/esp/v6.0/esp-idf/components/driver/i2c/include -IC:/esp/v6.0/esp-idf/components/driver/touch_sensor/include -IC:/esp/v6.0/esp-idf/components/driver/twai/include -IC:/esp/v6.0/esp-idf/components/driver/touch_sensor/esp32s3/include -IC:/esp/v6.0/esp-idf/components/http_parser -IC:/esp/v6.0/esp-idf/components/esp-tls -IC:/esp/v6.0/esp-idf/components/esp-tls/esp-tls-crypto -IC:/esp/v6.0/esp-idf/components/esp_adc/include -IC:/esp/v6.0/esp-idf/components/esp_adc/interface -IC:/esp/v6.0/esp-idf/components/esp_adc/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ana_cmpr/include -IC:/esp/v6.0/esp-idf/components/esp_driver_ana_cmpr/include -IC:/esp/v6.0/esp-idf/components/esp_driver_bitscrambler/include -IC:/esp/v6.0/esp-idf/components/esp_hal_cam/include -IC:/esp/v6.0/esp-idf/components/esp_hal_cam/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_isp/include -IC:/esp/v6.0/esp-idf/components/esp_driver_cam/include -IC:/esp/v6.0/esp-idf/components/esp_driver_cam/interface -IC:/esp/v6.0/esp-idf/components/esp_driver_cam/dvp/include -IC:/esp/v6.0/esp-idf/components/esp_driver_dac/include -IC:/esp/v6.0/esp-idf/components/esp_driver_i2c/include -IC:/esp/v6.0/esp-idf/components/esp_driver_i2s/include -IC:/esp/v6.0/esp-idf/components/esp_driver_i3c/include -IC:/esp/v6.0/esp-idf/components/esp_hal_jpeg/include -IC:/esp/v6.0/esp-idf/components/esp_driver_jpeg/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ledc/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ledc/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_ledc/include -IC:/esp/v6.0/esp-idf/components/esp_hal_mcpwm/include -IC:/esp/v6.0/esp-idf/components/esp_hal_mcpwm/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_mcpwm/include -IC:/esp/v6.0/esp-idf/components/esp_hal_parlio/include -IC:/esp/v6.0/esp-idf/components/esp_driver_parlio/include -IC:/esp/v6.0/esp-idf/components/esp_hal_pcnt/include -IC:/esp/v6.0/esp-idf/components/esp_hal_pcnt/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_pcnt/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ppa/include -IC:/esp/v6.0/esp-idf/components/esp_driver_ppa/include -IC:/esp/v6.0/esp-idf/components/esp_hal_rmt/include -IC:/esp/v6.0/esp-idf/components/esp_hal_rmt/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_rmt/include -IC:/esp/v6.0/esp-idf/components/sdmmc/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sd_intf/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sdio/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sdm/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sdmmc/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sdmmc/legacy/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sdspi/include -IC:/esp/v6.0/esp-idf/components/esp_driver_touch_sens/include -IC:/esp/v6.0/esp-idf/components/esp_driver_touch_sens/hw_ver2/include -IC:/esp/v6.0/esp-idf/components/esp_driver_tsens/include -IC:/esp/v6.0/esp-idf/components/esp_driver_twai/include -IC:/esp/v6.0/esp-idf/components/esp_eth/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ieee802154/include -IC:/esp/v6.0/esp-idf/components/esp_hal_lcd/include -IC:/esp/v6.0/esp-idf/components/esp_hal_lcd/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hid/include -IC:/esp/v6.0/esp-idf/components/tcp_transport/include -IC:/esp/v6.0/esp-idf/components/esp_http_client/include -IC:/esp/v6.0/esp-idf/components/esp_http_server/include -IC:/esp/v6.0/esp-idf/components/esp_https_ota/include -IC:/esp/v6.0/esp-idf/components/esp_https_server/include -IC:/esp/v6.0/esp-idf/components/esp_lcd/include -IC:/esp/v6.0/esp-idf/components/esp_lcd/interface -IC:/esp/v6.0/esp-idf/components/esp_lcd/rgb/include -IC:/esp/v6.0/esp-idf/components/protobuf-c/protobuf-c -IC:/esp/v6.0/esp-idf/components/protocomm/include/common -IC:/esp/v6.0/esp-idf/components/protocomm/include/security -IC:/esp/v6.0/esp-idf/components/protocomm/include/transports -IC:/esp/v6.0/esp-idf/components/protocomm/include/crypto/srp6a -IC:/esp/v6.0/esp-idf/components/protocomm/proto-c -IC:/esp/v6.0/esp-idf/components/esp_local_ctrl/include -IC:/esp/v6.0/esp-idf/components/esp_trace/include -IC:/esp/v6.0/esp-idf/components/wear_levelling/include -IC:/esp/v6.0/esp-idf/components/fatfs/diskio -IC:/esp/v6.0/esp-idf/components/fatfs/src -IC:/esp/v6.0/esp-idf/components/fatfs/vfs -IC:/esp/v6.0/esp-idf/components/idf_test/include -IC:/esp/v6.0/esp-idf/components/idf_test/include/esp32s3 -IC:/esp/v6.0/esp-idf/components/ieee802154/include -IC:/esp/v6.0/esp-idf/components/perfmon/include -IC:/esp/v6.0/esp-idf/components/rt/include -IC:/esp/v6.0/esp-idf/components/spiffs/include @"C:/ESP_Workspace/quadBLE/build/toolchain/cflags" -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/ESP_Workspace/quadBLE=. -fmacro-prefix-map=C:/esp/v6.0/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu23 -Wno-old-style-declaration -fzero-init-padding-bits=all -fno-malloc-dce -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj -MF esp-idf\main\CMakeFiles\__idf_main.dir\main.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj -c C:/ESP_Workspace/quadBLE/main/main.c
FAILED: esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj 
C:\Espressif\tools\xtensa-esp-elf\esp-15.2.0_20251204\xtensa-esp-elf\bin\xtensa-esp32s3-elf-gcc.exe -DESP_PLATFORM -DESP_PSA_ITS_AVAILABLE -DIDF_VER=\"v6.0\" -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -DMBEDTLS_MAJOR_VERSION=4 -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -DTF_PSA_CRYPTO_USER_CONFIG_FILE=\"mbedtls/esp_config.h\" -DUNITY_INCLUDE_CONFIG_H -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -IC:/ESP_Workspace/quadBLE/build/config -IC:/esp/v6.0/esp-idf/components/esp_libc/platform_include -IC:/esp/v6.0/esp-idf/components/freertos/config/include -IC:/esp/v6.0/esp-idf/components/freertos/config/include/freertos -IC:/esp/v6.0/esp-idf/components/freertos/config/xtensa/include -IC:/esp/v6.0/esp-idf/components/freertos/FreeRTOS-Kernel/include -IC:/esp/v6.0/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -IC:/esp/v6.0/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -IC:/esp/v6.0/esp-idf/components/freertos/esp_additions/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/include/soc -IC:/esp/v6.0/esp-idf/components/esp_hw_support/ldo/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/debug_probe/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/etm/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/mspi_timing_tuning/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/power_supply/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/modem/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/include/soc/esp32s3 -IC:/esp/v6.0/esp-idf/components/esp_hw_support/port/esp32s3/. -IC:/esp/v6.0/esp-idf/components/esp_hw_support/port/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hw_support/mspi_timing_tuning/port/esp32s3/. -IC:/esp/v6.0/esp-idf/components/esp_hw_support/mspi_timing_tuning/port/esp32s3/include -IC:/esp/v6.0/esp-idf/components/heap/include -IC:/esp/v6.0/esp-idf/components/heap/tlsf -IC:/esp/v6.0/esp-idf/components/log/include -IC:/esp/v6.0/esp-idf/components/soc/include -IC:/esp/v6.0/esp-idf/components/soc/esp32s3 -IC:/esp/v6.0/esp-idf/components/soc/esp32s3/include -IC:/esp/v6.0/esp-idf/components/soc/esp32s3/register -IC:/esp/v6.0/esp-idf/components/hal/platform_port/include -IC:/esp/v6.0/esp-idf/components/hal/esp32s3/include -IC:/esp/v6.0/esp-idf/components/hal/include -IC:/esp/v6.0/esp-idf/components/esp_rom/include -IC:/esp/v6.0/esp-idf/components/esp_rom/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_rom/esp32s3/include/esp32s3 -IC:/esp/v6.0/esp-idf/components/esp_rom/esp32s3 -IC:/esp/v6.0/esp-idf/components/esp_common/include -IC:/esp/v6.0/esp-idf/components/esp_system/include -IC:/esp/v6.0/esp-idf/components/esp_system/port/soc -IC:/esp/v6.0/esp-idf/components/esp_system/port/include/private -IC:/esp/v6.0/esp-idf/components/esp_stdio/include -IC:/esp/v6.0/esp-idf/components/xtensa/esp32s3/include -IC:/esp/v6.0/esp-idf/components/xtensa/include -IC:/esp/v6.0/esp-idf/components/xtensa/deprecated_include -IC:/esp/v6.0/esp-idf/components/esp_hal_gpio/include -IC:/esp/v6.0/esp-idf/components/esp_hal_gpio/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_usb/include -IC:/esp/v6.0/esp-idf/components/esp_hal_usb/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_pmu/include -IC:/esp/v6.0/esp-idf/components/esp_hal_pmu/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ana_conv/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ana_conv/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_dma/include -IC:/esp/v6.0/esp-idf/components/esp_hal_dma/esp32s3/include -IC:/esp/v6.0/esp-idf/components/lwip/include -IC:/esp/v6.0/esp-idf/components/lwip/include/apps -IC:/esp/v6.0/esp-idf/components/lwip/lwip/src/include -IC:/esp/v6.0/esp-idf/components/lwip/port/include -IC:/esp/v6.0/esp-idf/components/lwip/port/freertos/include -IC:/esp/v6.0/esp-idf/components/lwip/port/esp32xx/include -IC:/esp/v6.0/esp-idf/components/lwip/port/esp32xx/include/arch -IC:/esp/v6.0/esp-idf/components/lwip/port/esp32xx/include/sys -IC:/esp/v6.0/esp-idf/components/esp_hal_gpspi/include -IC:/esp/v6.0/esp-idf/components/esp_hal_gpspi/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_clock/include -IC:/esp/v6.0/esp-idf/components/esp_hal_clock/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_mspi/include -IC:/esp/v6.0/esp-idf/components/esp_hal_mspi/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_blockdev/include -IC:/esp/v6.0/esp-idf/components/esp_hal_security/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_security/include -IC:/esp/v6.0/esp-idf/components/esp_app_format/include -IC:/esp/v6.0/esp-idf/components/esp_bootloader_format/include -IC:/esp/v6.0/esp-idf/components/app_update/include -IC:/esp/v6.0/esp-idf/components/bootloader_support/include -IC:/esp/v6.0/esp-idf/components/bootloader_support/bootloader_flash/include -IC:/esp/v6.0/esp-idf/components/esp_partition/include -IC:/esp/v6.0/esp-idf/components/efuse/include -IC:/esp/v6.0/esp-idf/components/efuse/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_security/include -IC:/esp/v6.0/esp-idf/components/esp_driver_gpio/include -IC:/esp/v6.0/esp-idf/components/esp_hal_uart/include -IC:/esp/v6.0/esp-idf/components/esp_hal_uart/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_pm/include -IC:/esp/v6.0/esp-idf/components/esp_mm/include -IC:/esp/v6.0/esp-idf/components/esp_driver_dma/include -IC:/esp/v6.0/esp-idf/components/mbedtls/port/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/library -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/core -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/drivers/builtin/src -IC:/esp/v6.0/esp-idf/components/mbedtls/esp_crt_bundle/include -IC:/esp/v6.0/esp-idf/components/mbedtls/port/psa_driver/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/drivers/builtin/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/drivers/everest/include -IC:/esp/v6.0/esp-idf/components/mbedtls/mbedtls/tf-psa-crypto/drivers/p256-m -IC:/esp/v6.0/esp-idf/components/esp_hal_timg/include -IC:/esp/v6.0/esp-idf/components/esp_hal_timg/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_wdt/include -IC:/esp/v6.0/esp-idf/components/esp_hal_wdt/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_rtc_timer/include -IC:/esp/v6.0/esp-idf/components/esp_hal_rtc_timer/esp32s3/include -IC:/esp/v6.0/esp-idf/components/spi_flash/include -IC:/esp/v6.0/esp-idf/components/esp_usb_cdc_rom_console/include -IC:/esp/v6.0/esp-idf/components/esp_hal_touch_sens/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_touch_sens/include -IC:/esp/v6.0/esp-idf/components/esp_hal_i2s/include -IC:/esp/v6.0/esp-idf/components/esp_hal_i2s/esp32s3/include -IC:/esp/v6.0/esp-idf/components/pthread/include -IC:/esp/v6.0/esp-idf/components/esp_timer/include -IC:/esp/v6.0/esp-idf/components/esp_ringbuf/include -IC:/esp/v6.0/esp-idf/components/esp_psram/include -IC:/esp/v6.0/esp-idf/components/esp_psram/xip_impl/include -IC:/esp/v6.0/esp-idf/components/esp_driver_uart/include -IC:/esp/v6.0/esp-idf/components/vfs/include -IC:/esp/v6.0/esp-idf/components/esp_driver_gptimer/include -IC:/esp/v6.0/esp-idf/components/app_trace/include -IC:/esp/v6.0/esp-idf/components/esp_event/include -IC:/esp/v6.0/esp-idf/components/nvs_sec_provider/include -IC:/esp/v6.0/esp-idf/components/nvs_flash/include -IC:/esp/v6.0/esp-idf/components/esp_phy/include -IC:/esp/v6.0/esp-idf/components/esp_phy/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_usb_serial_jtag/include -IC:/esp/v6.0/esp-idf/components/esp_netif/include -IC:/esp/v6.0/esp-idf/components/wpa_supplicant/include -IC:/esp/v6.0/esp-idf/components/wpa_supplicant/port/include -IC:/esp/v6.0/esp-idf/components/wpa_supplicant/esp_supplicant/include -IC:/esp/v6.0/esp-idf/components/esp_coex/include -IC:/esp/v6.0/esp-idf/components/esp_wifi/include -IC:/esp/v6.0/esp-idf/components/esp_wifi/include/local -IC:/esp/v6.0/esp-idf/components/esp_wifi/wifi_apps/include -IC:/esp/v6.0/esp-idf/components/esp_wifi/wifi_apps/nan_app/include -IC:/esp/v6.0/esp-idf/components/esp_driver_spi/include -IC:/esp/v6.0/esp-idf/components/esp_gdbstub/include -IC:/esp/v6.0/esp-idf/components/unity/include -IC:/esp/v6.0/esp-idf/components/unity/unity/src -IC:/esp/v6.0/esp-idf/components/cmock/CMock/src -IC:/esp/v6.0/esp-idf/components/console -IC:/esp/v6.0/esp-idf/components/esp_hal_i2c/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_i2c/include -IC:/esp/v6.0/esp-idf/components/esp_hal_twai/include -IC:/esp/v6.0/esp-idf/components/esp_hal_twai/esp32s3/include -IC:/esp/v6.0/esp-idf/components/driver/i2c/include -IC:/esp/v6.0/esp-idf/components/driver/touch_sensor/include -IC:/esp/v6.0/esp-idf/components/driver/twai/include -IC:/esp/v6.0/esp-idf/components/driver/touch_sensor/esp32s3/include -IC:/esp/v6.0/esp-idf/components/http_parser -IC:/esp/v6.0/esp-idf/components/esp-tls -IC:/esp/v6.0/esp-idf/components/esp-tls/esp-tls-crypto -IC:/esp/v6.0/esp-idf/components/esp_adc/include -IC:/esp/v6.0/esp-idf/components/esp_adc/interface -IC:/esp/v6.0/esp-idf/components/esp_adc/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ana_cmpr/include -IC:/esp/v6.0/esp-idf/components/esp_driver_ana_cmpr/include -IC:/esp/v6.0/esp-idf/components/esp_driver_bitscrambler/include -IC:/esp/v6.0/esp-idf/components/esp_hal_cam/include -IC:/esp/v6.0/esp-idf/components/esp_hal_cam/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_isp/include -IC:/esp/v6.0/esp-idf/components/esp_driver_cam/include -IC:/esp/v6.0/esp-idf/components/esp_driver_cam/interface -IC:/esp/v6.0/esp-idf/components/esp_driver_cam/dvp/include -IC:/esp/v6.0/esp-idf/components/esp_driver_dac/include -IC:/esp/v6.0/esp-idf/components/esp_driver_i2c/include -IC:/esp/v6.0/esp-idf/components/esp_driver_i2s/include -IC:/esp/v6.0/esp-idf/components/esp_driver_i3c/include -IC:/esp/v6.0/esp-idf/components/esp_hal_jpeg/include -IC:/esp/v6.0/esp-idf/components/esp_driver_jpeg/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ledc/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ledc/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_ledc/include -IC:/esp/v6.0/esp-idf/components/esp_hal_mcpwm/include -IC:/esp/v6.0/esp-idf/components/esp_hal_mcpwm/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_mcpwm/include -IC:/esp/v6.0/esp-idf/components/esp_hal_parlio/include -IC:/esp/v6.0/esp-idf/components/esp_driver_parlio/include -IC:/esp/v6.0/esp-idf/components/esp_hal_pcnt/include -IC:/esp/v6.0/esp-idf/components/esp_hal_pcnt/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_pcnt/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ppa/include -IC:/esp/v6.0/esp-idf/components/esp_driver_ppa/include -IC:/esp/v6.0/esp-idf/components/esp_hal_rmt/include -IC:/esp/v6.0/esp-idf/components/esp_hal_rmt/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_driver_rmt/include -IC:/esp/v6.0/esp-idf/components/sdmmc/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sd_intf/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sdio/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sdm/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sdmmc/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sdmmc/legacy/include -IC:/esp/v6.0/esp-idf/components/esp_driver_sdspi/include -IC:/esp/v6.0/esp-idf/components/esp_driver_touch_sens/include -IC:/esp/v6.0/esp-idf/components/esp_driver_touch_sens/hw_ver2/include -IC:/esp/v6.0/esp-idf/components/esp_driver_tsens/include -IC:/esp/v6.0/esp-idf/components/esp_driver_twai/include -IC:/esp/v6.0/esp-idf/components/esp_eth/include -IC:/esp/v6.0/esp-idf/components/esp_hal_ieee802154/include -IC:/esp/v6.0/esp-idf/components/esp_hal_lcd/include -IC:/esp/v6.0/esp-idf/components/esp_hal_lcd/esp32s3/include -IC:/esp/v6.0/esp-idf/components/esp_hid/include -IC:/esp/v6.0/esp-idf/components/tcp_transport/include -IC:/esp/v6.0/esp-idf/components/esp_http_client/include -IC:/esp/v6.0/esp-idf/components/esp_http_server/include -IC:/esp/v6.0/esp-idf/components/esp_https_ota/include -IC:/esp/v6.0/esp-idf/components/esp_https_server/include -IC:/esp/v6.0/esp-idf/components/esp_lcd/include -IC:/esp/v6.0/esp-idf/components/esp_lcd/interface -IC:/esp/v6.0/esp-idf/components/esp_lcd/rgb/include -IC:/esp/v6.0/esp-idf/components/protobuf-c/protobuf-c -IC:/esp/v6.0/esp-idf/components/protocomm/include/common -IC:/esp/v6.0/esp-idf/components/protocomm/include/security -IC:/esp/v6.0/esp-idf/components/protocomm/include/transports -IC:/esp/v6.0/esp-idf/components/protocomm/include/crypto/srp6a -IC:/esp/v6.0/esp-idf/components/protocomm/proto-c -IC:/esp/v6.0/esp-idf/components/esp_local_ctrl/include -IC:/esp/v6.0/esp-idf/components/esp_trace/include -IC:/esp/v6.0/esp-idf/components/wear_levelling/include -IC:/esp/v6.0/esp-idf/components/fatfs/diskio -IC:/esp/v6.0/esp-idf/components/fatfs/src -IC:/esp/v6.0/esp-idf/components/fatfs/vfs -IC:/esp/v6.0/esp-idf/components/idf_test/include -IC:/esp/v6.0/esp-idf/components/idf_test/include/esp32s3 -IC:/esp/v6.0/esp-idf/components/ieee802154/include -IC:/esp/v6.0/esp-idf/components/perfmon/include -IC:/esp/v6.0/esp-idf/components/rt/include -IC:/esp/v6.0/esp-idf/components/spiffs/include @"C:/ESP_Workspace/quadBLE/build/toolchain/cflags" -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=C:/ESP_Workspace/quadBLE=. -fmacro-prefix-map=C:/esp/v6.0/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu23 -Wno-old-style-declaration -fzero-init-padding-bits=all -fno-malloc-dce -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj -MF esp-idf\main\CMakeFiles\__idf_main.dir\main.c.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/main.c.obj -c C:/ESP_Workspace/quadBLE/main/main.c
C:/ESP_Workspace/quadBLE/main/main.c:11:10: fatal error: ssd1306.h: No such file or directory
   11 | #include "ssd1306.h"
      |          ^~~~~~~~~~~
compilation terminated.
5 minutes lost every time when cleaning and rebuilding the project.
Build complete (1 errors, 0 warnings): C:\ESP_Workspace\quadBLE\build
Total time taken to build the project: 328,784 ms
:evil:

You have already written the they are excluded from the firmware ( the not used). But hey are not excluded from my life! 5minutes every rebuild.

Now I understand my old expierience college who said he will never touch Chinese mcu or software.

Why this console logs are so long ?? :?: :?:
:shock: :shock:
why you just do not mask them, with something like "..." for the entire path which is repeated every every line two times or three!!
Last edited by chrisc on Fri Mar 27, 2026 2:02 pm, edited 1 time in total.

Who is online

Users browsing this forum: akashgaur0001, Baidu [Spider] and 5 guests