cmake_minimum_required(VERSION 3.20) project(tft_firmware C ASM) # ----------------------------------------------------------------------------- # Глобальные опции — управляются через пресеты # ----------------------------------------------------------------------------- option(BUILD_TESTS_HOST "Build host unit tests" OFF) option(BUILD_TESTS_TARGET "Build on-target tests" OFF) option(SEGGER_RTT_ENABLED "Enable SEGGER RTT" OFF) option(UNITY_TESTING_ENABLED "Enable Unity framework" OFF) # ----------------------------------------------------------------------------- # Общие настройки для ARM сборки # ----------------------------------------------------------------------------- if(NOT BUILD_TESTS_HOST) set(CMAKE_EXECUTABLE_SUFFIX ".elf") set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS OFF) set(BSP_SYSCALLS_FILE "${CMAKE_SOURCE_DIR}/bsp/generated/syscalls.c" CACHE FILEPATH "Заглушки системных вызовов newlib") set(BSP_GENERATED "${CMAKE_SOURCE_DIR}/bsp/generated" CACHE PATH "Путь до сгенерированных ConfigTools файлов") set(BSP_STARTUP_FILE "${BSP_GENERATED}/startup/startup_MIMXRT1052.S" CACHE FILEPATH "Путь до стартап файла") endif() # ----------------------------------------------------------------------------- # SDK и BSP — всегда подключаются, но содержат защиту от host сборки внутри # ----------------------------------------------------------------------------- add_subdirectory(sdk) add_subdirectory(utils) add_subdirectory(bsp) add_subdirectory(port) # ----------------------------------------------------------------------------- # Сторонние и внутренние библиотеки # ----------------------------------------------------------------------------- add_subdirectory(lib) # ----------------------------------------------------------------------------- # Firmware проекты — только для ARM сборки # ----------------------------------------------------------------------------- if(NOT BUILD_TESTS_HOST) add_subdirectory(firmware/test) add_subdirectory(firmware/bootloader) add_subdirectory(firmware/tft_app) # Заглушка tft_app для аппаратной верификации bootutil (Фаза 2). Пока # оставляем рядом с реальным firmware/tft_app как независимую A/B-регрессию # загрузчика — удалить, когда app сам сможет служить стендом. См. # firmware/bootloader/PLAN.md и firmware/tft_app/PLAN.md. add_subdirectory(firmware/bootloader/test_stub) endif() # ----------------------------------------------------------------------------- # Тесты # ----------------------------------------------------------------------------- if(BUILD_TESTS_HOST OR BUILD_TESTS_TARGET) enable_testing() add_subdirectory(tests) endif()