From ff0af326751db816f2b6df847607cf90030b6f38 Mon Sep 17 00:00:00 2001 From: oltolm Date: Sat, 19 Jul 2025 23:45:04 +0200 Subject: [PATCH] cmake: fix linking to RetroAchievements The order of libraries on the command line matters for GNU ld. Properly define dependencies to satisfy the linker. --- Externals/rcheevos/CMakeLists.txt | 18 ++++++++++-------- Source/Core/DiscIO/CMakeLists.txt | 5 +++++ Source/Core/DolphinQt/CMakeLists.txt | 3 --- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/Externals/rcheevos/CMakeLists.txt b/Externals/rcheevos/CMakeLists.txt index e1a857488b..dbb3b87858 100644 --- a/Externals/rcheevos/CMakeLists.txt +++ b/Externals/rcheevos/CMakeLists.txt @@ -61,13 +61,15 @@ dolphin_disable_warnings(rcheevos) target_include_directories(rcheevos PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/rcheevos/include") target_include_directories(rcheevos INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}") -target_compile_definitions(rcheevos PRIVATE "RC_DISABLE_LUA=1" "RCHEEVOS_URL_SSL") -target_compile_definitions(rcheevos PRIVATE "RC_CLIENT_SUPPORTS_HASH") -target_compile_definitions(rcheevos PRIVATE "RC_CLIENT_SUPPORTS_EXTERNAL") -target_compile_definitions(rcheevos PRIVATE "RC_HASH_NO_ENCRYPTED") -target_compile_definitions(rcheevos PRIVATE "RC_HASH_NO_ROM") -target_compile_definitions(rcheevos PRIVATE "RC_HASH_NO_ZIP") -if(CMAKE_SYSTEM_NAME MATCHES "Windows") - target_compile_definitions(rcheevos PRIVATE "RC_CLIENT_SUPPORTS_RAINTEGRATION") +target_compile_definitions(rcheevos PUBLIC "RC_DISABLE_LUA=1" "RCHEEVOS_URL_SSL") +target_compile_definitions(rcheevos PUBLIC "RC_CLIENT_SUPPORTS_HASH") +target_compile_definitions(rcheevos PUBLIC "RC_CLIENT_SUPPORTS_EXTERNAL") +target_compile_definitions(rcheevos PUBLIC "RC_HASH_NO_ENCRYPTED") +target_compile_definitions(rcheevos PUBLIC "RC_HASH_NO_ROM") +target_compile_definitions(rcheevos PUBLIC "RC_HASH_NO_ZIP") +if(WIN32) + if(RC_CLIENT_SUPPORTS_RAINTEGRATION) + target_compile_definitions(rcheevos PUBLIC RC_CLIENT_SUPPORTS_RAINTEGRATION) + endif() target_compile_definitions(rcheevos PRIVATE "_CRT_SECURE_NO_WARNINGS") endif() diff --git a/Source/Core/DiscIO/CMakeLists.txt b/Source/Core/DiscIO/CMakeLists.txt index 884f3de4f2..550083a361 100644 --- a/Source/Core/DiscIO/CMakeLists.txt +++ b/Source/Core/DiscIO/CMakeLists.txt @@ -84,3 +84,8 @@ if(MSVC) # Add precompiled header target_link_libraries(discio PRIVATE use_pch) endif() + +if(USE_RETRO_ACHIEVEMENTS) + target_link_libraries(discio PUBLIC rcheevos) + target_compile_definitions(discio PUBLIC -DUSE_RETRO_ACHIEVEMENTS) +endif() diff --git a/Source/Core/DolphinQt/CMakeLists.txt b/Source/Core/DolphinQt/CMakeLists.txt index 418bd11564..1a8c84d3b1 100644 --- a/Source/Core/DolphinQt/CMakeLists.txt +++ b/Source/Core/DolphinQt/CMakeLists.txt @@ -681,7 +681,4 @@ endif() if(USE_RETRO_ACHIEVEMENTS) target_link_libraries(dolphin-emu PRIVATE rcheevos) target_compile_definitions(dolphin-emu PRIVATE -DUSE_RETRO_ACHIEVEMENTS) - if(RC_CLIENT_SUPPORTS_RAINTEGRATION) - target_compile_definitions(dolphin-emu PRIVATE -DRC_CLIENT_SUPPORTS_RAINTEGRATION) - endif() endif()