Kaynağa Gözat

Generalize the logic allowing to decide if an external project is optional.

By default, all projects are considered for inclusion. This can be
overridden by implementing a macro named 'superbuild_is_external_project_includable'.
Jean-Christophe Fillion-Robin 11 yıl önce
ebeveyn
işleme
aba6b56e54

+ 65 - 0
CMake/ctkBlockCheckDependencies.cmake

@@ -60,6 +60,71 @@ if(NOT DEFINED CTK_DEPENDENCIES)
   message(FATAL_ERROR "error: CTK_DEPENDENCIES variable is not defined !")
 endif()
 
+set(DCMTK_enabling_variable DCMTK_LIBRARIES)
+set(${DCMTK_enabling_variable}_INCLUDE_DIRS DCMTK_INCLUDE_DIR)
+set(${DCMTK_enabling_variable}_FIND_PACKAGE_CMD DCMTK)
+
+set(ITK_enabling_variable ITK_LIBRARIES)
+set(${ITK_enabling_variable}_LIBRARY_DIRS ITK_LIBRARY_DIRS)
+set(${ITK_enabling_variable}_INCLUDE_DIRS ITK_INCLUDE_DIRS)
+set(${ITK_enabling_variable}_FIND_PACKAGE_CMD ITK)
+
+set(Log4Qt_enabling_variable Log4Qt_LIBRARIES)
+set(${Log4Qt_enabling_variable}_INCLUDE_DIRS Log4Qt_INCLUDE_DIRS)
+set(${Log4Qt_enabling_variable}_FIND_PACKAGE_CMD Log4Qt)
+
+set(OpenIGTLink_enabling_variable OpenIGTLink_LIBRARIES)
+set(${OpenIGTLink_enabling_variable}_LIBRARY_DIRS OpenIGTLink_LIBRARY_DIRS)
+set(${OpenIGTLink_enabling_variable}_INCLUDE_DIRS OpenIGTLink_INCLUDE_DIRS)
+set(${OpenIGTLink_enabling_variable}_FIND_PACKAGE_CMD OpenIGTLink)
+
+set(PythonQt_enabling_variable PYTHONQT_LIBRARIES)
+set(${PythonQt_enabling_variable}_INCLUDE_DIRS PYTHONQT_INCLUDE_DIR PYTHON_INCLUDE_DIRS)
+set(${PythonQt_enabling_variable}_FIND_PACKAGE_CMD PythonQt)
+
+set(QtSOAP_enabling_variable QtSOAP_LIBRARIES)
+set(${QtSOAP_enabling_variable}_LIBRARY_DIRS QtSOAP_LIBRARY_DIRS)
+set(${QtSOAP_enabling_variable}_INCLUDE_DIRS QtSOAP_INCLUDE_DIRS)
+set(${QtSOAP_enabling_variable}_FIND_PACKAGE_CMD QtSOAP)
+
+set(qxmlrpc_enabling_variable qxmlrpc_LIBRARY)
+set(${qxmlrpc_enabling_variable}_LIBRARY_DIRS qxmlrpc_LIBRARY_DIRS)
+set(${qxmlrpc_enabling_variable}_INCLUDE_DIRS qxmlrpc_INCLUDE_DIRS)
+set(${qxmlrpc_enabling_variable}_FIND_PACKAGE_CMD qxmlrpc)
+
+set(VTK_enabling_variable VTK_LIBRARIES)
+set(${VTK_enabling_variable}_LIBRARY_DIRS VTK_LIBRARY_DIRS)
+set(${VTK_enabling_variable}_INCLUDE_DIRS VTK_INCLUDE_DIRS)
+set(${VTK_enabling_variable}_FIND_PACKAGE_CMD VTK)
+
+set(XIP_enabling_variable XIP_LIBRARIES)
+set(${XIP_enabling_variable}_LIBRARY_DIRS XIP_LIBRARY_DIRS)
+set(${XIP_enabling_variable}_INCLUDE_DIRS XIP_INCLUDE_DIRS)
+set(${XIP_enabling_variable}_FIND_PACKAGE_CMD XIP)
+
+set(ZMQ_enabling_variable ZMQ_LIBRARIES)
+set(${ZMQ_enabling_variable}_LIBRARY_DIRS ZMQ_LIBRARY_DIRS)
+set(${ZMQ_enabling_variable}_INCLUDE_DIRS ZMQ_INCLUDE_DIRS)
+set(${ZMQ_enabling_variable}_FIND_PACKAGE_CMD ZMQ)
+
+macro(superbuild_is_external_project_includable possible_proj output_var)
+  if(DEFINED ${possible_proj}_enabling_variable)
+    ctkMacroShouldAddExternalProject(${${possible_proj}_enabling_variable} ${output_var})
+    if(NOT ${${output_var}})
+      if(${possible_proj} STREQUAL "VTK"
+         AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
+        set(${output_var} 1)
+      else()
+        unset(${${possible_proj}_enabling_variable}_INCLUDE_DIRS)
+        unset(${${possible_proj}_enabling_variable}_LIBRARY_DIRS)
+        unset(${${possible_proj}_enabling_variable}_FIND_PACKAGE_CMD)
+      endif()
+    endif()
+  else()
+    set(${output_var} 1)
+  endif()
+endmacro()
+
 superbuild_include_dependencies(CTK)
 
 #message("Updated CTK_DEPENDENCIES:")

+ 10 - 27
CMake/ctkMacroCheckExternalProjectDependency.cmake

@@ -469,36 +469,19 @@ macro(superbuild_include_dependencies)
     set(SUPERBUILD_FIRST_PASS FALSE)
 
     foreach(possible_proj ${__epd_${SUPERBUILD_TOPLEVEL_PROJECT}_projects})
-      if(NOT ${possible_proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT})
 
-        set_property(GLOBAL PROPERTY ${EXTERNAL_PROJECT_FILE_PREFIX}${possible_proj}_FILE_INCLUDED 0)
-
-        # XXX - Refactor - The following code should be re-organized
-        if(DEFINED ${possible_proj}_enabling_variable)
-          ctkMacroShouldAddExternalproject(${${possible_proj}_enabling_variable} add_project)
-          if(${add_project})
-            list(APPEND ${SUPERBUILD_TOPLEVEL_PROJECT}_DEPENDENCIES ${possible_proj})
-          else()
-            # XXX HACK
-            if(${possible_proj} STREQUAL "VTK"
-               AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
-              list(APPEND ${SUPERBUILD_TOPLEVEL_PROJECT}_DEPENDENCIES VTK)
-            else()
-              unset(${${possible_proj}_enabling_variable}_INCLUDE_DIRS)
-              unset(${${possible_proj}_enabling_variable}_LIBRARY_DIRS)
-              unset(${${possible_proj}_enabling_variable}_FIND_PACKAGE_CMD)
-              if(${SUPERBUILD_TOPLEVEL_PROJECT}_SUPERBUILD)
-                message(STATUS "SuperBuild - ${possible_proj}[OPTIONAL]")
-              endif()
-            endif()
-          endif()
-        else()
+      set_property(GLOBAL PROPERTY ${EXTERNAL_PROJECT_FILE_PREFIX}${possible_proj}_FILE_INCLUDED 0)
+
+      if(NOT ${possible_proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT})
+        set(_include_project 1)
+        if(COMMAND superbuild_is_external_project_includable)
+          superbuild_is_external_project_includable("${possible_proj}" _include_project)
+        endif()
+        if(_include_project)
           list(APPEND ${SUPERBUILD_TOPLEVEL_PROJECT}_DEPENDENCIES ${possible_proj})
+        else()
+          superbuild_message(STATUS "${possible_proj}[OPTIONAL]")
         endif()
-        # XXX
-
-      else()
-
       endif()
     endforeach()
 

+ 0 - 4
CMakeExternals/DCMTK.cmake

@@ -6,10 +6,6 @@ superbuild_include_once()
 
 set(proj DCMTK)
 
-set(${proj}_enabling_variable DCMTK_LIBRARIES)
-set(${${proj}_enabling_variable}_INCLUDE_DIRS DCMTK_INCLUDE_DIR)
-set(${${proj}_enabling_variable}_FIND_PACKAGE_CMD DCMTK)
-
 set(${proj}_DEPENDENCIES "")
 
 superbuild_include_dependencies(PROJECT_VAR proj)

+ 0 - 5
CMakeExternals/ITK.cmake

@@ -6,11 +6,6 @@ superbuild_include_once()
 
 set(proj ITK)
 
-set(${proj}_enabling_variable ITK_LIBRARIES)
-set(${${proj}_enabling_variable}_LIBRARY_DIRS ITK_LIBRARY_DIRS)
-set(${${proj}_enabling_variable}_INCLUDE_DIRS ITK_INCLUDE_DIRS)
-set(${${proj}_enabling_variable}_FIND_PACKAGE_CMD ITK)
-
 set(${proj}_DEPENDENCIES "")
 
 superbuild_include_dependencies(PROJECT_VAR proj)

+ 0 - 4
CMakeExternals/Log4Qt.cmake

@@ -6,10 +6,6 @@ superbuild_include_once()
 
 set(proj Log4Qt)
 
-set(${proj}_enabling_variable Log4Qt_LIBRARIES)
-set(${${proj}_enabling_variable}_INCLUDE_DIRS Log4Qt_INCLUDE_DIRS)
-set(${${proj}_enabling_variable}_FIND_PACKAGE_CMD Log4Qt)
-
 set(${proj}_DEPENDENCIES "")
 
 superbuild_include_dependencies(PROJECT_VAR proj)

+ 0 - 5
CMakeExternals/OpenIGTLink.cmake

@@ -6,11 +6,6 @@ superbuild_include_once()
 
 set(proj OpenIGTLink)
 
-set(${proj}_enabling_variable OpenIGTLink_LIBRARIES)
-set(${${proj}_enabling_variable}_LIBRARY_DIRS OpenIGTLink_LIBRARY_DIRS)
-set(${${proj}_enabling_variable}_INCLUDE_DIRS OpenIGTLink_INCLUDE_DIRS)
-set(${${proj}_enabling_variable}_FIND_PACKAGE_CMD OpenIGTLink)
-
 set(${proj}_DEPENDENCIES "")
 
 superbuild_include_dependencies(PROJECT_VAR proj)

+ 0 - 4
CMakeExternals/PythonQt.cmake

@@ -6,10 +6,6 @@ superbuild_include_once()
 
 set(proj PythonQt)
 
-set(${proj}_enabling_variable PYTHONQT_LIBRARIES)
-set(${${proj}_enabling_variable}_INCLUDE_DIRS PYTHONQT_INCLUDE_DIR PYTHON_INCLUDE_DIRS)
-set(${${proj}_enabling_variable}_FIND_PACKAGE_CMD ${proj})
-
 set(${proj}_DEPENDENCIES "")
 
 superbuild_include_dependencies(PROJECT_VAR proj)

+ 0 - 5
CMakeExternals/QtSOAP.cmake

@@ -6,11 +6,6 @@ superbuild_include_once()
 
 set(proj QtSOAP)
 
-set(${proj}_enabling_variable QtSOAP_LIBRARIES)
-set(${${proj}_enabling_variable}_LIBRARY_DIRS QtSOAP_LIBRARY_DIRS)
-set(${${proj}_enabling_variable}_INCLUDE_DIRS QtSOAP_INCLUDE_DIRS)
-set(${${proj}_enabling_variable}_FIND_PACKAGE_CMD QtSOAP)
-
 set(${proj}_DEPENDENCIES "")
 
 superbuild_include_dependencies(PROJECT_VAR proj)

+ 0 - 5
CMakeExternals/VTK.cmake

@@ -6,11 +6,6 @@ superbuild_include_once()
 
 set(proj VTK)
 
-set(${proj}_enabling_variable VTK_LIBRARIES)
-set(${${proj}_enabling_variable}_LIBRARY_DIRS VTK_LIBRARY_DIRS)
-set(${${proj}_enabling_variable}_INCLUDE_DIRS VTK_INCLUDE_DIRS)
-set(${${proj}_enabling_variable}_FIND_PACKAGE_CMD VTK)
-
 set(${proj}_DEPENDENCIES "")
 
 superbuild_include_dependencies(PROJECT_VAR proj)

+ 0 - 5
CMakeExternals/XIP.cmake

@@ -6,11 +6,6 @@ superbuild_include_once()
 
 set(proj XIP)
 
-set(${proj}_enabling_variable XIP_LIBRARIES)
-set(${${proj}_enabling_variable}_LIBRARY_DIRS XIP_LIBRARY_DIRS)
-set(${${proj}_enabling_variable}_INCLUDE_DIRS XIP_INCLUDE_DIRS)
-set(${${proj}_enabling_variable}_FIND_PACKAGE_CMD XIP)
-
 set(${proj}_DEPENDENCIES "")
 
 superbuild_include_dependencies(PROJECT_VAR proj)

+ 0 - 5
CMakeExternals/ZMQ.cmake

@@ -6,11 +6,6 @@ superbuild_include_once()
 
 set(proj ZMQ)
 
-set(${proj}_enabling_variable ZMQ_LIBRARIES)
-set(${${proj}_enabling_variable}_LIBRARY_DIRS ZMQ_LIBRARY_DIRS)
-set(${${proj}_enabling_variable}_INCLUDE_DIRS ZMQ_INCLUDE_DIRS)
-set(${${proj}_enabling_variable}_FIND_PACKAGE_CMD ZMQ)
-
 set(${proj}_DEPENDENCIES "")
 
 superbuild_include_dependencies(PROJECT_VAR proj)

+ 0 - 5
CMakeExternals/qxmlrpc.cmake

@@ -6,11 +6,6 @@ superbuild_include_once()
 
 set(proj qxmlrpc)
 
-set(${proj}_enabling_variable qxmlrpc_LIBRARY)
-set(${${proj}_enabling_variable}_LIBRARY_DIRS qxmlrpc_LIBRARY_DIRS)
-set(${${proj}_enabling_variable}_INCLUDE_DIRS qxmlrpc_INCLUDE_DIRS)
-set(${${proj}_enabling_variable}_FIND_PACKAGE_CMD qxmlrpc)
-
 set(${proj}_DEPENDENCIES "")
 
 superbuild_include_dependencies(PROJECT_VAR proj)