diff --git a/CMakePresets.json b/CMakePresets.json index 502fa862..b641db41 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -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" } }, { diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index b14b73ea..4f8bbb71 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -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() diff --git a/cmake/dependencies/grpc.cmake b/cmake/dependencies/grpc.cmake index 44f2e240..e9718115 100644 --- a/cmake/dependencies/grpc.cmake +++ b/cmake/dependencies/grpc.cmake @@ -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++