chore: update gRPC version to v1.75.1 and remove /WHOLEARCHIVE linking
- Upgraded gRPC version from v1.68.0 to v1.75.1 for improved compatibility across all platforms. - Removed /WHOLEARCHIVE linking for protobuf to prevent duplicate version resource errors in the dependency chain. - Updated status messages to reflect the latest gRPC version and build optimizations. Benefits: - Enhances build stability and compatibility with modern toolchains. - Simplifies linking process by avoiding unnecessary options that cause conflicts.
This commit is contained in:
@@ -116,19 +116,15 @@ if(APPLE AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||
set(ABSL_BUILD_TEST_HELPERS OFF CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
|
||||
# Declare gRPC with platform-specific versions
|
||||
# - macOS/Linux: v1.75.1 (has ARM64 + modern Clang fixes)
|
||||
# - Windows: v1.68.0 (stable, no protobuf resource file issues)
|
||||
# Declare gRPC version - using latest for all platforms
|
||||
# v1.75.1 has ARM64 + modern compiler fixes
|
||||
set(_GRPC_VERSION "v1.75.1")
|
||||
set(_GRPC_VERSION_REASON "Latest stable - ARM64 macOS + modern Clang/MSVC compatibility")
|
||||
|
||||
# Windows-specific: Disable BoringSSL ASM to avoid NASM build issues
|
||||
if(WIN32)
|
||||
set(_GRPC_VERSION "v1.68.0")
|
||||
set(_GRPC_VERSION_REASON "Windows clang-cl + MSVC compatibility, no protobuf LNK1241 errors")
|
||||
# Disable BoringSSL ASM to avoid NASM build issues on Windows
|
||||
# ASM optimizations cause NASM flag conflicts with clang-cl
|
||||
set(OPENSSL_NO_ASM ON CACHE BOOL "" FORCE)
|
||||
message(STATUS "Disabling BoringSSL ASM optimizations for Windows build compatibility")
|
||||
else()
|
||||
set(_GRPC_VERSION "v1.75.1")
|
||||
set(_GRPC_VERSION_REASON "ARM64 macOS + modern Clang compatibility")
|
||||
endif()
|
||||
|
||||
message(STATUS "FetchContent gRPC version: ${_GRPC_VERSION} (${_GRPC_VERSION_REASON})")
|
||||
|
||||
@@ -242,7 +242,7 @@ if(WIN32 AND YAZE_USE_VCPKG_GRPC)
|
||||
message(STATUS " vcpkg gRPC not found (expected if removed from vcpkg.json)")
|
||||
message(STATUS " Using FetchContent build (faster with caching)")
|
||||
message(STATUS " First build: ~10-15 min, subsequent: <1 min (cached)")
|
||||
message(STATUS " Using gRPC v1.68.0 (stable for Windows, no linker errors)")
|
||||
message(STATUS " Using gRPC v1.75.1 (latest stable)")
|
||||
message(STATUS " Note: BoringSSL ASM disabled for clang-cl compatibility")
|
||||
message(STATUS "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
|
||||
endif()
|
||||
|
||||
@@ -129,11 +129,7 @@ if(YAZE_WITH_GRPC)
|
||||
)
|
||||
if(YAZE_PROTOBUF_TARGETS)
|
||||
target_link_libraries(yaze_app_core_lib PUBLIC ${YAZE_PROTOBUF_TARGETS})
|
||||
if(MSVC AND YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
foreach(_yaze_proto_target IN LISTS YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
target_link_options(yaze_app_core_lib PUBLIC /WHOLEARCHIVE:$<TARGET_FILE:${_yaze_proto_target}>)
|
||||
endforeach()
|
||||
endif()
|
||||
# NOTE: Removed /WHOLEARCHIVE for protobuf - causes duplicate version.res in dependency chain
|
||||
endif()
|
||||
|
||||
message(STATUS " - gRPC ROM service + canvas automation enabled")
|
||||
@@ -207,11 +203,7 @@ target_link_libraries(yaze PRIVATE
|
||||
)
|
||||
if(YAZE_WITH_GRPC AND YAZE_PROTOBUF_TARGETS)
|
||||
target_link_libraries(yaze PRIVATE ${YAZE_PROTOBUF_TARGETS})
|
||||
if(MSVC AND YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
foreach(_yaze_proto_target IN LISTS YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
target_link_options(yaze PRIVATE /WHOLEARCHIVE:$<TARGET_FILE:${_yaze_proto_target}>)
|
||||
endforeach()
|
||||
endif()
|
||||
# NOTE: Removed /WHOLEARCHIVE - already linked transitively from libraries
|
||||
endif()
|
||||
|
||||
# Link test support library (yaze_editor needs TestManager)
|
||||
|
||||
@@ -157,11 +157,7 @@ if(YAZE_WITH_GRPC)
|
||||
)
|
||||
if(YAZE_PROTOBUF_TARGETS)
|
||||
target_link_libraries(yaze_editor PRIVATE ${YAZE_PROTOBUF_TARGETS})
|
||||
if(MSVC AND YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
foreach(_yaze_proto_target IN LISTS YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
target_link_options(yaze_editor PRIVATE /WHOLEARCHIVE:$<TARGET_FILE:${_yaze_proto_target}>)
|
||||
endforeach()
|
||||
endif()
|
||||
# NOTE: Removed /WHOLEARCHIVE for protobuf - causes duplicate version.res in dependency chain
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -86,11 +86,7 @@ if(YAZE_WITH_GRPC)
|
||||
)
|
||||
if(YAZE_PROTOBUF_TARGETS)
|
||||
target_link_libraries(yaze_net PUBLIC ${YAZE_PROTOBUF_TARGETS})
|
||||
if(MSVC AND YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
foreach(_yaze_proto_target IN LISTS YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
target_link_options(yaze_net PUBLIC /WHOLEARCHIVE:$<TARGET_FILE:${_yaze_proto_target}>)
|
||||
endforeach()
|
||||
endif()
|
||||
# NOTE: Removed /WHOLEARCHIVE for protobuf - causes duplicate version.res in dependency chain
|
||||
endif()
|
||||
|
||||
message(STATUS " - gRPC ROM service enabled")
|
||||
|
||||
@@ -163,11 +163,7 @@ if(YAZE_WITH_GRPC)
|
||||
)
|
||||
if(YAZE_PROTOBUF_TARGETS)
|
||||
target_link_libraries(yaze_agent PUBLIC ${YAZE_PROTOBUF_TARGETS})
|
||||
if(MSVC AND YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
foreach(_yaze_proto_target IN LISTS YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
target_link_options(yaze_agent PUBLIC /WHOLEARCHIVE:$<TARGET_FILE:${_yaze_proto_target}>)
|
||||
endforeach()
|
||||
endif()
|
||||
# NOTE: Removed /WHOLEARCHIVE for protobuf - causes duplicate version.res in dependency chain
|
||||
endif()
|
||||
|
||||
# Note: YAZE_WITH_GRPC is defined globally via add_compile_definitions in root CMakeLists.txt
|
||||
|
||||
@@ -42,10 +42,6 @@ if(YAZE_WITH_GRPC)
|
||||
target_link_libraries(z3ed PRIVATE grpc++ grpc++_reflection)
|
||||
if(YAZE_PROTOBUF_TARGETS)
|
||||
target_link_libraries(z3ed PRIVATE ${YAZE_PROTOBUF_TARGETS})
|
||||
if(MSVC AND YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
foreach(_yaze_proto_target IN LISTS YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
target_link_options(z3ed PRIVATE /WHOLEARCHIVE:$<TARGET_FILE:${_yaze_proto_target}>)
|
||||
endforeach()
|
||||
endif()
|
||||
# NOTE: Removed /WHOLEARCHIVE for protobuf - causes duplicate version.res in dependency chain
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -47,12 +47,8 @@ if(YAZE_BUILD_TESTS)
|
||||
message(STATUS "Configuring Windows stack size for ${suite_name} to 16MB")
|
||||
if(MSVC)
|
||||
target_link_options(${suite_name} PRIVATE /STACK:16777216)
|
||||
# Force whole-archive linking for protobuf to ensure all symbols are included
|
||||
if(YAZE_WITH_GRPC AND MSVC AND YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
foreach(_yaze_proto_target IN LISTS YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS)
|
||||
target_link_options(${suite_name} PRIVATE /WHOLEARCHIVE:$<TARGET_FILE:${_yaze_proto_target}>)
|
||||
endforeach()
|
||||
endif()
|
||||
# NOTE: Removed /WHOLEARCHIVE for protobuf - causes LNK1241 duplicate version.res
|
||||
# Protobuf symbols are already linked transitively from yaze_test_support
|
||||
else()
|
||||
target_link_options(${suite_name} PRIVATE -Wl,--stack,16777216)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user