diff --git a/CMakeLists.txt b/CMakeLists.txt index 542fce810..90388bf09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -684,3 +684,42 @@ if(ENABLE_QT AND UNIX AND NOT APPLE) install(FILES "dist/org.citron_emu.citron.metainfo.xml" DESTINATION "share/metainfo") endif() + +# PGO Configuration +option(CITRON_ENABLE_PGO_INSTRUMENT "Enable Profile-Guided Optimization instrumentation build" OFF) +option(CITRON_ENABLE_PGO_OPTIMIZE "Enable Profile-Guided Optimization optimization build" OFF) + +if(MSVC) + if(CITRON_ENABLE_PGO_INSTRUMENT) + string(APPEND CMAKE_CXX_FLAGS_RELEASE " /GL /LTCG:PGINSTRUMENT") + string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " /LTCG:PGINSTRUMENT") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " /LTCG:PGINSTRUMENT") + elseif(CITRON_ENABLE_PGO_OPTIMIZE) + string(APPEND CMAKE_CXX_FLAGS_RELEASE " /GL /LTCG:PGOPTIMIZE") + string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " /LTCG:PGOPTIMIZE") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " /LTCG:PGOPTIMIZE") + endif() +else() + # GCC and Clang PGO flags + if(CITRON_ENABLE_PGO_INSTRUMENT) + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + string(APPEND CMAKE_CXX_FLAGS_RELEASE " -fprofile-instr-generate") + string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " -fprofile-instr-generate") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " -fprofile-instr-generate") + else() # GCC + string(APPEND CMAKE_CXX_FLAGS_RELEASE " -fprofile-generate") + string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " -fprofile-generate") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " -fprofile-generate") + endif() + elseif(CITRON_ENABLE_PGO_OPTIMIZE) + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + string(APPEND CMAKE_CXX_FLAGS_RELEASE " -fprofile-instr-use=default.profdata") + string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " -fprofile-instr-use=default.profdata") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " -fprofile-instr-use=default.profdata") + else() # GCC + string(APPEND CMAKE_CXX_FLAGS_RELEASE " -fprofile-use") + string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " -fprofile-use") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " -fprofile-use") + endif() + endif() +endif() diff --git a/externals/Vulkan-Headers b/externals/Vulkan-Headers index 952f776f6..0f0cfd88d 160000 --- a/externals/Vulkan-Headers +++ b/externals/Vulkan-Headers @@ -1 +1 @@ -Subproject commit 952f776f6573aafbb62ea717d871cd1d6816c387 +Subproject commit 0f0cfd88d7e6ece3ca6456df692f0055bde94be7 diff --git a/externals/Vulkan-Utility-Libraries b/externals/Vulkan-Utility-Libraries index 5f41f2a9b..50563f483 160000 --- a/externals/Vulkan-Utility-Libraries +++ b/externals/Vulkan-Utility-Libraries @@ -1 +1 @@ -Subproject commit 5f41f2a9bf3589dc5d1791d42ff46f1abe873f2b +Subproject commit 50563f48368d75281bc2fb1c3407dc531ce28910 diff --git a/externals/vcpkg b/externals/vcpkg index efb1e7436..cd1099f42 160000 --- a/externals/vcpkg +++ b/externals/vcpkg @@ -1 +1 @@ -Subproject commit efb1e7436979a30c4d3e5ab2375fd8e2e461d541 +Subproject commit cd1099f42a3c2ee28dc68e3db3f6f88658982736