|
| 1 | +cmake_minimum_required(VERSION 3.27) |
| 2 | + |
| 3 | +include(${CMAKE_CURRENT_LIST_DIR}/cmake/util.cmake) |
| 4 | + |
| 5 | +validate_esp_target(${ESP_TARGET}) |
| 6 | + |
| 7 | +include(${CMAKE_CURRENT_LIST_DIR}/cmake/build-flags.cmake) |
| 8 | + |
| 9 | +# Setup toolchain and flags |
| 10 | +setup_toolchain(${ESP_TARGET} "${XTENSA_TARGETS}") |
| 11 | + |
| 12 | +# Add compiler and linker flags to all targets |
| 13 | +add_compile_options(${TARGET_COMPILER_FLAGS}) |
| 14 | +add_link_options(${COMMON_LINKER_FLAGS}) |
| 15 | + |
| 16 | +# Project setup |
| 17 | +set(APP_NAME stub_${ESP_TARGET}) |
| 18 | +project(${APP_NAME}.elf LANGUAGES C CXX ASM) |
| 19 | + |
| 20 | +# Source and linker configuration |
| 21 | +set(SRC_DIR .) |
| 22 | +set(LINKER_SCRIPTS |
| 23 | + ${CMAKE_CURRENT_LIST_DIR}/ld/${ESP_TARGET}.ld |
| 24 | + ${CMAKE_CURRENT_LIST_DIR}/ld/common.ld |
| 25 | +) |
| 26 | +file(GLOB SRC_FILES "${SRC_DIR}/*.c" "${SRC_DIR}/*.S") |
| 27 | + |
| 28 | +# Target configuration |
| 29 | +add_executable(${PROJECT_NAME} ${SRC_FILES}) |
| 30 | +target_include_directories(${PROJECT_NAME} |
| 31 | + PRIVATE include |
| 32 | +) |
| 33 | +foreach(script ${LINKER_SCRIPTS}) |
| 34 | + target_link_options(${PROJECT_NAME} PRIVATE -T${script}) |
| 35 | +endforeach() |
| 36 | + |
| 37 | +if(${ESP_TARGET} STREQUAL "esp8266") |
| 38 | + target_link_options(${PROJECT_NAME} PRIVATE -Wl,--entry=stub_main_esp8266) |
| 39 | +endif() |
| 40 | + |
| 41 | +target_compile_definitions(${PROJECT_NAME} PRIVATE asm=__asm__) |
| 42 | + |
| 43 | +set(MAP_FILE ${CMAKE_CURRENT_BINARY_DIR}/${APP_NAME}.map) |
| 44 | +target_link_options(${PROJECT_NAME} PRIVATE -Wl,-Map=${MAP_FILE}) |
| 45 | +set_directory_properties(PROPERTIES ADDITIONAL_CLEAN_FILES ${MAP_FILE}) |
| 46 | + |
| 47 | +add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD |
| 48 | + COMMAND ${CMAKE_SIZE} ${PROJECT_NAME} |
| 49 | + COMMAND ${CMAKE_OBJDUMP} -d $<TARGET_FILE:${APP_NAME}.elf> -M no-aliases > ${CMAKE_BINARY_DIR}/${APP_NAME}.asm |
| 50 | + COMMENT "" |
| 51 | +) |
| 52 | + |
| 53 | +get_filename_component(PROJECT_ROOT ${CMAKE_CURRENT_LIST_DIR}/.. ABSOLUTE) |
| 54 | +add_subdirectory(${PROJECT_ROOT} esp-stub-lib) |
| 55 | +target_link_libraries(${PROJECT_NAME} PRIVATE esp-stub-lib) |
0 commit comments