Переглянути джерело

Added support for external plugin repositories via _DIR variables.

Sascha Zelzer 12 роки тому
батько
коміт
f7aae52181
1 змінених файлів з 21 додано та 15 видалено
  1. 21 15
      CMake/ctkFunctionAddPluginRepo.cmake

+ 21 - 15
CMake/ctkFunctionAddPluginRepo.cmake

@@ -1,38 +1,44 @@
 function(ctkFunctionAddPluginRepo)
 
   ctkMacroParseArguments("" "NAME;GIT_URL;GIT_TAG;GIT_PROTOCOL" "" ${ARGN})
-  
-  foreach(_required_arg NAME GIT_URL)
+
+  foreach(_required_arg NAME)
     if(NOT _${_required_arg})
       message(FATAL_ERROR "${_required_arg} is empty")
     endif()
   endforeach()
-  
-  ctkFunctionCheckoutRepo(
-    NAME ${_NAME}
-    GIT_URL ${_GIT_URL}
-    GIT_TAG ${_GIT_TAG}
-    GIT_PROTOCOL ${_GIT_PROTOCOL}
-    )
-  
+
+  if(NOT _GIT_URL AND NOT ${_NAME}_DIR)
+    message(FATAL_ERROR "Either ${_NAME}_DIR or GIT_URL must be set")
+  endif()
+
+  if(NOT ${_NAME}_DIR)
+    ctkFunctionCheckoutRepo(
+      NAME ${_NAME}
+      GIT_URL ${_GIT_URL}
+      GIT_TAG ${_GIT_TAG}
+      GIT_PROTOCOL ${_GIT_PROTOCOL}
+      )
+  endif()
+
   set(_gitmodules_files ${${_NAME}_DIR}/.gitmodules)
   if(NOT EXISTS ${_gitmodules_files})
     message(FATAL_ERROR "The repository at ${${_NAME}_DIR} does not contain a .gitmodules file")
   endif()
-  
+
   # Parse the .gitmodules file and add the submodules as contributed plugins
   file(STRINGS "${_gitmodules_files}" _plugin_paths REGEX "path =.*")
   foreach(_plugin_path ${_plugin_paths})
     string(REPLACE " = " ";" _plugin_path_list ${_plugin_path})
     list(GET _plugin_path_list 1 _plugin_name)
     ctk_plugin_option(${_plugin_name} "Build the ${_plugin_name} plugin." OFF)
-    
+
     # Push the value which might have been changed in ctk_plugin_option to the parent scope
     set(CTK_PLUGIN_${_plugin_name} ${CTK_PLUGIN_${_plugin_name}} PARENT_SCOPE)
-    
+
     set(${_plugin_name}_SOURCE_DIR ${${_NAME}_DIR}/${_plugin_name})
     set(${_plugin_name}_SOURCE_DIR ${${_plugin_name}_SOURCE_DIR} PARENT_SCOPE)
-    
+
     if(CTK_PLUGIN_${_plugin_name} AND NOT EXISTS ${${_plugin_name}_SOURCE_DIR})
       execute_process(
         COMMAND ${GIT_EXECUTABLE} submodule update ${_plugin_name}
@@ -45,7 +51,7 @@ function(ctkFunctionAddPluginRepo)
       endif()
     endif()
   endforeach()
-  
+
   set(CTK_PLUGINS ${CTK_PLUGINS} PARENT_SCOPE)
   set(${_NAME}_DIR ${${_NAME}_DIR} PARENT_SCOPE)