diff --git a/src/app/core/core_library.cmake b/src/app/core/core_library.cmake index 294e7d1f..ffd7629b 100644 --- a/src/app/core/core_library.cmake +++ b/src/app/core/core_library.cmake @@ -148,9 +148,11 @@ if(YAZE_WITH_GRPC) ) # On Windows, force whole-archive linking for protobuf to ensure all symbols are included - if(MSVC) - target_link_options(yaze_core_lib PUBLIC /WHOLEARCHIVE:$) - endif() +if(MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_link_options(yaze_core_lib PUBLIC /WHOLEARCHIVE:$) +elseif(MSVC) + message(STATUS "○ Skipping /WHOLEARCHIVE for libprotobuf in yaze_core_lib (clang-cl)") +endif() message(STATUS " - gRPC test harness + ROM service enabled") endif() diff --git a/src/app/net/net_library.cmake b/src/app/net/net_library.cmake index 3123b7cd..5e5171ea 100644 --- a/src/app/net/net_library.cmake +++ b/src/app/net/net_library.cmake @@ -87,8 +87,10 @@ if(YAZE_WITH_GRPC) ) # On Windows, force whole-archive linking for protobuf to ensure all symbols are included - if(MSVC) + if(MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") target_link_options(yaze_net PUBLIC /WHOLEARCHIVE:$) + elseif(MSVC) + message(STATUS "○ Skipping /WHOLEARCHIVE for libprotobuf in yaze_net (clang-cl)") endif() message(STATUS " - gRPC ROM service enabled") diff --git a/src/cli/agent.cmake b/src/cli/agent.cmake index dd87ab37..9e8daa1c 100644 --- a/src/cli/agent.cmake +++ b/src/cli/agent.cmake @@ -164,8 +164,10 @@ if(YAZE_WITH_GRPC) ) # On Windows, force whole-archive linking for protobuf to ensure all symbols are included - if(MSVC) + if(MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") target_link_options(yaze_agent PUBLIC /WHOLEARCHIVE:$) + elseif(MSVC) + message(STATUS "○ Skipping /WHOLEARCHIVE for libprotobuf (clang-cl)") endif() # Note: YAZE_WITH_GRPC is defined globally via add_compile_definitions in root CMakeLists.txt diff --git a/src/cli/z3ed.cmake b/src/cli/z3ed.cmake index ac5972bf..d62d7ee6 100644 --- a/src/cli/z3ed.cmake +++ b/src/cli/z3ed.cmake @@ -42,7 +42,9 @@ if(YAZE_WITH_GRPC) target_link_libraries(z3ed PRIVATE grpc++ grpc++_reflection libprotobuf) # On Windows, force whole-archive linking for protobuf to ensure all symbols are included - if(MSVC) - target_link_options(z3ed PRIVATE /WHOLEARCHIVE:$) - endif() -endif() \ No newline at end of file +if(MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_link_options(z3ed PRIVATE /WHOLEARCHIVE:$) +elseif(MSVC) + message(STATUS "○ Skipping /WHOLEARCHIVE for libprotobuf in z3ed (clang-cl)") +endif() +endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 1c0ec492..9293a175 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -49,7 +49,11 @@ if(YAZE_BUILD_TESTS) target_link_options(${suite_name} PRIVATE /STACK:16777216) # Force whole-archive linking for protobuf to ensure all symbols are included if(YAZE_WITH_GRPC) - target_link_options(${suite_name} PRIVATE /WHOLEARCHIVE:$) + if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_link_options(${suite_name} PRIVATE /WHOLEARCHIVE:$) + else() + message(STATUS "○ Skipping /WHOLEARCHIVE for libprotobuf in ${suite_name} (clang-cl)") + endif() endif() else() target_link_options(${suite_name} PRIVATE -Wl,--stack,16777216) @@ -153,4 +157,4 @@ if(YAZE_BUILD_TESTS) ) yaze_add_test_suite(yaze_test_benchmark "benchmark" OFF ${BENCHMARK_TEST_SOURCES}) -endif() \ No newline at end of file +endif()