From 3b28818ba4f1c0ace850ddd893cf28bcf71f2407 Mon Sep 17 00:00:00 2001 From: Darian Leung <32921628+Dazza0@users.noreply.github.com> Date: Sat, 15 Feb 2025 18:28:39 +0800 Subject: [PATCH] fix(examples): idf_as_lib linux build The Linux build was broken after IDF flash API was updated without updating the Linux stub library in the example. This commit updates the spi_flash stub library such that: - The API now matches same API as IDF's spi_flash component - Links the stub_esp32 library to pull in basic types and defines --- .../cmake/idf_as_lib/stubs/esp32/CMakeLists.txt | 2 -- .../cmake/idf_as_lib/stubs/esp32/esp_system.h | 4 ++++ .../cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt | 3 ++- .../cmake/idf_as_lib/stubs/spi_flash/esp_flash.h | 9 ++++++--- .../cmake/idf_as_lib/stubs/spi_flash/flash_ops.c | 9 ++++++--- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt b/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt index e3acaef6b3..ca45436572 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt +++ b/examples/build_system/cmake/idf_as_lib/stubs/esp32/CMakeLists.txt @@ -1,5 +1,3 @@ add_library(stub_esp32 STATIC system_api.c cpu_start.c) target_include_directories(stub_esp32 PUBLIC .) add_library(stub::esp32 ALIAS stub_esp32) - -target_link_libraries(stub_esp32 stub::spi_flash) diff --git a/examples/build_system/cmake/idf_as_lib/stubs/esp32/esp_system.h b/examples/build_system/cmake/idf_as_lib/stubs/esp32/esp_system.h index a3d2143c55..4a8e3af859 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/esp32/esp_system.h +++ b/examples/build_system/cmake/idf_as_lib/stubs/esp32/esp_system.h @@ -9,6 +9,10 @@ extern "C" { #endif +#define ESP_OK 0 /*!< esp_err_t value indicating success (no error) */ + +typedef int esp_err_t; + void esp_restart(void); #ifdef __cplusplus diff --git a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt index 199ac3ada2..60550ed7c1 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt +++ b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/CMakeLists.txt @@ -1,3 +1,4 @@ add_library(stub_spi_flash STATIC flash_ops.c) -target_include_directories(stub_spi_flash INTERFACE .) +target_include_directories(stub_spi_flash PUBLIC .) add_library(stub::spi_flash ALIAS stub_spi_flash) +target_link_libraries(stub_spi_flash PUBLIC stub_esp32) diff --git a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_flash.h b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_flash.h index ede1cb373e..aa8584c4b3 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_flash.h +++ b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/esp_flash.h @@ -1,18 +1,21 @@ /* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ #pragma once -#include +#include +#include "esp_system.h" #ifdef __cplusplus extern "C" { #endif -int spi_flash_get_chip_size(void); +typedef void * esp_flash_t; + +esp_err_t esp_flash_get_size(esp_flash_t *chip, uint32_t *out_size); #ifdef __cplusplus } diff --git a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/flash_ops.c b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/flash_ops.c index e44eb03361..faf0aec0c2 100644 --- a/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/flash_ops.c +++ b/examples/build_system/cmake/idf_as_lib/stubs/spi_flash/flash_ops.c @@ -1,10 +1,13 @@ /* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ -int spi_flash_get_chip_size(void) +#include "esp_flash.h" + +esp_err_t esp_flash_get_size(esp_flash_t *chip, uint32_t *out_size) { - return (1024 * 1024 * 1024); + *out_size = 1024 * 1024 * 1024; + return ESP_OK; }