diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake index fb32791a..f06ba4e4 100644 --- a/cmake/dependencies.cmake +++ b/cmake/dependencies.cmake @@ -105,6 +105,13 @@ else() set(YAZE_PROTOBUF_TARGET "") endif() +set(YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS) +foreach(_yaze_proto_candidate IN LISTS YAZE_PROTOBUF_TARGETS) + if(NOT _yaze_proto_candidate MATCHES "lite") + list(APPEND YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS ${_yaze_proto_candidate}) + endif() +endforeach() + # SDL2 include(cmake/sdl2.cmake) diff --git a/src/app/app.cmake b/src/app/app.cmake index f43a7f1c..ecf76291 100644 --- a/src/app/app.cmake +++ b/src/app/app.cmake @@ -42,8 +42,8 @@ target_link_libraries(yaze PRIVATE ) if(YAZE_WITH_GRPC AND YAZE_PROTOBUF_TARGETS) target_link_libraries(yaze PRIVATE ${YAZE_PROTOBUF_TARGETS}) - if(MSVC) - foreach(_yaze_proto_target IN LISTS 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:$) endforeach() endif() diff --git a/src/app/core/core_library.cmake b/src/app/core/core_library.cmake index 9812c321..87d867c5 100644 --- a/src/app/core/core_library.cmake +++ b/src/app/core/core_library.cmake @@ -147,8 +147,8 @@ if(YAZE_WITH_GRPC) ) if(YAZE_PROTOBUF_TARGETS) target_link_libraries(yaze_core_lib PUBLIC ${YAZE_PROTOBUF_TARGETS}) - if(MSVC) - foreach(_yaze_proto_target IN LISTS YAZE_PROTOBUF_TARGETS) + if(MSVC AND YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS) + foreach(_yaze_proto_target IN LISTS YAZE_PROTOBUF_WHOLEARCHIVE_TARGETS) target_link_options(yaze_core_lib PUBLIC /WHOLEARCHIVE:$) endforeach() endif() diff --git a/src/app/editor/editor_library.cmake b/src/app/editor/editor_library.cmake index 14a7bcbe..9bc6f0ec 100644 --- a/src/app/editor/editor_library.cmake +++ b/src/app/editor/editor_library.cmake @@ -151,8 +151,8 @@ if(YAZE_WITH_GRPC) ) if(YAZE_PROTOBUF_TARGETS) target_link_libraries(yaze_editor PRIVATE ${YAZE_PROTOBUF_TARGETS}) - if(MSVC) - foreach(_yaze_proto_target IN LISTS 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:$) endforeach() endif() diff --git a/src/app/net/net_library.cmake b/src/app/net/net_library.cmake index 39178472..e123149d 100644 --- a/src/app/net/net_library.cmake +++ b/src/app/net/net_library.cmake @@ -86,8 +86,8 @@ if(YAZE_WITH_GRPC) ) if(YAZE_PROTOBUF_TARGETS) target_link_libraries(yaze_net PUBLIC ${YAZE_PROTOBUF_TARGETS}) - if(MSVC) - foreach(_yaze_proto_target IN LISTS 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:$) endforeach() endif() diff --git a/src/cli/agent.cmake b/src/cli/agent.cmake index 10f227e6..60959a25 100644 --- a/src/cli/agent.cmake +++ b/src/cli/agent.cmake @@ -163,8 +163,8 @@ if(YAZE_WITH_GRPC) ) if(YAZE_PROTOBUF_TARGETS) target_link_libraries(yaze_agent PUBLIC ${YAZE_PROTOBUF_TARGETS}) - if(MSVC) - foreach(_yaze_proto_target IN LISTS 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:$) endforeach() endif() diff --git a/src/cli/z3ed.cmake b/src/cli/z3ed.cmake index 62ac38b6..a40ef931 100644 --- a/src/cli/z3ed.cmake +++ b/src/cli/z3ed.cmake @@ -42,8 +42,8 @@ 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) - foreach(_yaze_proto_target IN LISTS 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:$) endforeach() endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 4659a306..32416b48 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -48,8 +48,8 @@ if(YAZE_BUILD_TESTS) 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 YAZE_PROTOBUF_TARGETS) - foreach(_yaze_proto_target IN LISTS YAZE_PROTOBUF_TARGETS) + 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:$) endforeach() endif()