From 29c796e7660a4dba4f62b095012067852abf2dae Mon Sep 17 00:00:00 2001 From: TOKITA Hiroshi Date: Sun, 1 Feb 2026 21:43:11 +0900 Subject: [PATCH 1/2] CMakeLists.txt: Build the ArduinoCore-API implementations With the introduction of `west blobs`, the licensing situation is now clear, so we can include the ArduinoCore-API implementations in the build. Exclude `zephyrPrint.cpp` as it conflicts with the API implementations. Also exclude `apiCommon.cpp`, which is only used by the Rust build. Signed-off-by: TOKITA Hiroshi --- CMakeLists.txt | 7 +++++++ cores/arduino/CMakeLists.txt | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2b33c61fc..9ebb7350b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,6 +86,13 @@ if (CONFIG_ARDUINO_API) zephyr_link_libraries(arduinocore_api_rust) else() zephyr_include_directories(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/) + zephyr_sources(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/api/CanMsg.cpp) + zephyr_sources(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/api/CanMsgRingbuffer.cpp) + zephyr_sources(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/api/Common.cpp) + zephyr_sources(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/api/IPAddress.cpp) + zephyr_sources(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/api/Print.cpp) + zephyr_sources(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/api/Stream.cpp) + zephyr_sources(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/api/String.cpp) endif() endif() diff --git a/cores/arduino/CMakeLists.txt b/cores/arduino/CMakeLists.txt index 3ce78a5a4..36e337b90 100644 --- a/cores/arduino/CMakeLists.txt +++ b/cores/arduino/CMakeLists.txt @@ -11,10 +11,13 @@ zephyr_include_directories(../../variants) if(NOT DEFINED ARDUINO_BUILD_PATH) -zephyr_sources(zephyrPrint.cpp) zephyr_sources(zephyrSerial.cpp) zephyr_sources(zephyrCommon.cpp) -zephyr_sources(apiCommon.cpp) + +if(CONFIG_USE_ARDUINO_API_RUST_IMPLEMENTATION) + zephyr_sources(zephyrPrint.cpp) + zephyr_sources(apiCommon.cpp) +endif() if(DEFINED CONFIG_ARDUINO_ENTRY) zephyr_sources(main.cpp) From 827af1eef41ebcbc248eedfedfd75094116c2dbd Mon Sep 17 00:00:00 2001 From: TOKITA Hiroshi Date: Sun, 1 Feb 2026 21:43:13 +0900 Subject: [PATCH 2/2] CMakeLists.txt: Fix Rust-API implementation build Fix the Rust API implementation build by referencing ArduinoCore-API in Rust builds. For licensing reasons, we plan to provide an alternative API implementation for the Rust build in the future. Until then, use ArduinoCore-API. Signed-off-by: TOKITA Hiroshi --- CMakeLists.txt | 1 + cores/arduino/Arduino.h | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ebb7350b..53d5f323a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -84,6 +84,7 @@ if (CONFIG_ARDUINO_API) add_library(arduinocore_api_rust STATIC IMPORTED GLOBAL) set_target_properties(arduinocore_api_rust PROPERTIES IMPORTED_LOCATION ${RUST_LIB}) zephyr_link_libraries(arduinocore_api_rust) + zephyr_include_directories(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/) else() zephyr_include_directories(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/) zephyr_sources(${CMAKE_CURRENT_SOURCE_DIR}/zephyr/blobs/ArduinoCore-API/api/CanMsg.cpp) diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h index a57d58cb1..a15d8ffce 100644 --- a/cores/arduino/Arduino.h +++ b/cores/arduino/Arduino.h @@ -6,7 +6,7 @@ #pragma once -#include +#include "api/ArduinoAPI.h" #include #include @@ -104,6 +104,5 @@ int digitalPinToInterrupt(pin_size_t pin); #include #ifdef __cplusplus -#include #include #endif // __cplusplus