CMake VFS: Enable us to provided vfs plugins from an external directory
authorHannah von Reth <hannah.vonreth@owncloud.com>
Thu, 15 Aug 2019 11:13:44 +0000 (13:13 +0200)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 09:58:57 +0000 (10:58 +0100)
src/libsync/vfs/CMakeLists.txt

index 306988f46fbe7c429151745af90ccebe5635fd3d..fec473b575c4bc6dd784da501d74c8e1bf8d298b 100644 (file)
@@ -1,20 +1,25 @@
 # Globbing for plugins has a problem with in-source builds
 # that create directories for the build.
-#file(GLOB vfsPlugins RELATIVE ${CMAKE_CURRENT_LIST_DIR} "*")
+#file(GLOB VIRTUAL_FILE_SYSTEM_PLUGINS RELATIVE ${CMAKE_CURRENT_LIST_DIR} "*")
 
-SET(vfsPlugins "suffix;win")
+list(APPEND VIRTUAL_FILE_SYSTEM_PLUGINS "suffix" "win")
 
-foreach(vfsPlugin ${vfsPlugins})
-    if(NOT IS_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/${vfsPlugin}")
+foreach(vfsPlugin ${VIRTUAL_FILE_SYSTEM_PLUGINS})
+    set(vfsPluginPath ${vfsPlugin})
+    get_filename_component(vfsPluginName ${vfsPlugin} NAME)
+    if (NOT IS_ABSOLUTE ${vfsPlugin})
+        set(vfsPluginPath "${CMAKE_CURRENT_LIST_DIR}/${vfsPlugin}")
+    endif()
+    if(NOT IS_DIRECTORY ${vfsPluginPath})
         continue()
     endif()
 
-    add_subdirectory("${vfsPlugin}")
+    add_subdirectory(${vfsPluginPath} ${vfsPluginName})
 
-    if(UNIT_TESTING AND IS_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/${vfsPlugin}/test")
-        add_subdirectory("${vfsPlugin}/test" "${vfsPlugin}_test")
-        message(STATUS "Added vfsPlugin with tests: ${vfsPlugin}")
+    if(UNIT_TESTING AND IS_DIRECTORY "${vfsPluginPath}/test")
+        add_subdirectory("${vfsPluginPath}/test" "${vfsPluginName}_test")
+        message(STATUS "Added vfsPlugin with tests: ${vfsPluginName}")
     else()
-        message(STATUS "Added vfsPlugin without tests: ${vfsPlugin}")
+        message(STATUS "Added vfsPlugin without tests: ${vfsPluginName}")
     endif()
 endforeach()