fabianoriccardi / dimmable-light

Arduino library to manage dimmers compatible with AVR, ESP8266, ESP32, SAMD, and RP2040 platforms.
GNU Lesser General Public License v2.1
97 stars 29 forks source link

PlatformIO fails to build for RP2040 using earlephilhower core (With workaround) #62

Open mlaga97 opened 6 months ago

mlaga97 commented 6 months ago

Describe the bug

Building with the following platformio.ini:

[env:rp2040]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
board_build.core = earlephilhower
lib_deps =
  fabianoriccardi/Dimmable Light for Arduino@^1.6.0

fails due to conflicts with the built-in STL, which the dimmable-light documentation recommends solving by adding

lib_compat_mode = strict

to the platform.ini file.

However...

This still fails to build with the following error:

src/main.cpp:4:10: fatal error: dimmable_light.h: No such file or directory

Running pio build with the -v flag shows the following additional information:

LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ strict
Platform incompatible library /Parlor/Lauren/Projects/LARPANet-boards/Firmware/LampDimmer/.pio/libdeps/rp2040/ArduinoSTL
Platform incompatible library /Parlor/Lauren/Projects/LARPANet-boards/Firmware/LampDimmer/.pio/libdeps/rp2040/Dimmable Light for Arduino

For some reason, this library is not counted as being compatible with this platformio configuration.

Workaround

Through some trial and error, I was able to determine that lib_compat_mode = strict needs to be removed and lib_ldf_mode = off added, giving the following working platformio.ini:

[env:rp2040]
platform = https://github.com/maxgerhardt/platform-raspberrypi.git
board = pico
framework = arduino
board_build.core = earlephilhower
lib_deps =
  fabianoriccardi/Dimmable Light for Arduino@^1.6.0
lib_ldf_mode = off

In theory lib_ldf_mode = chain+ or lib_ldf_mode = deep+ should work since the #include <ArduinoSTL.h> is properly #ifdef'd, but it doesn't for some reason.

Version Info