feat: enable gRPC in CI builds and update Abseil dependencies

- 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.
This commit is contained in:
scawful
2025-11-05 11:19:43 -05:00
parent a4a826274a
commit 27131ba449
3 changed files with 43 additions and 17 deletions

View File

@@ -131,45 +131,45 @@
"name": "ci-linux",
"inherits": "base",
"displayName": "CI Build - Linux",
"description": "Fast, reliable Linux CI build without gRPC",
"description": "CI build with gRPC enabled (uses caching for speed)",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "OFF",
"YAZE_ENABLE_GRPC": "ON",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "OFF",
"YAZE_ENABLE_ROM_TESTS": "OFF",
"YAZE_MINIMAL_BUILD": "ON"
"YAZE_MINIMAL_BUILD": "OFF"
}
},
{
"name": "ci-macos",
"inherits": "base",
"displayName": "CI Build - macOS",
"description": "Fast, reliable macOS CI build without gRPC",
"description": "CI build with gRPC enabled (uses caching for speed)",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "OFF",
"YAZE_ENABLE_GRPC": "ON",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "OFF",
"YAZE_ENABLE_ROM_TESTS": "OFF",
"YAZE_MINIMAL_BUILD": "ON"
"YAZE_MINIMAL_BUILD": "OFF"
}
},
{
"name": "ci-windows",
"inherits": "windows-base",
"displayName": "CI Build - Windows",
"description": "Fast, reliable Windows CI build without gRPC",
"description": "CI build with gRPC enabled (uses MSVC-compatible version 1.67.1)",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "OFF",
"YAZE_ENABLE_GRPC": "ON",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "OFF",
"YAZE_ENABLE_ROM_TESTS": "OFF",
"YAZE_MINIMAL_BUILD": "ON"
"YAZE_MINIMAL_BUILD": "OFF"
}
},
{

View File

@@ -30,8 +30,9 @@ include(cmake/dependencies/imgui.cmake)
# Debug: message(STATUS "After ImGui setup, YAZE_IMGUI_TARGETS = '${YAZE_IMGUI_TARGETS}'")
list(APPEND YAZE_ALL_DEPENDENCIES ${YAZE_IMGUI_TARGETS})
# Abseil is required for failure_signal_handler and other utilities
# Include it always, not just when gRPC is enabled
# Abseil is required for failure_signal_handler, status, and other utilities
# Only include standalone Abseil when gRPC is disabled - when gRPC is enabled,
# it provides its own bundled Abseil via CPM
if(NOT YAZE_ENABLE_GRPC)
include(cmake/absl.cmake)
endif()

View File

@@ -100,21 +100,46 @@ target_link_libraries(yaze_grpc_deps INTERFACE
protobuf::libprotobuf
)
# Export Abseil targets that are commonly used
# Export Abseil targets from gRPC's bundled Abseil
# When gRPC_ABSL_PROVIDER is "module", gRPC fetches and builds Abseil
# All Abseil targets are available, we just need to list them
# Note: All targets are available even if not listed here, but listing ensures consistency
set(ABSL_TARGETS
absl::base
absl::config
absl::core_headers
absl::flags
absl::flags_parse
absl::status
absl::statusor
absl::utility
absl::memory
absl::container_memory
absl::strings
absl::str_format
absl::synchronization
absl::cord
absl::hash
absl::time
absl::status
absl::statusor
absl::flags
absl::flags_parse
absl::flags_usage
absl::flags_commandlineflag
absl::flags_marshalling
absl::flags_private_handle_accessor
absl::flags_program_name
absl::flags_config
absl::flags_reflection
absl::examine_stack
absl::stacktrace
absl::failure_signal_handler
absl::flat_hash_map
absl::synchronization
absl::symbolize
)
# Only expose absl::int128 when it's supported without warnings
if(NOT WIN32)
list(APPEND ABSL_TARGETS absl::int128)
endif()
# Export gRPC targets for use in other CMake files
set(YAZE_GRPC_TARGETS
grpc::grpc++