Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt4
-rw-r--r--cmake/modules/OCConfigPluginDir.cmake35
-rw-r--r--config.h.in1
-rw-r--r--src/gui/application.cpp6
4 files changed, 46 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1b94b8390..0c0f72119 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,12 +21,16 @@ include(KDECompilerSettings NO_POLICY_SCOPE)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+find_package(Qt5 REQUIRED COMPONENTS Core)
+
if(UNIT_TESTING)
message(DEPRECATION "Setting UNIT_TESTING is deprecated please use BUILD_TESTING")
set(BUILD_TESTING TRUE)
endif()
include(CTest)
+
+include(OCConfigPluginDir)
include("${CMAKE_CURRENT_LIST_DIR}/THEME.cmake")
set(synclib_NAME "${APPLICATION_EXECUTABLE}sync")
diff --git a/cmake/modules/OCConfigPluginDir.cmake b/cmake/modules/OCConfigPluginDir.cmake
new file mode 100644
index 000000000..af6421833
--- /dev/null
+++ b/cmake/modules/OCConfigPluginDir.cmake
@@ -0,0 +1,35 @@
+function(IS_SUBDIR ROOT CHILD OUT)
+ file(RELATIVE_PATH REL_PATH "${ROOT}" "${CHILD}")
+ string(REGEX MATCH "^\.\./" NOT_SUBDIR "${REL_PATH}")
+ if (NOT_SUBDIR)
+ set(${OUT} FALSE PARENT_SCOPE)
+ else()
+ set(${OUT} TRUE PARENT_SCOPE)
+ endif()
+endfunction()
+
+
+if (UNIX AND NOT APPLE)
+ set(OC_PLUGIN_DIR ${KDE_INSTALL_FULL_PLUGINDIR})
+ IS_SUBDIR("${CMAKE_INSTALL_PREFIX}" "${OC_PLUGIN_DIR}" _is_subdir)
+ if (NOT _is_subdir)
+ if (KDE_INSTALL_USE_QT_SYS_PATHS)
+ message(FATAL_ERROR "Using KDE_INSTALL_USE_QT_SYS_PATHS with a non bundled Qt is not supported.")
+ else()
+ message(FATAL_ERROR "KDE_INSTALL_PLUGINDIR must be located in CMAKE_INSTALL_PREFIX")
+ endif()
+ endif()
+
+ include(ECMQueryQmake)
+ query_qmake(_qt_plugin_dir QT_INSTALL_PLUGINS TRY)
+ # any sub dir of _qt_plugin_dir is sufficient
+ IS_SUBDIR("${_qt_plugin_dir}" "${OC_PLUGIN_DIR}" _is_subdir)
+ if (_is_subdir)
+ # no need to add a additional plugin dir
+ unset(OC_PLUGIN_DIR)
+ else()
+ # set plugin dir to a path relative to the binary
+ file(RELATIVE_PATH OC_PLUGIN_DIR "${CMAKE_INSTALL_FULL_BINDIR}" "${OC_PLUGIN_DIR}")
+ message(STATUS "Adding additional plugin path: ${OC_PLUGIN_DIR}")
+ endif()
+endif()
diff --git a/config.h.in b/config.h.in
index 6e4371efb..7b3a835bd 100644
--- a/config.h.in
+++ b/config.h.in
@@ -27,6 +27,7 @@
#cmakedefine SYSCONFDIR "@SYSCONFDIR@"
#cmakedefine SHAREDIR "@SHAREDIR@"
+#cmakedefine OC_PLUGIN_DIR "@OC_PLUGIN_DIR@"
#cmakedefine01 GUI_TESTING
diff --git a/src/gui/application.cpp b/src/gui/application.cpp
index 88d362552..894c2a0fa 100644
--- a/src/gui/application.cpp
+++ b/src/gui/application.cpp
@@ -263,6 +263,12 @@ Application::Application(int &argc, char **argv)
if (!AbstractNetworkJob::httpTimeout)
AbstractNetworkJob::httpTimeout = cfg.timeout();
+#if defined(OC_PLUGIN_DIR) && defined(Q_OS_LINUX)
+ const QString extraPluginDir = QDir(QApplication::applicationDirPath()).filePath(QStringLiteral(OC_PLUGIN_DIR));
+ qCInfo(lcApplication) << "Adding extra plugin search path:" << extraPluginDir;
+ this->addLibraryPath(extraPluginDir);
+#endif
+
// Check vfs plugins
if (Theme::instance()->showVirtualFilesOption() && bestAvailableVfsMode() == Vfs::Off) {
qCWarning(lcApplication) << "Theme wants to show vfs mode, but no vfs plugins are available";