Adds automatic detection of Homebrew-installed googletest to support
offline/sandboxed builds (e.g., Claude Code, restricted networks).
Changes:
- Add Homebrew detection logic to cmake/dependencies/testing.cmake
- Check /opt/homebrew/opt/googletest and /usr/local/opt/googletest
- Use brew --prefix googletest for dynamic detection
- Create target aliases (gtest -> GTest::gtest) for compatibility
- Only fetch from GitHub if no local installation found
- Update macOS build docs with yaml-cpp and googletest installation
Pattern mirrors existing yaml.cmake implementation. Complements the
pre-existing yaml-cpp Homebrew fallback to minimize network dependencies.
Tested with: brew install googletest (1.17.0, 2.4MB)
Co-Authored-By: Claude <noreply@anthropic.com>
- Moved all third-party libraries (SDL, ImGui, Asar, etc.) from `src/lib/` and `third_party/` to a new `ext/` directory for better organization and clarity in dependency management.
- Updated CMake configuration to reflect the new paths, ensuring all targets and includes point to the `ext/` directory.
- Enhanced CMake presets to support new build options for AI and gRPC features, improving modularity and build flexibility.
- Added new feature flags for agent UI and remote automation, allowing for more granular control over build configurations.
- Updated documentation to reflect changes in the project structure and build options, ensuring clarity for contributors and users.
- Added a workaround to prevent utf8_range export errors in gRPC 1.67.1 by disabling its installation.
- Set CMAKE_SKIP_INSTALL_RULES to TRUE during gRPC loading to avoid conflicts with Abseil installation settings.
- Re-enabled installation rules after gRPC is loaded to maintain proper build configuration.
- Updated the CMake configuration to load testing dependencies before gRPC when both are enabled, preventing export errors related to gmock.
- Ensured that testing dependencies are loaded after gRPC if tests are enabled but gRPC is not, maintaining proper dependency order.
- Added logic to guard CMake's package lookup for gRPC, ensuring consistent toolchain usage and preventing conflicts with system-installed versions.
- Implemented checks for target availability and improved error handling for missing gRPC components, enhancing build reliability.
- Updated gRPC configuration to disable installation of protobuf and Abseil, streamlining the build process and reducing unnecessary dependencies.
- This change aligns with ongoing efforts to enhance build efficiency and maintainability across platforms.
- Updated CI presets for Linux, macOS, and Windows to enable gRPC, improving build performance with caching.
- Adjusted Abseil inclusion logic to only include standalone Abseil when gRPC is disabled, ensuring compatibility and reducing unnecessary dependencies.
- Enhanced the list of exported Abseil targets from gRPC's bundled version for better utility access.
This change aims to streamline CI processes while maintaining the necessary dependencies for successful builds.
- Removed PARENT_SCOPE from various dependency target definitions in CMake files (grpc.cmake, imgui.cmake, sdl2.cmake, testing.cmake, yaml.cmake).
- Ensured that all targets are set locally for better clarity and management.
Benefits:
- Simplifies the dependency management process and improves the readability of CMake configurations.
- Incremented cache revision in dependencies.lock to trigger rebuild.
- Deleted obsolete imgui.cmake file to streamline project structure.
- Updated imgui.cmake to set C++ standard requirement for ImGui and its test engine.
Benefits:
- Simplifies dependency management and ensures compatibility with C++17.
- Cleans up unused files, improving project maintainability.
- 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.