diff --git a/external/kwayland/CMakeLists.txt b/external/kwayland/CMakeLists.txt index 7f90b9f..ca2f8c2 100644 --- a/external/kwayland/CMakeLists.txt +++ b/external/kwayland/CMakeLists.txt @@ -18,12 +18,69 @@ endif() add_library(external_kwayland_bundled STATIC IMPORTED) +include(ExternalProject) + +ExternalProject_Add(extra-cmake-modules + URL ${third_party_loc}/extra-cmake-modules + CMAKE_GENERATOR Ninja + CMAKE_ARGS + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX= + -DCMAKE_INSTALL_DATADIR=share + -DBUILD_TESTING=OFF + BUILD_COMMAND ${CMAKE_COMMAND} --build + COMMAND ${CMAKE_COMMAND} --install + STEP_TARGETS build + EXCLUDE_FROM_ALL TRUE + BUILD_BYPRODUCTS /share/ECM/cmake/ECMConfig.cmake +) + +ExternalProject_Get_property(extra-cmake-modules BINARY_DIR) +set(extra_cmake_modules_binary_dir ${BINARY_DIR}) + +ExternalProject_Add(wayland-protocols + URL ${third_party_loc}/wayland-protocols + CONFIGURE_COMMAND meson + --prefix= + --libdir=lib + --buildtype=release + -Dtests=false + + BUILD_COMMAND meson compile -C + COMMAND meson install -C + STEP_TARGETS build + EXCLUDE_FROM_ALL TRUE + BUILD_BYPRODUCTS /lib/wayland-protocols.pc +) + +ExternalProject_Get_property(wayland-protocols BINARY_DIR) +set(wayland_protocols_binary_dir ${BINARY_DIR}) + +ExternalProject_Add(plasma-wayland-protocols + URL ${third_party_loc}/plasma-wayland-protocols + CMAKE_GENERATOR Ninja + CMAKE_ARGS + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX= + -DCMAKE_INSTALL_LIBDIR=lib + -DECM_DIR=${extra_cmake_modules_binary_dir}/share/ECM/cmake + BUILD_COMMAND ${CMAKE_COMMAND} --build + COMMAND ${CMAKE_COMMAND} --install + STEP_TARGETS build + EXCLUDE_FROM_ALL TRUE + BUILD_BYPRODUCTS /lib/cmake/PlasmaWaylandProtocols/PlasmaWaylandProtocolsConfig.cmake +) + +ExternalProject_Add_StepDependencies(plasma-wayland-protocols configure extra-cmake-modules-build) + +ExternalProject_Get_property(plasma-wayland-protocols BINARY_DIR) +set(plasma_wayland_protocols_binary_dir ${BINARY_DIR}) + set(kwayland_patch_command) if (DESKTOP_APP_QT6) set(kwayland_patch_command PATCH_COMMAND patch -p1 < ${CMAKE_CURRENT_SOURCE_DIR}/kwayland-qt6.patch) endif() -include(ExternalProject) ExternalProject_Add(kwayland URL ${third_party_loc}/kwayland CMAKE_GENERATOR Ninja @@ -31,6 +88,9 @@ ExternalProject_Add(kwayland -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF + -DCMAKE_PREFIX_PATH=${wayland_protocols_binary_dir} + -DECM_DIR=${extra_cmake_modules_binary_dir}/share/ECM/cmake + -DPlasmaWaylandProtocols_DIR=${plasma_wayland_protocols_binary_dir}/lib/cmake/PlasmaWaylandProtocols ${kwayland_patch_command} BUILD_COMMAND ${CMAKE_COMMAND} --build --target KF5WaylandClient STEP_TARGETS build @@ -38,6 +98,10 @@ ExternalProject_Add(kwayland BUILD_BYPRODUCTS /lib/libKF5WaylandClient.a ) +ExternalProject_Add_StepDependencies(kwayland configure extra-cmake-modules-build) +ExternalProject_Add_StepDependencies(kwayland configure wayland-protocols-build) +ExternalProject_Add_StepDependencies(kwayland configure plasma-wayland-protocols-build) + ExternalProject_Get_property(kwayland SOURCE_DIR) ExternalProject_Get_property(kwayland BINARY_DIR)