diff --git a/src/deployers/CMakeLists.txt b/src/deployers/CMakeLists.txt index 40e2429..0833e05 100644 --- a/src/deployers/CMakeLists.txt +++ b/src/deployers/CMakeLists.txt @@ -21,6 +21,7 @@ set(CLASSES PrintSupportPluginsDeployer TextToSpeechPluginsDeployer TlsBackendsDeployer + WaylandcompositorPluginsDeployer ) # TODO: CMake <= 3.7 (at least!) doesn't allow for using OBJECT libraries with target_link_libraries diff --git a/src/deployers/PluginsDeployerFactory.cpp b/src/deployers/PluginsDeployerFactory.cpp index 72ea048..ea88ec2 100644 --- a/src/deployers/PluginsDeployerFactory.cpp +++ b/src/deployers/PluginsDeployerFactory.cpp @@ -17,6 +17,7 @@ #include "WebEnginePluginsDeployer.h" #include "XcbglIntegrationPluginsDeployer.h" #include "TlsBackendsDeployer.h" +#include "WaylandcompositorPluginsDeployer.h" using namespace linuxdeploy::plugin::qt; using namespace linuxdeploy::core::appdir; @@ -103,6 +104,10 @@ std::vector> PluginsDeployerFactory::getDeploye return {getInstance(moduleName)}; } + if (moduleName == "waylandcompositor") { + return {getInstance(moduleName)}; + } + // fallback return {getInstance(moduleName)}; } diff --git a/src/deployers/WaylandcompositorPluginsDeployer.cpp b/src/deployers/WaylandcompositorPluginsDeployer.cpp new file mode 100644 index 0000000..3a0e667 --- /dev/null +++ b/src/deployers/WaylandcompositorPluginsDeployer.cpp @@ -0,0 +1,38 @@ +// system headers +#include + +// library headers +#include + +// local headers +#include "WaylandcompositorPluginsDeployer.h" + +using namespace linuxdeploy::plugin::qt; +using namespace linuxdeploy::core::log; + +namespace fs = std::filesystem; + +bool WaylandcompositorPluginsDeployer::deploy() { + // calling the default code is optional, but it won't hurt for now + if (!BasicPluginsDeployer::deploy()) + return false; + + ldLog() << "Deploying waylandcompositor plugin" << std::endl; + + for (fs::directory_iterator i(qtPluginsPath / "wayland-decoration-client"); i != fs::directory_iterator(); ++i) { + if (!appDir.deployLibrary(*i, appDir.path() / "usr/plugins/wayland-decoration-client/")) + return false; + } + + for (fs::directory_iterator i(qtPluginsPath / "wayland-graphics-integration-client"); i != fs::directory_iterator(); ++i) { + if (!appDir.deployLibrary(*i, appDir.path() / "usr/plugins/wayland-graphics-integration-client/")) + return false; + } + + for (fs::directory_iterator i(qtPluginsPath / "wayland-shell-integration"); i != fs::directory_iterator(); ++i) { + if (!appDir.deployLibrary(*i, appDir.path() / "usr/plugins/wayland-shell-integration/")) + return false; + } + + return true; +} diff --git a/src/deployers/WaylandcompositorPluginsDeployer.h b/src/deployers/WaylandcompositorPluginsDeployer.h new file mode 100644 index 0000000..3840002 --- /dev/null +++ b/src/deployers/WaylandcompositorPluginsDeployer.h @@ -0,0 +1,17 @@ +#pragma once + +#include "BasicPluginsDeployer.h" + +namespace linuxdeploy { + namespace plugin { + namespace qt { + class WaylandcompositorPluginsDeployer : public BasicPluginsDeployer { + public: + // we can just use the base class's constructor + using BasicPluginsDeployer::BasicPluginsDeployer; + + bool deploy() override; + }; + } + } +}