This commit implements the fixes identified in CI_BUILD_FAILURE_ANALYSIS.md
to ensure stable, fast CI builds across all platforms.
Changes:
1. Add platform-specific CI presets (ci-linux, ci-macos, ci-windows)
- Disable gRPC to avoid 30-40 min build times and MSVC errors
- Use minimal build configuration for faster, reliable CI
- Expected build time reduction: ~40 min -> 5-10 min
2. Update CI workflow to use platform-specific presets
- Build job now uses ci-linux, ci-macos, ci-windows
- Test job now uses platform-specific presets
- Ensures consistent behavior across all platforms
3. Fix gRPC version for Windows MSVC compatibility
- Downgrade from v1.75.1 to v1.67.1
- v1.75.1 has UPB compilation errors on Windows MSVC
- v1.67.1 is tested and stable on all platforms
4. Update test presets to use 'minimal' configuration
- Ensures test presets work on all platforms
- Consistent with new CI approach
Benefits:
- Eliminates Windows MSVC gRPC compilation errors
- Prevents Linux CI timeout issues from long gRPC builds
- Reduces CI build time by ~75% (40 min -> 5-10 min)
- Maintains build stability for releases
- No symbol linkage conflicts (verified)
Technical Notes:
- Test executables use gtest_main (no main() conflicts)
- Main app (yaze), emulator (yaze_emu), and tests are separate executables
- Shared libraries (yaze_core, yaze_gfx, etc.) properly isolated
- gRPC disabled in CI but still available for local dev builds
- Added new entries to `.pre-commit-config.yaml`, `cmake-format.yaml`, and `.github/dependabot.yml` to improve code quality checks and dependency updates.
- Enhanced GitHub Actions workflows by adding new steps for testing and build retention.
- Introduced support for the nlohmann_json library in CMake, allowing for conditional inclusion based on the `YAZE_ENABLE_JSON` option.
- Updated CMake configurations to streamline SDL2 and gRPC integration, ensuring proper linking and target management.
Benefits:
- Improves code quality and consistency through automated checks and formatting.
- Enhances dependency management and build reliability across platforms.
- Provides flexibility for users to enable optional features, improving overall functionality.
- Updated `.clangd` configuration to include additional include paths and feature flags tailored for ROM hacking workflows, optimizing IntelliSense support.
- Introduced `.pre-commit-config.yaml` for managing code quality checks and formatting, ensuring consistent code style across the project.
- Added `cmake-format.yaml` for CMake formatting configuration, promoting adherence to style guidelines.
- Enhanced CI workflows to include new actions for testing and building, improving overall reliability and efficiency in the development process.
Benefits:
- Streamlines development setup and improves code quality through automated checks.
- Facilitates better collaboration by ensuring consistent coding standards and configurations.