From 698ad5d0f7b6f5147d01fd4c0a352d21bc6d5899 Mon Sep 17 00:00:00 2001 From: Dakkshesh Date: Sat, 21 Dec 2024 10:14:05 +0530 Subject: [PATCH] HardwareSerial: Define no-op serialEvent() functions for clang GCC automatically resolves weakly defined empty symbols to null if not overridden, but Clang doesn't resolve it this way. This causes undefined reference errors during linking. To address this, define empty no-op serialEvent() functions that can be overridden later since its weakly defined, ensuring compatibility with Clang and fixing the build issue. ref: https://github.com/avr-llvm/clang/issues/9 Signed-off-by: Dakkshesh --- cores/arduino/HardwareSerial.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index 561127f9f..2523865ef 100644 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -44,21 +44,33 @@ #if defined(HAVE_HWSERIAL0) void serialEvent() __attribute__((weak)); bool Serial0_available() __attribute__((weak)); + + void serialEvent() { } + bool Serial0_available() { return false; } #endif #if defined(HAVE_HWSERIAL1) void serialEvent1() __attribute__((weak)); bool Serial1_available() __attribute__((weak)); + + void serialEvent1() { } + bool Serial1_available() { return false; } #endif #if defined(HAVE_HWSERIAL2) void serialEvent2() __attribute__((weak)); bool Serial2_available() __attribute__((weak)); + + void serialEvent2() { } + bool Serial2_available() { return false; } #endif #if defined(HAVE_HWSERIAL3) void serialEvent3() __attribute__((weak)); bool Serial3_available() __attribute__((weak)); + + void serialEvent3() { } + bool Serial3_available() { return false; } #endif void serialEventRun(void)