Marlin 2.0.x bug fix branch fails compile with EXTENSIBLE_UI

Please forgive me if I’m asking about this issue in the wrong place. I’ve been compiling Marlin 2.0.x from github source, and have been experimenting with different features one notable being EXTENSIBLE_UI.

I uncomment the below line within the Configuration.h file

#define EXTENSIBLE_UI

Then I use PlatformIO to rebuild the project and everything seems to compile until it begins to link the binary, and then the build process fails.

Error Log / Stacktrace

Indexing .pio/build/megaatmega2560/libFrameworkArduino.a
Archiving .pio/build/megaatmega2560/liba44/libU8glib-HAL_ID1932.a
Indexing .pio/build/megaatmega2560/liba44/libU8glib-HAL_ID1932.a
Linking .pio/build/megaatmega2560/firmware.elf
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans0.ltrans.o: In function `GcodeSuite::process_parsed_command(bool) [clone .constprop.2]':
<artificial>:(.text+0x804): undefined reference to `ExtUI::onUserConfirmRequired(char const*)'
<artificial>:(.text+0xa58): undefined reference to `ExtUI::onPrintTimerPaused()'
<artificial>:(.text+0x1fa8): undefined reference to `ExtUI::onIdle()'
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans5.ltrans.o: In function `kill(char const*, char const*, bool)':
<artificial>:(.text+0x68): undefined reference to `ExtUI::onPrinterKilled(char const*, char const*)'
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans5.ltrans.o: In function `idle()':
<artificial>:(.text+0x470): undefined reference to `ExtUI::onIdle()'
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans6.ltrans.o: In function `main':
<artificial>:(.text.startup+0x1e8): undefined reference to `ExtUI::onStartup()'
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans2.ltrans.o: In function `Stopwatch::start()':
<artificial>:(.text+0xd0): undefined reference to `ExtUI::onPrintTimerStarted()'
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans2.ltrans.o: In function `Stopwatch::stop()':
<artificial>:(.text+0x12a): undefined reference to `ExtUI::onPrintTimerStopped()'
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans2.ltrans.o: In function `MarlinUI::set_status(char const*, bool) [clone .part.1] [clone .lto_priv.52]':
<artificial>:(.text+0x18a): undefined reference to `ExtUI::onStatusChanged(char const*)'
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans2.ltrans.o: In function `MarlinUI::set_status_P(char const*, signed char)':
<artificial>:(.text+0x1fe): undefined reference to `ExtUI::onStatusChanged(char const*)'
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans2.ltrans.o: In function `ExtUI::onUserConfirmRequired_P(char const*)':
<artificial>:(.text+0x272): undefined reference to `ExtUI::onUserConfirmRequired(char const*)'
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans2.ltrans.o: In function `MarlinSettings::reset()':
<artificial>:(.text+0xbc8): undefined reference to `ExtUI::onFactoryReset()'
<artificial>:(.text+0xd62): undefined reference to `ExtUI::onFactoryReset()'
/var/folders/f7/qpd710l91bvcz5f6lbpm1p840000gn/T//ccG5Q6SU.ltrans8.ltrans.o: In function `MarlinUI::status_printf_P(unsigned char, char const*, ...) [clone .constprop.17]':
<artificial>:(.text+0x54): undefined reference to `ExtUI::onStatusChanged(char const*)'
collect2: error: ld returned 1 exit status
*** [.pio/build/megaatmega2560/firmware.elf] Error 1
================================== [FAILED] Took 34.05 seconds ==================================

Environment              Status    Duration
-----------------------  --------  ------------
megaatmega2560           FAILED    00:00:34.049
megaatmega1280           IGNORED
at90usb1286_cdc          IGNORED
at90usb1286_dfu          IGNORED
DUE                      IGNORED
DUE_USB                  IGNORED
DUE_debug                IGNORED
LPC1768                  IGNORED
LPC1769                  IGNORED
melzi                    IGNORED
melzi_optiboot           IGNORED
rambo                    IGNORED
sanguino_atmega644p      IGNORED
sanguino_atmega1284p     IGNORED
STM32F103RE              IGNORED
STM32F103RC_fysetc       IGNORED
STM32F103RC_bigtree      IGNORED
STM32F103RC_bigtree_USB  IGNORED
STM32F4                  IGNORED
STM32F7                  IGNORED
ARMED                    IGNORED
STM32F103VE_longer       IGNORED
mks_robin                IGNORED
mks_robin_lite           IGNORED
mks_robin_mini           IGNORED
mks_robin_nano           IGNORED
jgaurora_a5s_a1          IGNORED
STM32F407VE_black        IGNORED
BIGTREE_SKR_PRO          IGNORED
BIGTREE_BTT002           IGNORED
teensy31                 IGNORED
STM32F103CB_malyan       IGNORED
chitu_f103               IGNORED
teensy35                 IGNORED
esp32                    IGNORED
fysetc_f6_13             IGNORED
linux_native             IGNORED
SAMD51_grandcentral_m4   IGNORED
include_tree             IGNORED
============================= 1 failed, 0 succeeded in 00:00:34.049 =============================
The terminal process terminated with exit code: 1

I have very little experience with PlatformIO and have only begun to work with the Marlin source. So if anyone has any suggestions about this issue please share.

I have this same issue. I have tried changing the board environment, but it shows they other boards failed in the error.

yeah I ended up solving this the other day thanks to some help on the marlin discord. when working with extensibleUI something has to use it, ie. there generally has to be some h and cpp files that actually use the extensibleui. the best way can check things are working on your environment is checkout how insanityautomation created a branch of marlin for the dwin displays, as I did not have any issues compiling his branch, thus the issues i were running into were not related to platformio

https://github.com/InsanityAutomation/Marlin/tree/Creality_2.0_Bleeding
1 Like