Create a CMake option for toggling RetroAchievements

This commit is contained in:
Chase Harkcom 2026-02-18 00:44:22 -07:00
parent 99d64caaf7
commit 30beb5d972
6 changed files with 24 additions and 4 deletions

View File

@ -136,6 +136,8 @@ option(ENABLE_SSE42 "Enable SSE4.2 optimizations on x86_64" ON)
option(ENABLE_DEVELOPER_OPTIONS "Enable functionality targeted at emulator developers" OFF)
option(ENABLE_RETROACHIEVEMENTS "Build with RetroAchievements support" OFF)
# Compile options
CMAKE_DEPENDENT_OPTION(COMPILE_WITH_DWARF "Add DWARF debugging information" ${IS_DEBUG_BUILD} "MINGW" OFF)
option(ENABLE_LTO "Enable link time optimization" ${DEFAULT_ENABLE_LTO})

View File

@ -516,4 +516,6 @@ else()
endif()
# rcheevos
add_subdirectory(rcheevos)
if (ENABLE_RETROACHIEVEMENTS)
add_subdirectory(rcheevos)
endif()

View File

@ -182,13 +182,17 @@ if(ENABLE_DEVELOPER_OPTIONS)
add_compile_definitions(ENABLE_DEVELOPER_OPTIONS)
endif()
if (ENABLE_RETROACHIEVEMENTS)
add_compile_definitions(ENABLE_RETROACHIEVEMENTS)
add_subdirectory(rcheevos_integration)
endif()
add_subdirectory(common)
add_subdirectory(core)
add_subdirectory(video_core)
add_subdirectory(audio_core)
add_subdirectory(network)
add_subdirectory(input_common)
add_subdirectory(rcheevos_integration)
if (ENABLE_TESTS)
add_subdirectory(tests)

View File

@ -500,10 +500,14 @@ add_library(citra_core STATIC
create_target_directory_groups(citra_core)
target_link_libraries(citra_core PUBLIC citra_common PRIVATE audio_core network video_core rcheevos_integration)
target_link_libraries(citra_core PUBLIC citra_common PRIVATE audio_core network video_core)
target_link_libraries(citra_core PRIVATE Boost::boost Boost::serialization Boost::iostreams httplib)
target_link_libraries(citra_core PUBLIC dds-ktx PRIVATE cryptopp fmt lodepng open_source_archives)
if (ENABLE_RETROACHIEVEMENTS)
target_link_libraries(citra_core PUBLIC rcheevos_integration)
endif()
if (ENABLE_WEB_SERVICE)
target_link_libraries(citra_core PRIVATE web_service)
endif()

View File

@ -73,7 +73,11 @@ Core::Timing& Global() {
return System::GetInstance().CoreTiming();
}
System::System() : movie{*this}, cheat_engine{*this}, rcheevos_client{*this} {}
System::System() : movie{*this}, cheat_engine{*this}
#ifdef ENABLE_RETROACHIEVEMENTS
, rcheevos_client{*this}
#endif
{}
System::~System() = default;
@ -591,8 +595,10 @@ System::ResultStatus System::Init(Frontend::EmuWindow& emu_window,
plg_ldr->SetAllowGameChangeState(Settings::values.allow_plugin_loader.GetValue());
}
#ifdef ENABLE_RETROACHIEVEMENTS
rcheevos_client.InitializeClient();
rcheevos_client.LoginRetroachievementsUser("", "");
#endif
LOG_DEBUG(Core, "Initialized OK");

View File

@ -440,8 +440,10 @@ private:
/// Cheats manager
Cheats::CheatEngine cheat_engine;
#ifdef ENABLE_RETROACHIEVEMENTS
/// RetroAchievements
RcheevosClient rcheevos_client;
#endif
/// Video dumper backend
std::shared_ptr<VideoDumper::Backend> video_dumper;