kopia lustrzana https://github.com/espressif/esp-idf
43 wiersze
1.7 KiB
CMake
43 wiersze
1.7 KiB
CMake
cmake_minimum_required(VERSION 3.5)
|
|
|
|
project(idf_as_lib C)
|
|
|
|
set(targets "esp32" "esp32s2" "esp32s3" "esp32c3" "esp32h2")
|
|
|
|
if("${TARGET}" IN_LIST targets)
|
|
# Include for ESP-IDF build system functions
|
|
include($ENV{IDF_PATH}/tools/cmake/idf.cmake)
|
|
# Create idf::{target} and idf::freertos static libraries
|
|
idf_build_process("${TARGET}"
|
|
# try and trim the build; additional components
|
|
# will be included as needed based on dependency tree
|
|
#
|
|
# although esptool_py does not generate static library,
|
|
# processing the component is needed for flashing related
|
|
# targets and file generation
|
|
COMPONENTS "${TARGET}" freertos esptool_py
|
|
SDKCONFIG ${CMAKE_CURRENT_LIST_DIR}/sdkconfig
|
|
BUILD_DIR ${CMAKE_BINARY_DIR})
|
|
else()
|
|
message(WARNING "Unknown target ${TARGET}, creating stubs for esp32 instead")
|
|
# Create stubs for esp32 and freertos, stub::esp32 and stub::freertos
|
|
add_subdirectory(stubs/esp32)
|
|
add_subdirectory(stubs/freertos)
|
|
add_subdirectory(stubs/spi_flash)
|
|
endif()
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
set(elf_file ${CMAKE_PROJECT_NAME}.elf)
|
|
add_executable(${elf_file} main.c)
|
|
|
|
# Link the static libraries to the executable
|
|
if("${TARGET}" IN_LIST targets)
|
|
target_link_libraries(${elf_file} "idf::${TARGET}" idf::freertos idf::spi_flash)
|
|
# Attach additional targets to the executable file for flashing,
|
|
# linker script generation, partition_table generation, etc.
|
|
idf_build_executable(${elf_file})
|
|
else()
|
|
target_link_libraries(${elf_file} stub::esp32 stub::freertos stub::spi_flash)
|
|
endif()
|