GroveEngine/modules/InputModule/CMakeLists.txt
StillHammer 5cef0e25b0 fix: UIModule button interaction + JsonDataNode array children support
- Fix JsonDataNode::getChildReadOnly() to handle JSON array access by numeric index
- Fix test_ui_showcase to use JSON array for children (matching test_single_button pattern)
- Add visual test files: test_single_button, test_ui_showcase, test_sprite_debug
- Clean up debug logging from SpritePass, SceneCollector, UIButton, BgfxDevice

The root cause was that UITree couldn't access array children in JSON layouts.
UIButton hover/click now works correctly in both test files.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 18:23:16 +07:00

76 lines
2.2 KiB
CMake

# InputModule - Input capture and conversion module
# Converts native input events (SDL, GLFW, etc.) to IIO messages
# Find SDL2 - REQUIRED for InputModule to function
find_package(SDL2 QUIET)
# Check if SDL2 is available
set(SDL2_USABLE FALSE)
if(SDL2_FOUND)
set(SDL2_USABLE TRUE)
message(STATUS "InputModule: SDL2 found via find_package")
elseif(UNIX AND EXISTS "/usr/include/SDL2/SDL.h")
set(SDL2_USABLE TRUE)
message(STATUS "InputModule: SDL2 found at system path (Linux)")
endif()
if(NOT SDL2_USABLE)
message(WARNING "InputModule: SDL2 not found - InputModule will NOT be built")
message(STATUS " On Windows MinGW, install via: pacman -S mingw-w64-ucrt-x86_64-SDL2")
message(STATUS " On Ubuntu/Debian, install via: apt install libsdl2-dev")
# Set a variable so parent can know InputModule was skipped
set(GROVE_INPUT_MODULE_SKIPPED TRUE PARENT_SCOPE)
return()
endif()
add_library(InputModule SHARED
InputModule.cpp
Core/InputState.cpp
Core/InputConverter.cpp
Backends/SDLBackend.cpp
)
if(SDL2_FOUND)
target_include_directories(InputModule
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE
${CMAKE_SOURCE_DIR}/include
)
target_link_libraries(InputModule
PRIVATE
GroveEngine::impl
SDL2::SDL2
nlohmann_json::nlohmann_json
spdlog::spdlog
)
else()
# Linux system SDL2
target_include_directories(InputModule
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE
${CMAKE_SOURCE_DIR}/include
/usr/include/SDL2
)
target_link_libraries(InputModule
PRIVATE
GroveEngine::impl
SDL2
nlohmann_json::nlohmann_json
spdlog::spdlog
)
endif()
# Install to modules directory
install(TARGETS InputModule
LIBRARY DESTINATION modules
RUNTIME DESTINATION modules
)
# Set output directory for development builds
set_target_properties(InputModule PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/modules"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/modules"
)