mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-02-20 15:35:05 +00:00
67 lines
2.5 KiB
CMake
67 lines
2.5 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
set(CMAKE_CXX_STANDARD 26)
|
|
set(CMAKE_C_STANDARD 23)
|
|
|
|
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 drivers-core drivers-abstract drivers-esp ${TACTILITY_DEVICE_PROJECT}
|
|
)
|
|
target_compile_options(${COMPONENT_LIB} PRIVATE -std=c23)
|
|
|
|
else ()
|
|
|
|
add_executable(FirmwareSim ${SOURCE_FILES} "${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c")
|
|
target_link_libraries(FirmwareSim
|
|
PRIVATE Tactility
|
|
PRIVATE TactilityCore
|
|
PRIVATE TactilityFreeRtos
|
|
PRIVATE Simulator
|
|
PRIVATE SDL2::SDL2-static SDL2-static
|
|
PRIVATE drivers-abstract
|
|
PRIVATE drivers-core
|
|
)
|
|
|
|
target_include_directories(FirmwareSim PRIVATE "${CMAKE_SOURCE_DIR}/Firmware/Generated")
|
|
target_compile_options(FirmwareSim PRIVATE -std=c++23)
|
|
|
|
add_definitions(-D_Nullable=)
|
|
add_definitions(-D_Nonnull=)
|
|
|
|
add_dependencies(FirmwareSim Generated)
|
|
endif ()
|
|
|
|
# Generate devicetree code and attach to component
|
|
add_custom_command(
|
|
OUTPUT ${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c ${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.h
|
|
COMMAND mkdir ${CMAKE_SOURCE_DIR}/Firmware/Generated | pip install lark pyyaml && python Buildscripts/devicetree-compiler/compile.py ${DEVICETREE_LOCATION} Firmware/Generated
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
VERBATIM
|
|
)
|
|
add_custom_target(Generated DEPENDS ${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c ${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.h)
|
|
set_property(DIRECTORY "${CMAKE_SOURCE_DIR}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES "Firmware/Generated/devicetree.c" "/Firmware/Generated/devicetree.h")
|
|
# Attach generated code to project
|
|
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)
|