Tactility/Firmware/CMakeLists.txt
2026-01-21 19:59:05 +01:00

57 lines
2.0 KiB
CMake

cmake_minimum_required(VERSION 3.20)
file(GLOB_RECURSE SOURCE_FILES "Source/*.c*")
# Determine device identifier and project location
if (DEFINED ENV{ESP_IDF_VERSION})
include("../Buildscripts/device.cmake")
init_tactility_globals("../sdkconfig")
get_property(TACTILITY_DEVICE_PROJECT GLOBAL PROPERTY TACTILITY_DEVICE_PROJECT)
else ()
set(TACTILITY_DEVICE_PROJECT "Devices/simulator")
endif ()
set(DEVICETREE_LOCATION "Devices/${TACTILITY_DEVICE_ID}")
if (NOT DEFINED ${COMPONENT_LIB})
set(COMPONENT_LIB FirmwareSim)
endif ()
if (DEFINED ENV{ESP_IDF_VERSION})
idf_component_register(
SRCS ${SOURCE_FILES}
REQUIRES ${DEVICE_COMPONENTS}
REQUIRES Tactility TactilityC TactilityKernel drivers-esp ${TACTILITY_DEVICE_PROJECT}
)
else ()
add_executable(FirmwareSim ${SOURCE_FILES} "${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c")
target_link_libraries(FirmwareSim
PRIVATE Tactility
PRIVATE TactilityCore
PRIVATE TactilityFreeRtos
PRIVATE TactilityKernel
PRIVATE Simulator
PRIVATE SDL2::SDL2-static SDL2-static
)
target_include_directories(FirmwareSim PRIVATE "${CMAKE_SOURCE_DIR}/Firmware/Generated")
add_definitions(-D_Nullable=)
add_definitions(-D_Nonnull=)
endif ()
# Generate devicetree code and attach to Firmware component
add_custom_target(Generated
COMMAND mkdir -p ${CMAKE_SOURCE_DIR}/Firmware/Generated | echo Firmware/Generated exists
COMMAND pip install lark pyyaml
COMMAND python Buildscripts/devicetree-compiler/compile.py ${DEVICETREE_LOCATION} Firmware/Generated
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
set_property(DIRECTORY "${CMAKE_SOURCE_DIR}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES "Firmware/Generated/devicetree.c" "/Firmware/Generated/devicetree.h")
target_sources(${COMPONENT_LIB} PRIVATE "${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c")
target_include_directories(${COMPONENT_LIB} PRIVATE ${CMAKE_SOURCE_DIR}/Firmware/Generated)
add_dependencies(${COMPONENT_LIB} Generated)