lift_indicator_suite/CMakeLists.txt

61 lines
2.8 KiB
CMake

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)
# Заглушка tft_app для аппаратной верификации bootutil (Фаза 2) — удалить,
# когда появится реальный firmware/tft_app. См. firmware/bootloader/PLAN.md.
add_subdirectory(firmware/bootloader/test_stub)
endif()
# -----------------------------------------------------------------------------
# Тесты
# -----------------------------------------------------------------------------
if(BUILD_TESTS_HOST OR BUILD_TESTS_TARGET)
enable_testing()
add_subdirectory(tests)
endif()