diff --git a/Firmware/.gitignore b/Firmware/.gitignore deleted file mode 100644 index 673b74ec..00000000 --- a/Firmware/.gitignore +++ /dev/null @@ -1 +0,0 @@ -Generated/ diff --git a/Firmware/CMakeLists.txt b/Firmware/CMakeLists.txt index b15a82e9..00aa27c2 100644 --- a/Firmware/CMakeLists.txt +++ b/Firmware/CMakeLists.txt @@ -14,16 +14,23 @@ endif () set(DEVICETREE_LOCATION "${CMAKE_SOURCE_DIR}/Devices/${TACTILITY_DEVICE_ID}") +set(GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/Generated") +# Ensure the directory is built in the correct CMake build phase +# If the check is not done, then another directory is created in the root of the build folder. +if (DEFINED ${CMAKE_CURRENT_BINARY_DIR}) + file(MAKE_DIRECTORY "${GENERATED_DIR}") +endif () + if (DEFINED ENV{ESP_IDF_VERSION}) idf_component_register( - SRCS ${SOURCE_FILES} "${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c" + SRCS ${SOURCE_FILES} "${GENERATED_DIR}/devicetree.c" REQUIRES Tactility TactilityC TactilityKernel PlatformEsp32 ${TACTILITY_DEVICE_PROJECT} ) else () - add_executable(FirmwareSim ${SOURCE_FILES} "${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c") + add_executable(FirmwareSim ${SOURCE_FILES} "${GENERATED_DIR}/devicetree.c") target_link_libraries(FirmwareSim PRIVATE Tactility TactilityCore @@ -38,22 +45,20 @@ else () add_definitions(-D_Nonnull=) endif () -file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/Firmware/Generated") - add_custom_target(AlwaysRun) add_custom_command( - OUTPUT "${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c" - "${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.h" + OUTPUT "${GENERATED_DIR}/devicetree.c" + "${GENERATED_DIR}/devicetree.h" COMMAND pip install lark pyyaml COMMAND python "${CMAKE_SOURCE_DIR}/Buildscripts/DevicetreeCompiler/compile.py" - "${DEVICETREE_LOCATION}" "Firmware/Generated" + "${DEVICETREE_LOCATION}" "${GENERATED_DIR}" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" DEPENDS AlwaysRun "${DEVICETREE_LOCATION}/devicetree.yaml" # AlwaysRun ensures it always gets built COMMENT "Generating devicetree source files..." ) -add_custom_target(Generated DEPENDS "${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c") -set_source_files_properties("${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c" PROPERTIES GENERATED TRUE) -set_source_files_properties("${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.h" PROPERTIES GENERATED TRUE) +add_custom_target(Generated DEPENDS "${GENERATED_DIR}/devicetree.c") +set_source_files_properties("${GENERATED_DIR}/devicetree.c" PROPERTIES GENERATED TRUE) +set_source_files_properties("${GENERATED_DIR}/devicetree.h" PROPERTIES GENERATED TRUE) # Update target for generated code -target_sources(${COMPONENT_LIB} PRIVATE "${CMAKE_SOURCE_DIR}/Firmware/Generated/devicetree.c") -target_include_directories(${COMPONENT_LIB} PRIVATE "${CMAKE_SOURCE_DIR}/Firmware/Generated") +target_sources(${COMPONENT_LIB} PRIVATE "${GENERATED_DIR}/devicetree.c") +target_include_directories(${COMPONENT_LIB} PRIVATE "${GENERATED_DIR}")