From 742b3ced660a34ce3206284224dc2cd220a1b8fe Mon Sep 17 00:00:00 2001 From: Fire Cube Date: Wed, 18 Jun 2025 12:39:50 +0200 Subject: [PATCH 1/8] add CMakePresets.json --- CMakePresets.json | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 CMakePresets.json diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 000000000..6a446b46d --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,47 @@ +{ + "version": 3, + "cmakeMinimumRequired": { + "major": 3, + "minor": 24, + "patch": 0 + }, + "configurePresets": [ + { + "name": "x64-Clang-Debug", + "displayName": "Clang x64 Debug", + "generator": "Ninja", + "binaryDir": "${sourceDir}/Build/x64-Clang-Debug", + "cacheVariables": { + "CMAKE_C_COMPILER": "clang-cl", + "CMAKE_CXX_COMPILER": "clang-cl", + "CMAKE_BUILD_TYPE": "Debug", + "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-Debug" + + } + }, + { + "name": "x64-Clang-Release", + "displayName": "Clang x64 Release", + "generator": "Ninja", + "binaryDir": "${sourceDir}/Build/x64-Clang-Release", + "cacheVariables": { + "CMAKE_C_COMPILER": "clang-cl", + "CMAKE_CXX_COMPILER": "clang-cl", + "CMAKE_BUILD_TYPE": "Release", + "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-Release" + } + }, + { + "name": "x64-Clang-RelWithDebInfo", + "displayName": "Clang x64 RelWithDebInfo", + "generator": "Ninja", + "binaryDir": "${sourceDir}/Build/x64-Clang-RelWithDebInfo", + "cacheVariables": { + "CMAKE_C_COMPILER": "clang-cl", + "CMAKE_CXX_COMPILER": "clang-cl", + "CMAKE_BUILD_TYPE": "RelWithDebInfo", + "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-RelWithDebInfo" + } + } + ] +} From dd0365ffc75aa39cacda485ec580f8b70846e733 Mon Sep 17 00:00:00 2001 From: Fire Cube Date: Wed, 18 Jun 2025 13:41:26 +0200 Subject: [PATCH 2/8] Update REUSE.toml --- REUSE.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/REUSE.toml b/REUSE.toml index 662987611..5f5229e4b 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -5,6 +5,7 @@ path = [ "REUSE.toml", "crowdin.yml", "CMakeSettings.json", + "CMakePresets.json", ".github/FUNDING.yml", ".github/shadps4.png", ".github/workflows/scripts/update_translation.sh", From ddb11feeb7cefb392b18acd12b3f319146fea9da Mon Sep 17 00:00:00 2001 From: Fire Cube Date: Thu, 19 Jun 2025 20:51:34 +0200 Subject: [PATCH 3/8] fix vs --- CMakePresets.json | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 6a446b46d..c4d60b04e 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -1,5 +1,5 @@ { - "version": 3, + "version": 5, "cmakeMinimumRequired": { "major": 3, "minor": 24, @@ -16,7 +16,11 @@ "CMAKE_CXX_COMPILER": "clang-cl", "CMAKE_BUILD_TYPE": "Debug", "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-Debug" - + }, + "vendor": { + "microsoft.com/VisualStudioSettings/CMake/1.0": { + "intelliSenseMode": "windows-clang-x64" + } } }, { @@ -29,6 +33,11 @@ "CMAKE_CXX_COMPILER": "clang-cl", "CMAKE_BUILD_TYPE": "Release", "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-Release" + }, + "vendor": { + "microsoft.com/VisualStudioSettings/CMake/1.0": { + "intelliSenseMode": "windows-clang-x64" + } } }, { @@ -41,6 +50,11 @@ "CMAKE_CXX_COMPILER": "clang-cl", "CMAKE_BUILD_TYPE": "RelWithDebInfo", "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-RelWithDebInfo" + }, + "vendor": { + "microsoft.com/VisualStudioSettings/CMake/1.0": { + "intelliSenseMode": "windows-clang-x64" + } } } ] From 8a35cc992016b54be2b806d361ecc5cd87d19b33 Mon Sep 17 00:00:00 2001 From: Fire Cube Date: Sat, 21 Jun 2025 21:00:21 +0200 Subject: [PATCH 4/8] impl --- CMakeLists.txt | 2 ++ CMakePresets.json | 54 ++++++++++++++++++++++++++++++++++++++++++++++ cmake/FindQt.cmake | 12 +++++++++++ 3 files changed, 68 insertions(+) create mode 100644 cmake/FindQt.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index d8fe5f68b..80f326432 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -214,6 +214,8 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/common/scm_rev.cpp.in" "${CMAKE_ message("end git things, remote: ${GIT_REMOTE_NAME}, branch: ${GIT_BRANCH}") +include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/findQt.cmake") + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") find_package(Boost 1.84.0 CONFIG) find_package(FFmpeg 5.1.2 MODULE) diff --git a/CMakePresets.json b/CMakePresets.json index c4d60b04e..454b4e767 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -23,6 +23,24 @@ } } }, + { + "name": "x64-Clang-Debug-Qt", + "displayName": "Clang x64 Debug with Qt", + "generator": "Ninja", + "binaryDir": "${sourceDir}/Build/x64-Clang-Debug-Qt", + "cacheVariables": { + "CMAKE_C_COMPILER": "clang-cl", + "CMAKE_CXX_COMPILER": "clang-cl", + "CMAKE_BUILD_TYPE": "Debug", + "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-Debug-Qt", + "ENABLE_QT_GUI": "ON" + }, + "vendor": { + "microsoft.com/VisualStudioSettings/CMake/1.0": { + "intelliSenseMode": "windows-clang-x64" + } + } + }, { "name": "x64-Clang-Release", "displayName": "Clang x64 Release", @@ -40,6 +58,24 @@ } } }, + { + "name": "x64-Clang-Release-Qt", + "displayName": "Clang x64 Release with Qt", + "generator": "Ninja", + "binaryDir": "${sourceDir}/Build/x64-Clang-Release-Qt", + "cacheVariables": { + "CMAKE_C_COMPILER": "clang-cl", + "CMAKE_CXX_COMPILER": "clang-cl", + "CMAKE_BUILD_TYPE": "Release", + "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-Release-Qt", + "ENABLE_QT_GUI": "ON" + }, + "vendor": { + "microsoft.com/VisualStudioSettings/CMake/1.0": { + "intelliSenseMode": "windows-clang-x64" + } + } + }, { "name": "x64-Clang-RelWithDebInfo", "displayName": "Clang x64 RelWithDebInfo", @@ -56,6 +92,24 @@ "intelliSenseMode": "windows-clang-x64" } } + }, + { + "name": "x64-Clang-RelWithDebInfo-Qt", + "displayName": "Clang x64 RelWithDebInfo with Qt", + "generator": "Ninja", + "binaryDir": "${sourceDir}/Build/x64-Clang-RelWithDebInfo-Qt", + "cacheVariables": { + "CMAKE_C_COMPILER": "clang-cl", + "CMAKE_CXX_COMPILER": "clang-cl", + "CMAKE_BUILD_TYPE": "RelWithDebInfo", + "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-RelWithDebInfo-Qt", + "ENABLE_QT_GUI": "ON" + }, + "vendor": { + "microsoft.com/VisualStudioSettings/CMake/1.0": { + "intelliSenseMode": "windows-clang-x64" + } + } } ] } diff --git a/cmake/FindQt.cmake b/cmake/FindQt.cmake new file mode 100644 index 000000000..bff3b6a51 --- /dev/null +++ b/cmake/FindQt.cmake @@ -0,0 +1,12 @@ +if(WIN32 AND NOT CMAKE_PREFIX_PATH) + file(GLOB QT_KITS LIST_DIRECTORIES true "C:/Qt/*/msvc*") + list(SORT QT_KITS COMPARE NATURAL) + list(REVERSE QT_KITS) + list(GET QT_KITS 0 QT_PREFIX) + if(QT_PREFIX) + set(CMAKE_PREFIX_PATH "${QT_PREFIX}" CACHE PATH "Qt prefix auto‑detected" FORCE) + message(STATUS "Auto-detected Qt prefix: ${QT_PREFIX}") + else() + message(WARNING "findQt.cmake: no Qt‑Directory found in C:/Qt – please set CMAKE_PREFIX_PATH manually") + endif() +endif() From e4f19145d6ff111f48a26b42fa973bc6472bae83 Mon Sep 17 00:00:00 2001 From: Fire Cube Date: Sat, 21 Jun 2025 21:33:56 +0200 Subject: [PATCH 5/8] adjust CMakeSettings.json --- CMakeSettings.json | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/CMakeSettings.json b/CMakeSettings.json index bb522fcfc..e1ed36887 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -12,6 +12,18 @@ "inheritEnvironments": [ "clang_cl_x64_x64" ], "intelliSenseMode": "windows-clang-x64" }, + { + "name": "x64-Clang-Release-Qt", + "generator": "Ninja", + "configurationType": "Release", + "buildRoot": "${projectDir}\\Build\\${name}", + "installRoot": "${projectDir}\\Install\\${name}", + "cmakeCommandArgs": "-DENABLE_QT_GUI=ON", + "buildCommandArgs": "", + "ctestCommandArgs": "", + "inheritEnvironments": [ "clang_cl_x64_x64" ], + "intelliSenseMode": "windows-clang-x64" + }, { "name": "x64-Clang-Debug", "generator": "Ninja", @@ -24,6 +36,18 @@ "inheritEnvironments": [ "clang_cl_x64_x64" ], "intelliSenseMode": "windows-clang-x64" }, + { + "name": "x64-Clang-Debug-Qt", + "generator": "Ninja", + "configurationType": "Debug", + "buildRoot": "${projectDir}\\Build\\${name}", + "installRoot": "${projectDir}\\Install\\${name}", + "cmakeCommandArgs": "-DENABLE_QT_GUI=ON", + "buildCommandArgs": "", + "ctestCommandArgs": "", + "inheritEnvironments": [ "clang_cl_x64_x64" ], + "intelliSenseMode": "windows-clang-x64" + }, { "name": "x64-Clang-RelWithDebInfo", "generator": "Ninja", @@ -35,6 +59,18 @@ "ctestCommandArgs": "", "inheritEnvironments": [ "clang_cl_x64_x64" ], "intelliSenseMode": "windows-clang-x64" + }, + { + "name": "x64-Clang-RelWithDebInfo-Qt", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "buildRoot": "${projectDir}\\Build\\${name}", + "installRoot": "${projectDir}\\Install\\${name}", + "cmakeCommandArgs": "-DENABLE_QT_GUI=ON", + "buildCommandArgs": "", + "ctestCommandArgs": "", + "inheritEnvironments": [ "clang_cl_x64_x64" ], + "intelliSenseMode": "windows-clang-x64" } ] } \ No newline at end of file From bee3f1075d20071d5a36a3ce64894d560f44b8bf Mon Sep 17 00:00:00 2001 From: Fire Cube Date: Sat, 21 Jun 2025 21:36:12 +0200 Subject: [PATCH 6/8] add FindQt.cmake to reuse --- cmake/FindQt.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cmake/FindQt.cmake b/cmake/FindQt.cmake index bff3b6a51..d568c55ad 100644 --- a/cmake/FindQt.cmake +++ b/cmake/FindQt.cmake @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + if(WIN32 AND NOT CMAKE_PREFIX_PATH) file(GLOB QT_KITS LIST_DIRECTORIES true "C:/Qt/*/msvc*") list(SORT QT_KITS COMPARE NATURAL) From 321ed8b26768721c148264fc9f7beae3a775c69c Mon Sep 17 00:00:00 2001 From: Fire Cube Date: Sun, 22 Jun 2025 19:23:54 +0200 Subject: [PATCH 7/8] rename cmake file, add check before running cmake and add inheritation to presets --- CMakeLists.txt | 4 +- CMakePresets.json | 75 ++++++++++---------------------- cmake/DetectQtInstallation.cmake | 14 ++++++ cmake/FindQt.cmake | 15 ------- 4 files changed, 40 insertions(+), 68 deletions(-) create mode 100644 cmake/DetectQtInstallation.cmake delete mode 100644 cmake/FindQt.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 80f326432..8d50e3bf4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -214,7 +214,9 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/common/scm_rev.cpp.in" "${CMAKE_ message("end git things, remote: ${GIT_REMOTE_NAME}, branch: ${GIT_BRANCH}") -include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/findQt.cmake") +if(WIN32 AND ENABLE_QT_GUI AND NOT CMAKE_PREFIX_PATH) + include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/DetectQtInstallation.cmake") +endif () list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") find_package(Boost 1.84.0 CONFIG) diff --git a/CMakePresets.json b/CMakePresets.json index 454b4e767..2aeb0f064 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -6,6 +6,22 @@ "patch": 0 }, "configurePresets": [ + { + "name": "x64-Clang-Base", + "hidden": true, + "generator": "Ninja", + "binaryDir": "${sourceDir}/Build/${presetName}", + "cacheVariables": { + "CMAKE_C_COMPILER": "clang-cl", + "CMAKE_CXX_COMPILER": "clang-cl", + "CMAKE_INSTALL_PREFIX": "${sourceDir}/Build/${presetName}" + }, + "vendor": { + "microsoft.com/VisualStudioSettings/CMake/1.0": { + "intelliSenseMode": "windows-clang-x64" + } + } + }, { "name": "x64-Clang-Debug", "displayName": "Clang x64 Debug", @@ -26,89 +42,44 @@ { "name": "x64-Clang-Debug-Qt", "displayName": "Clang x64 Debug with Qt", - "generator": "Ninja", - "binaryDir": "${sourceDir}/Build/x64-Clang-Debug-Qt", + "inherits": ["x64-Clang-Base"], "cacheVariables": { - "CMAKE_C_COMPILER": "clang-cl", - "CMAKE_CXX_COMPILER": "clang-cl", "CMAKE_BUILD_TYPE": "Debug", - "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-Debug-Qt", "ENABLE_QT_GUI": "ON" - }, - "vendor": { - "microsoft.com/VisualStudioSettings/CMake/1.0": { - "intelliSenseMode": "windows-clang-x64" - } } }, { "name": "x64-Clang-Release", "displayName": "Clang x64 Release", - "generator": "Ninja", - "binaryDir": "${sourceDir}/Build/x64-Clang-Release", + "inherits": ["x64-Clang-Base"], "cacheVariables": { - "CMAKE_C_COMPILER": "clang-cl", - "CMAKE_CXX_COMPILER": "clang-cl", - "CMAKE_BUILD_TYPE": "Release", - "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-Release" - }, - "vendor": { - "microsoft.com/VisualStudioSettings/CMake/1.0": { - "intelliSenseMode": "windows-clang-x64" - } + "CMAKE_BUILD_TYPE": "Release" } }, { "name": "x64-Clang-Release-Qt", "displayName": "Clang x64 Release with Qt", - "generator": "Ninja", - "binaryDir": "${sourceDir}/Build/x64-Clang-Release-Qt", + "inherits": ["x64-Clang-Base"], "cacheVariables": { - "CMAKE_C_COMPILER": "clang-cl", - "CMAKE_CXX_COMPILER": "clang-cl", "CMAKE_BUILD_TYPE": "Release", - "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-Release-Qt", "ENABLE_QT_GUI": "ON" - }, - "vendor": { - "microsoft.com/VisualStudioSettings/CMake/1.0": { - "intelliSenseMode": "windows-clang-x64" - } } }, { "name": "x64-Clang-RelWithDebInfo", "displayName": "Clang x64 RelWithDebInfo", - "generator": "Ninja", - "binaryDir": "${sourceDir}/Build/x64-Clang-RelWithDebInfo", + "inherits": ["x64-Clang-Base"], "cacheVariables": { - "CMAKE_C_COMPILER": "clang-cl", - "CMAKE_CXX_COMPILER": "clang-cl", - "CMAKE_BUILD_TYPE": "RelWithDebInfo", - "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-RelWithDebInfo" - }, - "vendor": { - "microsoft.com/VisualStudioSettings/CMake/1.0": { - "intelliSenseMode": "windows-clang-x64" - } + "CMAKE_BUILD_TYPE": "RelWithDebInfo" } }, { "name": "x64-Clang-RelWithDebInfo-Qt", "displayName": "Clang x64 RelWithDebInfo with Qt", - "generator": "Ninja", - "binaryDir": "${sourceDir}/Build/x64-Clang-RelWithDebInfo-Qt", + "inherits": ["x64-Clang-Base"], "cacheVariables": { - "CMAKE_C_COMPILER": "clang-cl", - "CMAKE_CXX_COMPILER": "clang-cl", "CMAKE_BUILD_TYPE": "RelWithDebInfo", - "CMAKE_INSTALL_PREFIX": "${sourceDir}/Install/x64-Clang-RelWithDebInfo-Qt", "ENABLE_QT_GUI": "ON" - }, - "vendor": { - "microsoft.com/VisualStudioSettings/CMake/1.0": { - "intelliSenseMode": "windows-clang-x64" - } } } ] diff --git a/cmake/DetectQtInstallation.cmake b/cmake/DetectQtInstallation.cmake new file mode 100644 index 000000000..0f1dd6a8b --- /dev/null +++ b/cmake/DetectQtInstallation.cmake @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +file(GLOB QT_KITS LIST_DIRECTORIES true "C:/Qt/*/msvc*") +list(SORT QT_KITS COMPARE NATURAL) +list(REVERSE QT_KITS) +list(GET QT_KITS 0 QT_PREFIX) +if(QT_PREFIX) + set(CMAKE_PREFIX_PATH "${QT_PREFIX}" CACHE PATH "Qt prefix auto‑detected" FORCE) + message(STATUS "Auto-detected Qt prefix: ${QT_PREFIX}") +else() + message(WARNING "findQt.cmake: no Qt‑Directory found in C:/Qt – please set CMAKE_PREFIX_PATH manually") +endif() + diff --git a/cmake/FindQt.cmake b/cmake/FindQt.cmake deleted file mode 100644 index d568c55ad..000000000 --- a/cmake/FindQt.cmake +++ /dev/null @@ -1,15 +0,0 @@ -# SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -if(WIN32 AND NOT CMAKE_PREFIX_PATH) - file(GLOB QT_KITS LIST_DIRECTORIES true "C:/Qt/*/msvc*") - list(SORT QT_KITS COMPARE NATURAL) - list(REVERSE QT_KITS) - list(GET QT_KITS 0 QT_PREFIX) - if(QT_PREFIX) - set(CMAKE_PREFIX_PATH "${QT_PREFIX}" CACHE PATH "Qt prefix auto‑detected" FORCE) - message(STATUS "Auto-detected Qt prefix: ${QT_PREFIX}") - else() - message(WARNING "findQt.cmake: no Qt‑Directory found in C:/Qt – please set CMAKE_PREFIX_PATH manually") - endif() -endif() From 06cae185c9a2aae7dd361353583edfe2f16f151f Mon Sep 17 00:00:00 2001 From: Fire Cube Date: Sun, 22 Jun 2025 19:36:19 +0200 Subject: [PATCH 8/8] add error check in cmake --- cmake/DetectQtInstallation.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/DetectQtInstallation.cmake b/cmake/DetectQtInstallation.cmake index 0f1dd6a8b..d482ed9c7 100644 --- a/cmake/DetectQtInstallation.cmake +++ b/cmake/DetectQtInstallation.cmake @@ -4,8 +4,8 @@ file(GLOB QT_KITS LIST_DIRECTORIES true "C:/Qt/*/msvc*") list(SORT QT_KITS COMPARE NATURAL) list(REVERSE QT_KITS) -list(GET QT_KITS 0 QT_PREFIX) -if(QT_PREFIX) +if(QT_KITS) + list(GET QT_KITS 0 QT_PREFIX) set(CMAKE_PREFIX_PATH "${QT_PREFIX}" CACHE PATH "Qt prefix auto‑detected" FORCE) message(STATUS "Auto-detected Qt prefix: ${QT_PREFIX}") else()