diff --git a/.gitmodules b/.gitmodules index 5581b407f2..e47df41365 100644 --- a/.gitmodules +++ b/.gitmodules @@ -36,3 +36,6 @@ [submodule "3rdparty/zstd/zstd"] path = 3rdparty/zstd/zstd url = https://github.com/facebook/zstd.git +[submodule "3rdparty/rcheevos/rcheevos"] + path = 3rdparty/rcheevos/rcheevos + url = https://github.com/RetroAchievements/rcheevos.git diff --git a/3rdparty/rcheevos/CMakeLists.txt b/3rdparty/rcheevos/CMakeLists.txt new file mode 100644 index 0000000000..34f647a1cb --- /dev/null +++ b/3rdparty/rcheevos/CMakeLists.txt @@ -0,0 +1,47 @@ +add_library(rcheevos + rcheevos/include/rc_api_editor.h + rcheevos/include/rc_api_info.h + rcheevos/include/rc_api_request.h + rcheevos/include/rc_api_runtime.h + rcheevos/include/rc_api_user.h + rcheevos/include/rc_consoles.h + rcheevos/include/rc_error.h + rcheevos/include/rc_hash.h + rcheevos/include/rcheevos.h + rcheevos/include/rc_runtime.h + rcheevos/include/rc_runtime_types.h + rcheevos/include/rc_url.h + rcheevos/src/rapi/rc_api_common.c + rcheevos/src/rapi/rc_api_common.h + rcheevos/src/rapi/rc_api_editor.c + rcheevos/src/rapi/rc_api_info.c + rcheevos/src/rapi/rc_api_runtime.c + rcheevos/src/rapi/rc_api_user.c + rcheevos/src/rcheevos/alloc.c + rcheevos/src/rcheevos/compat.c + rcheevos/src/rcheevos/condition.c + rcheevos/src/rcheevos/condset.c + rcheevos/src/rcheevos/consoleinfo.c + rcheevos/src/rcheevos/format.c + rcheevos/src/rcheevos/lboard.c + rcheevos/src/rcheevos/memref.c + rcheevos/src/rcheevos/operand.c + rcheevos/src/rcheevos/rc_compat.h + rcheevos/src/rcheevos/rc_internal.h + rcheevos/src/rcheevos/rc_validate.c + rcheevos/src/rcheevos/rc_validate.h + rcheevos/src/rcheevos/richpresence.c + rcheevos/src/rcheevos/runtime.c + rcheevos/src/rcheevos/runtime_progress.c + rcheevos/src/rcheevos/trigger.c + rcheevos/src/rcheevos/value.c + rcheevos/src/rhash/hash.c + rcheevos/src/rhash/md5.c + rcheevos/src/rhash/md5.h + rcheevos/src/rurl/url.c +) + +target_include_directories(rcheevos PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/rcheevos/include") +target_include_directories(rcheevos INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/rcheevos/include") +target_compile_definitions(rcheevos PRIVATE "RC_DISABLE_LUA=1" "RCHEEVOS_URL_SSL") + diff --git a/3rdparty/rcheevos/rcheevos b/3rdparty/rcheevos/rcheevos new file mode 160000 index 0000000000..31f8788fe0 --- /dev/null +++ b/3rdparty/rcheevos/rcheevos @@ -0,0 +1 @@ +Subproject commit 31f8788fe0e694e99db7ce138d45a655c556fa96 diff --git a/3rdparty/rcheevos/rcheevos.vcxproj b/3rdparty/rcheevos/rcheevos.vcxproj new file mode 100644 index 0000000000..b8ff5285bd --- /dev/null +++ b/3rdparty/rcheevos/rcheevos.vcxproj @@ -0,0 +1,84 @@ + + + + + + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3} + + + + StaticLibrary + $(DefaultPlatformToolset) + MultiByte + true + true + false + + + + + + + + + + + + + + AllRules.ruleset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _CRT_NONSTDC_NO_WARNINGS;RC_DISABLE_LUA;RCHEEVOS_URL_SSL;%(PreprocessorDefinitions) + $(ProjectDir)rcheevos\include;%(AdditionalIncludeDirectories) + TurnOffAllWarnings + + + + + \ No newline at end of file diff --git a/3rdparty/rcheevos/rcheevos.vcxproj.filters b/3rdparty/rcheevos/rcheevos.vcxproj.filters new file mode 100644 index 0000000000..255fc643c5 --- /dev/null +++ b/3rdparty/rcheevos/rcheevos.vcxproj.filters @@ -0,0 +1,144 @@ + + + + + {0d8ef204-a486-4873-a41d-743ca6cbe840} + + + {3aa9379e-4fd1-4772-b18c-b899631a4161} + + + {c95da822-5bca-4274-b57e-d2092e76e8f1} + + + {01fc10b0-c122-461b-b75a-f97c8b89d627} + + + {f132daaf-af7e-4a43-8fcf-5651b805b43f} + + + + + rapi + + + rapi + + + rapi + + + rapi + + + rapi + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rhash + + + rhash + + + rurl + + + + + rapi + + + rcheevos + + + rcheevos + + + rcheevos + + + rhash + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + \ No newline at end of file diff --git a/PCSX2_qt.sln b/PCSX2_qt.sln index e6625ab273..a93d6d254c 100644 --- a/PCSX2_qt.sln +++ b/PCSX2_qt.sln @@ -57,6 +57,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "updater", "updater\updater. EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpuinfo", "3rdparty\cpuinfo\cpuinfo.vcxproj", "{7E183337-A7E9-460C-9D3D-568BC9F9BCC1}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rcheevos", "3rdparty\rcheevos\rcheevos.vcxproj", "{6D5B5AD9-1525-459B-939F-A5E1082AF6B3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug AVX2|x64 = Debug AVX2|x64 @@ -379,6 +381,18 @@ Global {7E183337-A7E9-460C-9D3D-568BC9F9BCC1}.Release AVX2|x64.Build.0 = Release|x64 {7E183337-A7E9-460C-9D3D-568BC9F9BCC1}.Release|x64.ActiveCfg = Release|x64 {7E183337-A7E9-460C-9D3D-568BC9F9BCC1}.Release|x64.Build.0 = Release|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Debug AVX2|x64.ActiveCfg = Debug|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Debug AVX2|x64.Build.0 = Debug|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Debug|x64.ActiveCfg = Debug|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Debug|x64.Build.0 = Debug|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Devel AVX2|x64.ActiveCfg = Devel|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Devel AVX2|x64.Build.0 = Devel|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Devel|x64.ActiveCfg = Devel|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Devel|x64.Build.0 = Devel|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Release AVX2|x64.ActiveCfg = Release|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Release AVX2|x64.Build.0 = Release|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Release|x64.ActiveCfg = Release|x64 + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -406,6 +420,7 @@ Global {D45CEC7A-3171-40DD-975D-E1544CF16139} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} {A4323327-3F2B-4271-83D9-7F9A3C66B6B2} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} {7E183337-A7E9-460C-9D3D-568BC9F9BCC1} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} + {6D5B5AD9-1525-459B-939F-A5E1082AF6B3} = {78EBE642-7A4D-4EA7-86BE-5639C6646C38} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {0BC474EA-3628-45D3-9DBC-E22D0B7E0F77} diff --git a/cmake/BuildParameters.cmake b/cmake/BuildParameters.cmake index 87e68f8415..7fb4cb2ca2 100644 --- a/cmake/BuildParameters.cmake +++ b/cmake/BuildParameters.cmake @@ -38,6 +38,7 @@ if(DISABLE_BUILD_DATE OR openSUSE) endif() option(USE_VTUNE "Plug VTUNE to profile GS JIT.") +option(USE_ACHIEVEMENTS "Build with RetroAchievements support" ON) #------------------------------------------------------------------------------- # Graphical option diff --git a/cmake/SearchForStuff.cmake b/cmake/SearchForStuff.cmake index b061982e62..18c6fd0527 100644 --- a/cmake/SearchForStuff.cmake +++ b/cmake/SearchForStuff.cmake @@ -234,6 +234,11 @@ if(QT_BUILD) # We use the bundled (latest) SDL version for Qt. find_optional_system_library(SDL2 3rdparty/sdl2 2.0.22) + + # rcheevos backend for RetroAchievements. + if(USE_ACHIEVEMENTS) + add_subdirectory(3rdparty/rcheevos EXCLUDE_FROM_ALL) + endif() endif() if(NOT WIN32 AND QT_BUILD)