diff --git a/CMakeLists.txt b/CMakeLists.txt index 65e06b69c..0bc68e6bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -380,6 +380,11 @@ endif() enable_testing() add_subdirectory(externals) +# See externals/CMakeLists.txt +foreach(def ${CRYPTOPP_COMPILE_DEFINITIONS}) + add_definitions(-D${def}) +endforeach() + # Boost if (USE_SYSTEM_BOOST) find_package(Boost 1.70.0 COMPONENTS serialization REQUIRED) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 8ccb0e572..a2cdb3624 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -35,6 +35,12 @@ set(CRYPTOPP_INSTALL OFF) set(CRYPTOPP_SOURCES "${CMAKE_SOURCE_DIR}/externals/cryptopp") add_subdirectory(cryptopp-cmake) +# HACK: Mismatch between compilation of CryptoPP and headers used in Citra can cause runtime issues. +# Pull out the compile definitions from CryptoPP and apply them to Citra as well to fix this. +# See: https://github.com/weidai11/cryptopp/issues/1191 +get_source_file_property(CRYPTOPP_COMPILE_DEFINITIONS ${CRYPTOPP_SOURCES}/cryptlib.cpp TARGET_DIRECTORY cryptopp COMPILE_DEFINITIONS) +set(CRYPTOPP_COMPILE_DEFINITIONS ${CRYPTOPP_COMPILE_DEFINITIONS} PARENT_SCOPE) + # HACK: The logic to set up the base include directory for CryptoPP does not work with Android SDK CMake 3.22.1. # Until there is a fixed version available, this code will detect and add in the proper include if it does not exist. if(ANDROID) diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index dc130ff36..f8674c850 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -827,6 +827,7 @@ void Config::SaveValues() { SaveLayoutValues(); SaveAudioValues(); SaveSystemValues(); + qt_config->sync(); } void Config::SaveAudioValues() {