From 116107bc86a0ba83aedcb10255bcb018c223fdf7 Mon Sep 17 00:00:00 2001 From: tytan652 Date: Fri, 24 May 2024 10:05:26 +0200 Subject: [PATCH] UI: Fix Qt platform override in CMake 3 This override is still needed until Qt minimum version requirement is increased to at least 6.3.0. ui-config.h.in and CMake 2 are modified to avoid USE_XDG redefinition in CMake 3. --- UI/cmake/legacy.cmake | 22 ++++++++++++++-------- UI/cmake/os-linux.cmake | 2 +- UI/obs-app.cpp | 3 ++- UI/ui-config.h.in | 2 -- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/UI/cmake/legacy.cmake b/UI/cmake/legacy.cmake index dc2800464..709e9c7ab 100644 --- a/UI/cmake/legacy.cmake +++ b/UI/cmake/legacy.cmake @@ -504,16 +504,22 @@ elseif(OS_POSIX) target_compile_options(obs PRIVATE -Wno-unqualified-std-cast-call) endif() - if(OS_LINUX AND ENABLE_WHATSNEW) - find_package(MbedTLS) - find_package(nlohmann_json REQUIRED) - if(NOT MBEDTLS_FOUND) - obs_status(FATAL_ERROR "mbedTLS not found, but required for WhatsNew support on Linux") + if(OS_LINUX) + if(USE_XDG) + target_compile_definitions(obs PRIVATE USE_XDG) endif() - target_sources(obs PRIVATE update/crypto-helpers.hpp update/crypto-helpers-mbedtls.cpp update/shared-update.cpp - update/shared-update.hpp update/update-helpers.cpp update/update-helpers.hpp) - target_link_libraries(obs PRIVATE Mbedtls::Mbedtls nlohmann_json::nlohmann_json OBS::blake2) + if(ENABLE_WHATSNEW) + find_package(MbedTLS) + find_package(nlohmann_json REQUIRED) + if(NOT MBEDTLS_FOUND) + obs_status(FATAL_ERROR "mbedTLS not found, but required for WhatsNew support on Linux") + endif() + + target_sources(obs PRIVATE update/crypto-helpers.hpp update/crypto-helpers-mbedtls.cpp update/shared-update.cpp + update/shared-update.hpp update/update-helpers.cpp update/update-helpers.hpp) + target_link_libraries(obs PRIVATE Mbedtls::Mbedtls nlohmann_json::nlohmann_json OBS::blake2) + endif() endif() endif() diff --git a/UI/cmake/os-linux.cmake b/UI/cmake/os-linux.cmake index 0ffb441e4..a8c08080f 100644 --- a/UI/cmake/os-linux.cmake +++ b/UI/cmake/os-linux.cmake @@ -1,5 +1,5 @@ target_sources(obs-studio PRIVATE platform-x11.cpp) -target_compile_definitions(obs-studio PRIVATE OBS_INSTALL_PREFIX="${OBS_INSTALL_PREFIX}") +target_compile_definitions(obs-studio PRIVATE USE_XDG OBS_INSTALL_PREFIX="${OBS_INSTALL_PREFIX}") target_link_libraries(obs-studio PRIVATE Qt::GuiPrivate Qt::DBus) target_sources(obs-studio PRIVATE system-info-posix.cpp) diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp index c1ba6d6a3..389f7df52 100644 --- a/UI/obs-app.cpp +++ b/UI/obs-app.cpp @@ -1996,7 +1996,8 @@ static int run_program(fstream &logFile, int argc, char *argv[]) if (platform_theme && strcmp(platform_theme, "qt5ct") == 0) unsetenv("QT_QPA_PLATFORMTHEME"); -#if defined(ENABLE_WAYLAND) && defined(USE_XDG) +#if defined(ENABLE_WAYLAND) && defined(USE_XDG) && \ + QT_VERSION < QT_VERSION_CHECK(6, 3, 0) /* NOTE: Qt doesn't use the Wayland platform on GNOME, so we have to * force it using the QT_QPA_PLATFORM env var. It's still possible to * use other QPA platforms using this env var, or the -platform command diff --git a/UI/ui-config.h.in b/UI/ui-config.h.in index 25ec4699d..bbe006347 100644 --- a/UI/ui-config.h.in +++ b/UI/ui-config.h.in @@ -1,7 +1,5 @@ #pragma once -#cmakedefine USE_XDG - #define OAUTH_BASE_URL "@OAUTH_BASE_URL@" #define TWITCH_CLIENTID "@TWITCH_CLIENTID@"