From 5e927fb8d6b376cb41cf516781a84fb47cebb584 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Mon, 14 Sep 2020 15:13:35 +0200 Subject: [PATCH] CMake: Explicitly search for X11 with proper dependency tracking Replace the hardcoded find_package(X11) with qt_find_package in both the compositor and client projects. This should ensure proper dependency tracking. Calling qt_find_package(X11) is now necessary, because QtGui doesn't publically link against X11 anymore, which means we have to do it explicitly for qtwayland. The relevant qtbase change is 69004cb2900dcfc530e1e2efb783f559661a8a50 The calls need to be protected by an if(NOT TARGET) to prevent configuration issues in static builds, where the dependency does get propagated. This amends commit dfaf374a3d8d34b9aa90bfc4c5e074f9fd8b9981. Change-Id: Ia39e1e78cd0af386d7b48cd1922887289823c1fa Reviewed-by: Qt CI Bot Reviewed-by: Joerg Bornemann --- src/plugins/platforms/wayland/configure.cmake | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/wayland/configure.cmake b/src/plugins/platforms/wayland/configure.cmake index 2310ba8dabe..6e6b0f33d41 100644 --- a/src/plugins/platforms/wayland/configure.cmake +++ b/src/plugins/platforms/wayland/configure.cmake @@ -17,7 +17,14 @@ if((LINUX) OR QT_FIND_ALL_PACKAGES_ALWAYS) qt_find_package(Wayland PROVIDED_TARGETS Wayland::Egl MODULE_NAME waylandclient QMAKE_LIB wayland-egl) endif() qt_find_package(XComposite PROVIDED_TARGETS PkgConfig::XComposite MODULE_NAME waylandclient QMAKE_LIB xcomposite) - +# special case begin +# X11 is not a public dependency of QtGui anymore, so we need to find it manually in a shared build. +# In a static build the dependency is still propagated, so check for the target existence to prevent +# the 'Attempt to promote imported target "X11::X11" to global scope' issue. +if(NOT TARGET X11::X11) + qt_find_package(X11 PROVIDED_TARGETS X11::X11 MODULE_NAME gui QMAKE_LIB xlib) +endif() +# special case end #### Tests