Skip to content

Commit 0858478

Browse files
committed
Unblock Wayland integration for Qt5
Compile Wayland protocols definitions by the ecm_add_qtwayland_client_protocol() function from extra CMake modules.
1 parent b9f1b60 commit 0858478

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

external/qt/package.cmake

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,30 @@ if (QT_VERSION_MAJOR GREATER_EQUAL 6)
3636
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core5Compat OpenGL OpenGLWidgets REQUIRED)
3737
endif()
3838

39-
# QtWaylandScanner cmake integration from Qt 6 is used
40-
cmake_dependent_option(DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION "Disable all code for Wayland integration." OFF "LINUX; qt_version_6_or_greater" ON)
39+
cmake_dependent_option(DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION "Disable all code for Wayland integration." OFF LINUX ON)
4140

4241
if (LINUX)
4342
if (NOT DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION)
4443
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS WaylandClient REQUIRED)
44+
45+
find_package(ECM QUIET)
46+
if (ECM_FOUND)
47+
list(PREPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
48+
endif()
49+
if (QT_VERSION_MAJOR GREATER_EQUAL 5)
50+
find_package(QtWaylandScanner REQUIRED)
51+
52+
# Imitate QtWayland's generator function by means of extra CMake modules.
53+
function(qt_generate_wayland_protocol_client_sources target)
54+
cmake_parse_arguments(GEN "" "" FILES ${ARGN})
55+
foreach(xmldef ${GEN_FILES})
56+
get_filename_component(base ${xmldef} NAME_WE)
57+
ecm_add_qtwayland_client_protocol(generated PROTOCOL ${xmldef} BASENAME ${base})
58+
endforeach()
59+
target_sources(${target} PRIVATE ${generated})
60+
target_include_directories(${target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
61+
endfunction()
62+
endif()
4563
endif()
4664

4765
if ((NOT DESKTOP_APP_USE_PACKAGED

0 commit comments

Comments
 (0)