Pārlūkot izejas kodu

Update ExternalProjectDependency system based on commontk/Artichoke@cfefc7ea27

Remove test since they are now part of the Artichoke project.

See #418
Jean-Christophe Fillion-Robin 11 gadi atpakaļ
vecāks
revīzija
7fcc3e5e63

+ 0 - 28
CMake/Testing/CMakeLists.txt

@@ -10,35 +10,7 @@ macro(add_cmakescript_test testname script)
     PASS_REGULAR_EXPRESSION "SUCCESS")
 endmacro()
 
-set(CMAKE_TEST_GENERATOR "${CMAKE_GENERATOR}")
-set(CMAKE_TEST_GENERATOR_TOOLSET "${CMAKE_GENERATOR_TOOLSET}")
-set(CMAKE_TEST_MAKEPROGRAM "${CMAKE_MAKE_PROGRAM}")
-
-set(build_generator_args
-  --build-generator ${CMAKE_TEST_GENERATOR}
-  --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
-  )
-if(CMAKE_TEST_GENERATOR_TOOLSET)
-  list(APPEND build_generator_args
-    --build-generator-toolset ${CMAKE_TEST_GENERATOR_TOOLSET}
-    )
-endif()
-
 #
 # Add 'CMake script' Tests
 #
 add_cmakescript_test(ctk_list_to_string_test ctkListToString)
-add_cmakescript_test(_sb_cmakevar_to_cmakearg_test ctkMacroCheckExternalProjectDependencyTest)
-add_cmakescript_test(_sb_extract_varname_and_vartype_test ctkMacroCheckExternalProjectDependencyTest)
-
-add_test(cmake_superbuild_test ${CMAKE_CTEST_COMMAND}
-    --build-and-test
-    "${CMAKE_SOURCE_DIR}/CMake/Testing/SuperBuildTest"
-    "${CMAKE_BINARY_DIR}/CMake/Testing/SuperBuildTest"
-    ${build_generator_args}
-    --build-project SuperBuildTest
-    --build-exe-dir "${CMAKE_BINARY_DIR}/CMake/Testing/SuperBuildTest"
-    --force-new-ctest-process
-    --test-command ${CMAKE_CTEST_COMMAND} -V
-    )
-set_tests_properties(cmake_superbuild_test PROPERTIES LABELS CMake)

+ 0 - 121
CMake/Testing/SuperBuildTest/CMakeLists.txt

@@ -1,121 +0,0 @@
-cmake_minimum_required(VERSION 2.8.7)
-
-set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../" ${CMAKE_MODULE_PATH})
-set(EXTERNAL_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/TheExternals)
-set(EXTERNAL_PROJECT_FILE_PREFIX "TheExternal_")
-include(ExternalProject)
-include(ctkMacroCheckExternalProjectDependency)
-
-project(SuperBuildTest NONE)
-
-option(${PROJECT_NAME}_SUPERBUILD "Build ${PROJECT_NAME} and the projects it depends" ON)
-mark_as_advanced(${PROJECT_NAME}_SUPERBUILD)
-
-if(${PROJECT_NAME}_SUPERBUILD)
-  option(FOO_OPTION "Option mark_as_superbuild" ON)
-  mark_as_superbuild(FOO_OPTION)
-
-  set(FOO_VAR "FooVar")
-  mark_as_superbuild(FOO_VAR)
-
-  set(FOO_LIST Item1 Item2)
-  mark_as_superbuild(FOO_LIST)
-
-  set(FOO_LIST_FOR_CMAKE_CMD "Item1${EP_LIST_SEPARATOR}Item2")
-  mark_as_superbuild(FOO_LIST_FOR_CMAKE_CMD CMAKE_CMD)
-
-  set(FOO_VAR_WITH_LABELS "FooVarWithLabels")
-  mark_as_superbuild(VARS FOO_VAR_WITH_LABELS LABELS "LABEL_A" "LABEL_B")
-
-  set(BAR_VAR_WITH_LABELS "BarVarWithLabels")
-  mark_as_superbuild(VARS BAR_VAR_WITH_LABELS LABELS "LABEL_B")
-
-  set(LibA_VAR "LibA")
-  mark_as_superbuild(VARS LibA_VAR PROJECTS LibA)
-
-  set(LibB_VAR "LibB")
-  mark_as_superbuild(VARS LibB_VAR PROJECTS LibB)
-
-  set(LibA_VAR_WITH_LABELS "LibAWithLabels")
-  mark_as_superbuild(VARS LibA_VAR_WITH_LABELS PROJECTS LibA LABELS "LABEL_A")
-
-  set(MULTIPROJECT_VAR "MultiProjectVar")
-  mark_as_superbuild(VARS MULTIPROJECT_VAR PROJECTS ${PROJECT_NAME} LibA LibB)
-
-  set(MULTIPROJECT_VAR_WITH_LABELS "MultiProjectVarWithLabels")
-  mark_as_superbuild(VARS MULTIPROJECT_VAR_WITH_LABELS PROJECTS ${PROJECT_NAME} LibA LibB LABELS "MULTIPROJECT")
-
-  set(ALL_PROJECTS_VAR "AllProjectsVar")
-  mark_as_superbuild(VARS ALL_PROJECTS_VAR ALL_PROJECTS)
-
-  #set(MULTIPROJECT_VAR_WITH_LABELS "MultiProjectVarWithLabels")
-  #mark_as_superbuild(VARS MULTIPROJECT_VAR_WITH_LABELS PROJECTS ${PROJECT_NAME} LibA LABELS "MULTIPROJECT")
-
-  set(WITHCOLON_VAR "c:/path/to/something" CACHE PATH "Variable with colon")
-  mark_as_superbuild(WITHCOLON_VAR)
-
-  # Since LibC depends on LibD, LibD will also be expected to be found on the system
-  set(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibC 1)
-endif()
-
-set(${PROJECT_NAME}_DEPENDENCIES LibA LibB LibC)
-
-superbuild_include_dependencies(${PROJECT_NAME})
-
-if(${PROJECT_NAME}_SUPERBUILD)
-  ExternalProject_Add(${PROJECT_NAME}
-    ${${PROJECT_NAME}_EXTERNAL_PROJECT_ARGS}
-    DOWNLOAD_COMMAND ""
-    CMAKE_CACHE_ARGS
-      -D${PROJECT_NAME}_SUPERBUILD:BOOL=OFF
-    SOURCE_DIR ${${PROJECT_NAME}_SOURCE_DIR}
-    BINARY_DIR ${${PROJECT_NAME}_BINARY_DIR}/${PROJECT_NAME}-build
-    BUILD_COMMAND ""
-    INSTALL_COMMAND ""
-    DEPENDS
-      ${${PROJECT_NAME}_DEPENDENCIES}
-    )
-  return()
-endif()
-
-function(check_variable var_name expected_value)
-  if(NOT "x${${var_name}}" STREQUAL "x${expected_value}")
-    message(FATAL_ERROR "Problem with mark_as_superbuild() - CMake variable [${var_name}] is incorrectly set !\n"
-                        "current:${${var_name}}\n"
-                        "expected:${expected_value}")
-  endif()
-endfunction()
-
-check_variable(FOO_OPTION "ON")
-check_variable(FOO_VAR "FooVar")
-check_variable(FOO_LIST "Item1;Item2")
-check_variable(FOO_LIST_FOR_CMAKE_CMD "Item1;Item2")
-check_variable(FOO_VAR_WITH_LABELS "FooVarWithLabels")
-check_variable(BAR_VAR_WITH_LABELS "BarVarWithLabels")
-
-check_variable(SuperBuildTest_EP_LABEL_LABEL_A "FOO_VAR_WITH_LABELS")
-check_variable(SuperBuildTest_EP_LABEL_LABEL_B "FOO_VAR_WITH_LABELS;BAR_VAR_WITH_LABELS")
-
-check_variable(SuperBuildTest_EP_LABEL_FIND_PACKAGE "LibA_DIR;LibB_DIR")
-
-get_filename_component(expected_LibA_DIR "${CMAKE_CURRENT_BINARY_DIR}/../LibA-build" REALPATH)
-check_variable(LibA_DIR ${expected_LibA_DIR})
-
-get_filename_component(expected_LibB_DIR "${CMAKE_CURRENT_BINARY_DIR}/../LibB-build" REALPATH)
-check_variable(LibB_DIR ${expected_LibB_DIR})
-
-check_variable(SuperBuildTest_EP_LABEL_USE_SYSTEM
-  "${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibA;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibB;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibD;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibC")
-check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibA "")
-check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibB "")
-check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibC 1)
-check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibD 1)
-
-check_variable(MULTIPROJECT_VAR "MultiProjectVar")
-
-check_variable(SuperBuildTest_EP_LABEL_MULTIPROJECT "MULTIPROJECT_VAR_WITH_LABELS")
-check_variable(MULTIPROJECT_VAR_WITH_LABELS "MultiProjectVarWithLabels")
-
-check_variable(ALL_PROJECTS_VAR "AllProjectsVar")
-
-check_variable(WITHCOLON_VAR "c:/path/to/something")

+ 0 - 22
CMake/Testing/SuperBuildTest/LibA/CMakeLists.txt

@@ -1,22 +0,0 @@
-cmake_minimum_required(VERSION 2.8.7)
-
-project(LibA NONE)
-
-function(check_variable var_name expected_value)
-  if(NOT "x${${var_name}}" STREQUAL "x${expected_value}")
-    message(FATAL_ERROR "Problem with mark_as_superbuild() - CMake variable [${var_name}] is incorrectly set !\n"
-                        "current:${${var_name}}\n"
-                        "expected:${expected_value}")
-  endif()
-endfunction()
-
-check_variable(LibA_VAR "LibA")
-
-check_variable(LibA_EP_LABEL_LABEL_A "LibA_VAR_WITH_LABELS")
-
-check_variable(MULTIPROJECT_VAR "MultiProjectVar")
-
-check_variable(LibA_EP_LABEL_MULTIPROJECT "MULTIPROJECT_VAR_WITH_LABELS")
-check_variable(MULTIPROJECT_VAR_WITH_LABELS "MultiProjectVarWithLabels")
-
-check_variable(ALL_PROJECTS_VAR "AllProjectsVar")

+ 0 - 20
CMake/Testing/SuperBuildTest/LibB/CMakeLists.txt

@@ -1,20 +0,0 @@
-cmake_minimum_required(VERSION 2.8.7)
-
-project(LibB NONE)
-
-function(check_variable var_name expected_value)
-  if(NOT "x${${var_name}}" STREQUAL "x${expected_value}")
-    message(FATAL_ERROR "Problem with mark_as_superbuild() - CMake variable [${var_name}] is incorrectly set !\n"
-                        "current:${${var_name}}\n"
-                        "expected:${expected_value}")
-  endif()
-endfunction()
-
-check_variable(LibB_VAR "LibB")
-
-check_variable(MULTIPROJECT_VAR "MultiProjectVar")
-
-check_variable(LibB_EP_LABEL_MULTIPROJECT "MULTIPROJECT_VAR_WITH_LABELS")
-check_variable(MULTIPROJECT_VAR_WITH_LABELS "MultiProjectVarWithLabels")
-
-check_variable(ALL_PROJECTS_VAR "AllProjectsVar")

+ 0 - 48
CMake/Testing/SuperBuildTest/TheExternals/TheExternal_LibA.cmake

@@ -1,48 +0,0 @@
-#
-# LibA
-#
-
-superbuild_include_once()
-
-set(proj LibA)
-
-set(${proj}_DEPENDENCIES "")
-
-superbuild_include_dependencies(PROJECT_VAR proj)
-
-if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
-  message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
-endif()
-
-mark_as_superbuild(
-  VARS ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}:BOOL
-  LABELS "USE_SYSTEM"
-  )
-
-# Sanity checks
-if(DEFINED LibA_DIR AND NOT EXISTS ${LibA_DIR})
-  message(FATAL_ERROR "LibA_DIR variable is defined but corresponds to non-existing directory")
-endif()
-
-if(NOT DEFINED LibA_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
-
-  ExternalProject_Add(${proj}
-    ${${proj}_EXTERNAL_PROJECT_ARGS}
-    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${proj}
-    BINARY_DIR ${proj}-build
-    DOWNLOAD_COMMAND ""
-    BUILD_COMMAND ""
-    INSTALL_COMMAND ""
-    DEPENDS
-      ${${proj}_DEPENDENCIES}
-    )
-  set(LibA_DIR ${CMAKE_BINARY_DIR}/${proj}-build)
-
-else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
-endif()
-
-mark_as_superbuild(
-  VARS LibA_DIR:PATH
-  LABELS "FIND_PACKAGE"
-  )

+ 0 - 48
CMake/Testing/SuperBuildTest/TheExternals/TheExternal_LibB.cmake

@@ -1,48 +0,0 @@
-#
-# LibB
-#
-
-superbuild_include_once()
-
-set(proj LibB)
-
-set(${proj}_DEPENDENCIES LibA)
-
-superbuild_include_dependencies(PROJECT_VAR proj)
-
-if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
-  message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
-endif()
-
-mark_as_superbuild(
-  VARS ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}:BOOL
-  LABELS "USE_SYSTEM"
-  )
-
-# Sanity checks
-if(DEFINED LibB_DIR AND NOT EXISTS ${LibB_DIR})
-  message(FATAL_ERROR "LibB_DIR variable is defined but corresponds to non-existing directory")
-endif()
-
-if(NOT DEFINED LibB_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
-
-  ExternalProject_Add(${proj}
-    ${${proj}_EXTERNAL_PROJECT_ARGS}
-    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/${proj}
-    BINARY_DIR ${proj}-build
-    DOWNLOAD_COMMAND ""
-    BUILD_COMMAND ""
-    INSTALL_COMMAND ""
-    DEPENDS
-      ${${proj}_DEPENDENCIES}
-    )
-  set(LibB_DIR ${CMAKE_BINARY_DIR}/${proj}-build)
-
-else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
-endif()
-
-mark_as_superbuild(
-  VARS LibB_DIR:PATH
-  LABELS "FIND_PACKAGE"
-  )

+ 0 - 34
CMake/Testing/SuperBuildTest/TheExternals/TheExternal_LibC.cmake

@@ -1,34 +0,0 @@
-#
-# LibC
-#
-
-superbuild_include_once()
-
-set(proj LibC)
-
-set(${proj}_DEPENDENCIES LibD)
-
-superbuild_include_dependencies(PROJECT_VAR proj)
-
-if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
-  unset(LibC_DIR CACHE)
-endif()
-
-mark_as_superbuild(
-  VARS ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}:BOOL
-  LABELS "USE_SYSTEM"
-  )
-
-# Sanity checks
-if(DEFINED LibC_DIR AND NOT EXISTS ${LibC_DIR})
-  message(FATAL_ERROR "LibC_DIR variable is defined but corresponds to non-existing directory")
-endif()
-
-if(NOT DEFINED LibC_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
-
-   message(FATAL_ERROR "Disabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
-
-else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
-endif()
-

+ 0 - 34
CMake/Testing/SuperBuildTest/TheExternals/TheExternal_LibD.cmake

@@ -1,34 +0,0 @@
-#
-# LibD
-#
-
-superbuild_include_once()
-
-set(proj_libd LibD)
-
-set(${proj_libd}_DEPENDENCIES "")
-
-superbuild_include_dependencies(PROJECT_VAR proj_libd)
-
-if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj_libd})
-  unset(LibD_DIR CACHE)
-endif()
-
-mark_as_superbuild(
-  VARS ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj_libd}:BOOL
-  LABELS "USE_SYSTEM"
-  )
-
-# Sanity checks
-if(DEFINED LibD_DIR AND NOT EXISTS ${LibD_DIR})
-  message(FATAL_ERROR "LibD_DIR variable is defined but corresponds to non-existing directory")
-endif()
-
-if(NOT DEFINED LibD_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj_libd})
-
-  message(FATAL_ERROR "Disabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj_libd} is not supported !")
-
-else()
-  superbuild_add_empty_external_project(${proj_libd} "${${proj_libd}_DEPENDENCIES}")
-endif()
-

+ 6 - 1
CMake/ctkBlockCheckDependencies.cmake

@@ -118,7 +118,12 @@ macro(superbuild_is_external_project_includable possible_proj output_var)
   endif()
 endmacro()
 
-superbuild_include_dependencies(CTK)
+set(proj CTK)
+ExternalProject_Include_Dependencies(CTK
+  PROJECT_VAR proj
+  DEPENDS_VAR CTK_DEPENDENCIES
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 #message("Updated CTK_DEPENDENCIES:")
 #foreach(dep ${CTK_DEPENDENCIES})

+ 254 - 137
CMake/ctkMacroCheckExternalProjectDependency.cmake

@@ -19,14 +19,13 @@
 ###########################################################################
 
 include(CMakeParseArguments)
-include(ctkListToString)
 
 if(NOT DEFINED EP_LIST_SEPARATOR)
   set(EP_LIST_SEPARATOR "^^")
 endif()
 
 if(NOT EXISTS "${EXTERNAL_PROJECT_DIR}")
-  set(EXTERNAL_PROJECT_DIR ${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/SuperBuild)
+  set(EXTERNAL_PROJECT_DIR ${CMAKE_SOURCE_DIR}/SuperBuild)
 endif()
 
 if(NOT DEFINED EXTERNAL_PROJECT_FILE_PREFIX)
@@ -40,29 +39,6 @@ else()
   set(EP_CMAKE_GENERATOR "${CMAKE_GENERATOR}")
 endif()
 
-#
-# superbuild_include_once()
-#
-# superbuild_include_once() is a macro intented to be used as include guard.
-#
-# It ensures that the CMake code placed after the include guard in a CMake file included
-# using either 'include(/path/to/file.cmake)' or 'include(cmake_module)' will be executed
-# once.
-#
-# It internally set the global property '<CMAKE_CURRENT_LIST_FILENAME>_FILE_INCLUDED' to check if
-# a file has already been included.
-#
-macro(superbuild_include_once)
-  # Make sure this file is included only once
-  get_filename_component(CMAKE_CURRENT_LIST_FILENAME ${CMAKE_CURRENT_LIST_FILE} NAME_WE)
-  set(_property_name ${CMAKE_CURRENT_LIST_FILENAME}_FILE_INCLUDED)
-  get_property(${_property_name} GLOBAL PROPERTY ${_property_name})
-  if(${_property_name})
-    return()
-  endif()
-  set_property(GLOBAL PROPERTY ${_property_name} 1)
-endmacro()
-
 #!
 #! mark_as_superbuild(<varname1>[:<vartype1>] [<varname2>[:<vartype2>] [...]])
 #!
@@ -160,6 +136,34 @@ function(_sb_extract_varname_and_vartype cmake_varname_and_type varname_var)
   endif()
 endfunction()
 
+
+function(_sb_list_to_string separator input_list output_string_var)
+  set(_string "")
+  cmake_policy(PUSH)
+  cmake_policy(SET CMP0007 OLD)
+  # Get list length
+  list(LENGTH input_list list_length)
+  # If the list has 0 or 1 element, there is no need to loop over.
+  if(list_length LESS 2)
+    set(_string  "${input_list}")
+  else()
+    math(EXPR last_element_index "${list_length} - 1")
+    foreach(index RANGE ${last_element_index})
+      # Get current item_value
+      list(GET input_list ${index} item_value)
+      # .. and append to output string
+      set(_string  "${_string}${item_value}")
+      # Append separator if current element is NOT the last one.
+      if(NOT index EQUAL last_element_index)
+        set(_string  "${_string}${separator}")
+      endif()
+    endforeach()
+  endif()
+  set(${output_string_var} ${_string} PARENT_SCOPE)
+  cmake_policy(POP)
+endfunction()
+
+
 #!
 #! _sb_cmakevar_to_cmakearg(<cmake_varname_and_type> <cmake_arg_var> <cmake_arg_type> [<varname_var> [<vartype_var>]])
 #!
@@ -192,7 +196,7 @@ function(_sb_cmakevar_to_cmakearg cmake_varname_and_type cmake_arg_var cmake_arg
 
   if(cmake_arg_type STREQUAL "CMAKE_CMD")
     # Separate list item with <EP_LIST_SEPARATOR>
-    ctk_list_to_string(${EP_LIST_SEPARATOR} "${_var_value}" _var_value)
+    _sb_list_to_string(${EP_LIST_SEPARATOR} "${_var_value}" _var_value)
   endif()
 
   set(${cmake_arg_var} -D${_varname}:${_vartype}=${_var_value} PARENT_SCOPE)
@@ -259,7 +263,7 @@ function(_sb_append_to_cmake_args)
         set_property(GLOBAL APPEND PROPERTY ${_sb_PROJECT}_EP_${_ep_property} ${varname_and_vartype})
         _sb_extract_varname_and_vartype(${varname_and_vartype} _varname)
       else()
-        message(FATAL_ERROR "Function _sb_append_to_cmake_args not allowed is project already added !")
+        message(FATAL_ERROR "Function _sb_append_to_cmake_args not allowed because project '${_sb_PROJECT}' already added !")
       endif()
       list(APPEND _ep_varnames ${_varname})
     endforeach()
@@ -313,9 +317,10 @@ function(_sb_get_external_project_arguments proj varname)
   foreach(property CMAKE_ARGS CMAKE_CACHE_ARGS)
     get_property(${proj}_EP_PROPERTY_${property} GLOBAL PROPERTY ${proj}_EP_PROPERTY_${property})
     get_property(${_ALL_PROJECT_IDENTIFIER}_EP_PROPERTY_${property} GLOBAL PROPERTY ${_ALL_PROJECT_IDENTIFIER}_EP_PROPERTY_${property})
-    if(${proj}_EP_PROPERTY_${property} OR ${_ALL_PROJECT_IDENTIFIER}_EP_PROPERTY_${property})
-      list(APPEND _ep_arguments ${property}
-        ${${proj}_EP_PROPERTY_${property}} ${${_ALL_PROJECT_IDENTIFIER}_EP_PROPERTY_${property}})
+    set(_all ${${proj}_EP_PROPERTY_${property}} ${${_ALL_PROJECT_IDENTIFIER}_EP_PROPERTY_${property}})
+    if(_all)
+      list(REMOVE_DUPLICATES _all)
+      list(APPEND _ep_arguments ${property} ${_all})
     endif()
   endforeach()
 
@@ -327,7 +332,7 @@ function(_sb_get_external_project_arguments proj varname)
 endfunction()
 
 function(_sb_update_indent proj)
-  superbuild_stack_size(SUPERBUILD_PROJECT_STACK _stack_size)
+  superbuild_stack_size(SB_PROJECT_STACK _stack_size)
   set(_indent "")
   if(_stack_size GREATER 0)
     foreach(not_used RANGE 1 ${_stack_size})
@@ -338,7 +343,7 @@ function(_sb_update_indent proj)
 endfunction()
 
 function(superbuild_message proj msg)
-  if(NOT SUPERBUILD_FIRST_PASS)
+  if(NOT SB_FIRST_PASS)
     get_property(_indent GLOBAL PROPERTY SUPERBUILD_${proj}_INDENT)
     message(STATUS "SuperBuild - ${_indent}${msg}")
   endif()
@@ -398,84 +403,164 @@ function(superbuild_stack_pop stack_name item_var)
   endif()
 endfunction()
 
-#
-# superbuild_include_dependencies(<project>)
-#
-# superbuild_include_dependencies(PROJECT_VAR <project_var>)
-#
-macro(superbuild_include_dependencies)
+function(_sb_is_optional proj output_var)
+  set(_include_project 1)
+  if(COMMAND superbuild_is_external_project_includable)
+    superbuild_is_external_project_includable("${proj}" _include_project)
+  endif()
+  set(optional 1)
+  if(_include_project)
+    set(optional 0)
+  endif()
+  set(${output_var} ${optional} PARENT_SCOPE)
+endfunction()
+
+
+#!
+#! ExternalProject_Include_Dependencies(<project_name>
+#!     [PROJECT_VAR <project_var>]
+#!     [EP_ARGS_VAR <external_project_args_var>]
+#!     [DEPENDS_VAR <depends_var>]
+#!     [USE_SYSTEM_VAR <use_system_var>]
+#!     [SUPERBUILD_VAR <superbuild_var>]
+#!   )
+#!
+macro(ExternalProject_Include_Dependencies project_name)
   set(options)
-  set(oneValueArgs PROJECT_VAR)
+  set(oneValueArgs PROJECT_VAR DEPENDS_VAR EP_ARGS_VAR USE_SYSTEM_VAR SUPERBUILD_VAR)
   set(multiValueArgs)
   cmake_parse_arguments(_sb "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 
-  # XXX Implement invalid parameter checking
+  # Sanity checks
+  if(x${project_name} STREQUAL xPROJECT_VAR
+      OR x${project_name} STREQUAL xEP_ARGS_VAR
+      OR x${project_name} STREQUAL xDEPENDS_VAR
+      OR x${project_name} STREQUAL xUSE_SYSTEM_VAR
+      OR x${project_name} STREQUAL xSUPERBUILD_VAR
+      )
+    message(FATAL_ERROR "Argument <project_name> is missing !")
+  endif()
+  if(_sb_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Invalid arguments: ${_sb_UNPARSED_ARGUMENTS}")
+  endif()
+  if(_sb_PROJECT_VAR AND NOT x${project_name} STREQUAL x${${_sb_PROJECT_VAR}})
+    message(FATAL_ERROR
+      "Argument <project_name>:${project_name} and PROJECT_VAR:${_sb_PROJECT_VAR}:${${_sb_PROJECT_VAR}} are different !")
+  endif()
+
+  set(_sb_proj ${project_name})
 
-  if(NOT "x" STREQUAL "x${_sb_PROJECT_VAR}")
-    set(proj ${${_sb_PROJECT_VAR}})
-  else()
-    set(proj ${_sb_UNPARSED_ARGUMENTS})
+  # Skip if project already included
+  get_property(_is_included GLOBAL PROPERTY SB_${_sb_proj}_FILE_INCLUDED)
+  if(_is_included)
+    return()
   endif()
 
-  # Sanity checks
-  if(NOT DEFINED ${proj}_DEPENDENCIES)
-    message(FATAL_ERROR "${proj}_DEPENDENCIES variable is NOT defined !")
+  # Set default for optional PROJECT_VAR parameter
+  if(NOT _sb_PROJECT_VAR)
+    set(_sb_PROJECT_VAR proj)
+    #message("Setting _sb_PROJECT_VAR with default value '${_sb_PROJECT_VAR}'")
   endif()
 
-  superbuild_stack_size(SUPERBUILD_PROJECT_STACK _stack_size)
+  # Set default for optional DEPENDS_VAR and EP_ARGS parameters
+  foreach(param DEPENDS EP_ARGS)
+    if(NOT _sb_${param}_VAR)
+      set(_sb_${param}_VAR ${_sb_proj}_${param})
+      #message("Setting _sb_${param}_VAR with default value '${_sb_${param}_VAR}'")
+    endif()
+  endforeach()
+
+  # Set top level project
+  superbuild_stack_size(SB_PROJECT_STACK _stack_size)
   if(_stack_size EQUAL 0)
-    set(SUPERBUILD_TOPLEVEL_PROJECT ${proj})
+    set(SUPERBUILD_TOPLEVEL_PROJECT ${_sb_proj})
   endif()
 
-  _sb_update_indent(${proj})
+  # Set default for optional USE_SYSTEM_VAR parameter
+  if(NOT _sb_USE_SYSTEM_VAR)
+    set(_sb_USE_SYSTEM_VAR ${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${_sb_proj})
+    #message("Setting _sb_USE_SYSTEM_VAR with default value '${_sb_USE_SYSTEM_VAR}'")
+  endif()
+
+  # Set default for optional SUPERBUILD_VAR parameter
+  if(NOT _sb_SUPERBUILD_VAR)
+    set(_sb_SUPERBUILD_VAR ${SUPERBUILD_TOPLEVEL_PROJECT}_SUPERBUILD)
+    #message("Setting _sb_SUPERBUILD_VAR with default value '${_sb_SUPERBUILD_VAR}'")
+  endif()
+
+  # Keeping track of variable name independently of the recursion
+  if(NOT DEFINED _sb_SB_VAR)
+    set(_sb_SB_VAR ${_sb_SUPERBUILD_VAR})
+    #message("Setting _sb_SB_VAR with default value '${_sb_SB_VAR}'")
+  endif()
+
+  # Set local variables
+  set(_sb_DEPENDS ${${_sb_DEPENDS_VAR}})
+  set(_sb_USE_SYSTEM ${${_sb_USE_SYSTEM_VAR}})
+
+  _sb_update_indent(${_sb_proj})
 
   # Keep track of the projects
-  list(APPEND __epd_${SUPERBUILD_TOPLEVEL_PROJECT}_projects ${proj})
+  list(APPEND SB_${SUPERBUILD_TOPLEVEL_PROJECT}_POSSIBLE_DEPENDS ${_sb_proj})
 
-  # Is this the first run ? (used to set the <SUPERBUILD_TOPLEVEL_PROJECT>_USE_SYSTEM_* variables)
-  if(${proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT} AND NOT DEFINED SUPERBUILD_FIRST_PASS)
+  # Use system ?
+  get_property(_use_system_set GLOBAL PROPERTY SB_${_sb_proj}_USE_SYSTEM SET)
+  if(_use_system_set)
+    get_property(_sb_USE_SYSTEM GLOBAL PROPERTY SB_${_sb_proj}_USE_SYSTEM)
+  endif()
+
+  # Is this the first run ?
+  if(${_sb_proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT} AND NOT DEFINED SB_FIRST_PASS)
     message(STATUS "SuperBuild - First pass")
-    set(SUPERBUILD_FIRST_PASS TRUE)
+    set(SB_FIRST_PASS TRUE)
   endif()
 
   # Display dependency of project being processed
-  if("${${proj}_DEPENDENCIES}" STREQUAL "")
-    set(_msg "${proj}[OK]")
-    if(${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj})
-      set(_msg "${_msg} (SYSTEM)")
-    endif()
-    superbuild_message(${proj} ${_msg})
-  else()
-    set(dependency_str " ")
-    foreach(dep ${${proj}_DEPENDENCIES})
-      get_property(_is_included GLOBAL PROPERTY ${EXTERNAL_PROJECT_FILE_PREFIX}${dep}_FILE_INCLUDED)
+  if(_sb_DEPENDS)
+    set(dependency_str "")
+    foreach(dep ${_sb_DEPENDS})
+      get_property(_is_included GLOBAL PROPERTY SB_${dep}_FILE_INCLUDED)
+      set(_include_status "")
       if(_is_included)
-        set(dependency_str "${dependency_str}${dep}[INCLUDED], ")
-      else()
-        set(dependency_str "${dependency_str}${dep}, ")
+        set(_include_status "[INCLUDED]")
       endif()
+      set(dependency_str "${dependency_str}${dep}${_include_status}, ")
     endforeach()
-    superbuild_message(${proj} "${proj} => Requires${dependency_str}")
+    superbuild_message(${_sb_proj} "${_sb_proj} => Requires ${dependency_str}")
   endif()
 
-  if(NOT ${proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT})
-    foreach(dep ${${proj}_DEPENDENCIES})
-      if(${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}})
-        set(${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${dep} ${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}})
+
+  foreach(dep ${_sb_DEPENDS})
+    if(NOT ${_sb_proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT})
+      if(_sb_USE_SYSTEM)
+        set_property(GLOBAL PROPERTY SB_${dep}_USE_SYSTEM ${_sb_USE_SYSTEM})
+        #message(${_sb_proj} "Property SB_${dep}_USE_SYSTEM set to [${_sb_USE_SYSTEM_VAR}:${_sb_USE_SYSTEM}]")
       endif()
-      #if(SUPERBUILD_FIRST_PASS)
-      #  message("${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${dep} set to "
-      #          "[${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}:${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}}]")
-      #endif()
-    endforeach()
-  endif()
+    endif()
+    _sb_is_optional(${dep} _optional)
+    set_property(GLOBAL PROPERTY SB_${dep}_OPTIONAL ${_optional})
+    #message(${_sb_proj} "Property SB_${dep}_OPTIONAL set to ${_optional}")
+  endforeach()
 
-  superbuild_stack_push(SUPERBUILD_PROJECT_STACK ${proj})
+  # Save variables
+  set_property(GLOBAL PROPERTY SB_${_sb_proj}_DEPENDS          ${_sb_DEPENDS})
+  set_property(GLOBAL PROPERTY SB_${_sb_proj}_DEPENDS_VAR      ${_sb_DEPENDS_VAR})
+  set_property(GLOBAL PROPERTY SB_${_sb_proj}_EP_ARGS_VAR      ${_sb_EP_ARGS_VAR})
+  set_property(GLOBAL PROPERTY SB_${_sb_proj}_USE_SYSTEM       ${_sb_USE_SYSTEM})
+  set_property(GLOBAL PROPERTY SB_${_sb_proj}_USE_SYSTEM_VAR   ${_sb_USE_SYSTEM_VAR})
+  set_property(GLOBAL PROPERTY SB_${_sb_proj}_PROJECT_VAR      ${_sb_PROJECT_VAR})
+  superbuild_stack_push(SB_PROJECT_STACK ${_sb_proj})
 
   # Include dependencies
-  foreach(dep ${${proj}_DEPENDENCIES})
-    get_property(_is_included GLOBAL PROPERTY External_${dep}_FILE_INCLUDED)
-    if(NOT _is_included)
+  foreach(dep ${_sb_DEPENDS})
+    get_property(_included GLOBAL PROPERTY SB_${dep}_FILE_INCLUDED)
+    get_property(_optional GLOBAL PROPERTY SB_${dep}_OPTIONAL)
+    set(_include 0)
+    if( (SB_FIRST_PASS AND NOT _included)
+        OR (NOT SB_FIRST_PASS AND NOT _included AND NOT _optional))
+      set(_include 1)
+    endif()
+    if(_include)
       # XXX - Refactor - Add a single variable named 'EXTERNAL_PROJECT_DIRS'
       if(EXISTS "${EXTERNAL_PROJECT_DIR}/${EXTERNAL_PROJECT_FILE_PREFIX}${dep}.cmake")
         include(${EXTERNAL_PROJECT_DIR}/${EXTERNAL_PROJECT_FILE_PREFIX}${dep}.cmake)
@@ -486,86 +571,118 @@ macro(superbuild_include_dependencies)
       else()
         message(FATAL_ERROR "Can't find ${EXTERNAL_PROJECT_FILE_PREFIX}${dep}.cmake")
       endif()
+      set_property(GLOBAL PROPERTY SB_${dep}_FILE_INCLUDED 1)
     endif()
   endforeach()
 
-  superbuild_stack_pop(SUPERBUILD_PROJECT_STACK proj)
-
-  # If project being process has dependencies, indicates it has also been added.
-  if(NOT "${${proj}_DEPENDENCIES}" STREQUAL "")
-    set(_msg "${proj}[OK]")
-    if(${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj})
-      set(_msg "${_msg} (SYSTEM)")
-    endif()
-    superbuild_message(${proj} ${_msg})
+  # Restore variables
+  superbuild_stack_pop(SB_PROJECT_STACK _sb_proj)
+  get_property(_sb_PROJECT_VAR      GLOBAL PROPERTY SB_${_sb_proj}_PROJECT_VAR)
+  get_property(_sb_USE_SYSTEM_VAR   GLOBAL PROPERTY SB_${_sb_proj}_USE_SYSTEM_VAR)
+  get_property(_sb_USE_SYSTEM       GLOBAL PROPERTY SB_${_sb_proj}_USE_SYSTEM)
+  get_property(_sb_EP_ARGS_VAR      GLOBAL PROPERTY SB_${_sb_proj}_EP_ARGS_VAR)
+  get_property(_sb_DEPENDS_VAR      GLOBAL PROPERTY SB_${_sb_proj}_DEPENDS_VAR)
+  get_property(_sb_DEPENDS          GLOBAL PROPERTY SB_${_sb_proj}_DEPENDS)
+
+  # Use system ?
+  set(_include_type "")
+  if(_sb_USE_SYSTEM)
+    set(_include_type " (SYSTEM)")
   endif()
+  superbuild_message(${_sb_proj} "${_sb_proj}[OK]${_include_type}")
 
-  if(${proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT} AND SUPERBUILD_FIRST_PASS)
-    message(STATUS "SuperBuild - First pass - done")
-
-    unset(${SUPERBUILD_TOPLEVEL_PROJECT}_DEPENDENCIES) # XXX - Refactor
-
-    set(SUPERBUILD_FIRST_PASS FALSE)
+  if(${_sb_proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT} AND SB_FIRST_PASS)
+    set(SB_FIRST_PASS FALSE)
+    superbuild_message(${_sb_proj} "First pass - done")
 
-    foreach(possible_proj ${__epd_${SUPERBUILD_TOPLEVEL_PROJECT}_projects})
-
-      set_property(GLOBAL PROPERTY ${EXTERNAL_PROJECT_FILE_PREFIX}${possible_proj}_FILE_INCLUDED 0)
+    foreach(possible_proj ${SB_${SUPERBUILD_TOPLEVEL_PROJECT}_POSSIBLE_DEPENDS})
+      get_property(_optional GLOBAL PROPERTY SB_${possible_proj}_OPTIONAL)
+      if(_optional)
+        superbuild_message(${_sb_proj} "${possible_proj}[OPTIONAL]")
+      endif()
+      set_property(GLOBAL PROPERTY SB_${possible_proj}_FILE_INCLUDED 0)
+    endforeach()
 
-      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()
-          if(${SUPERBUILD_TOPLEVEL_PROJECT}_SUPERBUILD)
-            superbuild_message(STATUS "${possible_proj}[OPTIONAL]")
-          endif()
-        endif()
+    set(_required_depends)
+    foreach(possible_proj ${${_sb_DEPENDS_VAR}})
+      get_property(_optional GLOBAL PROPERTY SB_${possible_proj}_OPTIONAL)
+      if(NOT _optional)
+        list(APPEND _required_depends ${possible_proj})
       endif()
+      set_property(GLOBAL PROPERTY SB_${possible_proj}_FILE_INCLUDED 0)
     endforeach()
+    set(_sb_DEPENDS ${_required_depends})
+    set(${_sb_DEPENDS_VAR} ${_sb_DEPENDS})
+
+    set(SB_SECOND_PASS TRUE)
+    ExternalProject_Include_Dependencies(${_sb_proj}
+      PROJECT_VAR SUPERBUILD_TOPLEVEL_PROJECT
+      DEPENDS_VAR ${_sb_DEPENDS_VAR}
+      EP_ARGS_VAR ${_sb_EP_ARGS_VAR}
+      USE_SYSTEM_VAR _sb_USE_SYSTEM
+      SUPERBUILD_VAR ${_sb_SB_VAR}
+      )
+    set(SB_SECOND_PASS FALSE)
 
-    list(REMOVE_DUPLICATES ${SUPERBUILD_TOPLEVEL_PROJECT}_DEPENDENCIES)
+  endif()
 
-    if(${SUPERBUILD_TOPLEVEL_PROJECT}_SUPERBUILD)
-      superbuild_include_dependencies(${SUPERBUILD_TOPLEVEL_PROJECT})
+  if(SB_FIRST_PASS OR NOT ${_sb_SB_VAR})
+    if(NOT ${_sb_proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT})
+      return()
     endif()
-
-    set(SUPERBUILD_FIRST_PASS TRUE)
   endif()
 
-  if(_sb_PROJECT_VAR)
-    set(${_sb_PROJECT_VAR} ${proj})
+  if(SB_SECOND_PASS)
+    _sb_get_external_project_arguments(${_sb_proj} ${_sb_EP_ARGS_VAR})
   endif()
 
-  if(SUPERBUILD_FIRST_PASS)
-    if(NOT ${proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT})
-      return()
-    endif()
-  else()
-    unset(${proj}_EXTERNAL_PROJECT_ARGS)
-    _sb_get_external_project_arguments(${proj} ${proj}_EXTERNAL_PROJECT_ARGS)
-    #message("${proj}_EXTERNAL_PROJECT_ARGS:${${proj}_EXTERNAL_PROJECT_ARGS}")
+  if(NOT SB_FIRST_PASS AND NOT SB_SECOND_PASS
+      AND ${_sb_proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT})
+    #superbuild_message(${_sb_proj} "Clean up")
+    unset(_sb_SB_VAR)
+    unset(SB_FIRST_PASS)
+    unset(SB_SECOND_PASS)
   endif()
+
+  # Set public variables
+  set(${_sb_PROJECT_VAR} ${_sb_proj})
+  set(${_sb_DEPENDS_VAR} ${_sb_DEPENDS})
+  set(${_sb_USE_SYSTEM_VAR} ${_sb_USE_SYSTEM})
+
+  #message("[${_sb_proj}] #################################")
+  #message("[${_sb_proj}] Setting ${_sb_PROJECT_VAR}:${_sb_proj}")
+  #message("[${_sb_proj}] Setting ${_sb_EP_ARGS_VAR}:${${_sb_EP_ARGS_VAR}}")
+  #message("[${_sb_proj}] Setting ${_sb_DEPENDS_VAR}:${_sb_DEPENDS}")
+  #message("[${_sb_proj}] Setting ${_sb_USE_SYSTEM_VAR}:${_sb_USE_SYSTEM}")
 endmacro()
 
+
 #!
-#! Convenient macro allowing to define a "empty" project in case an external one is provided
-#! using for example <proj>_DIR.
-#! Doing so allows to keep the external project dependency system happy.
+#! ExternalProject_Add_Empty(<project_name>
+#!     DEPENDS <depends>
+#!   )
 #!
-#! \ingroup CMakeUtilities
-macro(superbuild_add_empty_external_project proj dependencies)
+macro(ExternalProject_Add_Empty project_name)
+  set(options)
+  set(oneValueArgs)
+  set(multiValueArgs DEPENDS)
+  cmake_parse_arguments(_sb "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+  # Sanity checks
+  if(x${project_name} STREQUAL xDEPENDS)
+    message(FATAL_ERROR "Argument <project_name> is missing !")
+  endif()
+  if(_sb_UNPARSED_ARGUMENTS)
+    message(FATAL_ERROR "Invalid arguments: ${_sb_UNPARSED_ARGUMENTS}")
+  endif()
 
-  ExternalProject_Add(${proj}
-    SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}
-    BINARY_DIR ${proj}-build
+  ExternalProject_Add(${project_name}
+    SOURCE_DIR ${CMAKE_BINARY_DIR}/${project_name}
+    BINARY_DIR ${project_name}-build
     DOWNLOAD_COMMAND ""
     CONFIGURE_COMMAND ""
     BUILD_COMMAND ""
     INSTALL_COMMAND ""
-    DEPENDS
-      ${dependencies}
+    DEPENDS ${_sb_DEPENDS}
     )
 endmacro()

+ 0 - 142
CMake/ctkMacroCheckExternalProjectDependencyTest.cmake

@@ -1,142 +0,0 @@
-
-set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR} ${CMAKE_MODULE_PATH})
-include(ctkMacroCheckExternalProjectDependency)
-
-#
-# cmake -DTEST__sb_cmakevar_to_cmakearg_test:BOOL=ON -P ctkMacroCheckExternalProjectDependencyTest.cmake
-#
-function(_sb_cmakevar_to_cmakearg_test)
-  function(check_test_result id current_output expected_output
-      current_varname expected_varname
-      current_vartype expected_vartype)
-    if(NOT "${current_output}" STREQUAL "${expected_output}")
-      message(FATAL_ERROR "Problem with _sb_cmakevar_to_cmakearg() - See testcase: ${id}\n"
-                          "current_output:${current_output}\n"
-                          "expected_output:${expected_output}")
-    endif()
-    if(NOT "${current_varname}" STREQUAL "${expected_varname}")
-      message(FATAL_ERROR "Problem with _sb_cmakevar_to_cmakearg() - See testcase: ${id}\n"
-                          "current_varname:${current_varname}\n"
-                          "expected_varname:${expected_varname}")
-    endif()
-    if(NOT "${current_vartype}" STREQUAL "${expected_vartype}")
-      message(FATAL_ERROR "Problem with _sb_cmakevar_to_cmakearg() - See testcase: ${id}\n"
-                          "current_vartype:${current_vartype}\n"
-                          "expected_vartype:${expected_vartype}")
-    endif()
-  endfunction()
-
-  function(check_variable id var_name expected_value)
-    if(NOT "x${${var_name}}" STREQUAL "x${expected_value}")
-      message(FATAL_ERROR "Problem with _sb_cmakevar_to_cmakearg() - See testcase: ${id}\n"
-                          "CMake variable [${var_name}] has wrong value !\n"
-                          "current:${${var_name}}\n"
-                          "expected:${expected_value}")
-    endif()
-  endfunction()
-
-  set(id 1)
-  set(case${id}_input "Hello")
-  set(case${id}_expected_varname "")
-  set(case${id}_expected_vartype "")
-  set(case${id}_expected_cmake_arg_var "-Dcase${id}_input:STRING=${case${id}_input}")
-  _sb_cmakevar_to_cmakearg("case${id}_input:STRING"
-      case${id}_cmake_arg_var CMAKE_CACHE
-      )
-  check_test_result(${id}
-      "${case${id}_cmake_arg_var}" "${case${id}_expected_cmake_arg_var}"
-      "${case${id}_varname}" "${case${id}_expected_varname}"
-      "${case${id}_vartype}" "${case${id}_expected_vartype}")
-  check_variable(${id} case${id}_input "Hello")
-
-  set(id 2)
-  set(case${id}_input "Hello")
-  set(case${id}_expected_varname "case${id}_input")
-  set(case${id}_expected_vartype "STRING")
-  set(case${id}_expected_cmake_arg_var "-Dcase${id}_input:STRING=${case${id}_input}")
-  _sb_cmakevar_to_cmakearg("case${id}_input:STRING"
-      case${id}_cmake_arg_var CMAKE_CACHE
-      case${id}_varname case${id}_vartype)
-  check_test_result(${id}
-      "${case${id}_cmake_arg_var}" "${case${id}_expected_cmake_arg_var}"
-      "${case${id}_varname}" "${case${id}_expected_varname}"
-      "${case${id}_vartype}" "${case${id}_expected_vartype}")
-  check_variable(${id} case${id}_input "Hello")
-
-  set(id 3)
-  set(case${id}_input Hello World)
-  set(case${id}_expected_varname "case${id}_input")
-  set(case${id}_expected_vartype "STRING")
-  set(case${id}_expected_cmake_arg_var "-Dcase${id}_input:STRING=${case${id}_input}")
-  _sb_cmakevar_to_cmakearg("case${id}_input:STRING"
-      case${id}_cmake_arg_var CMAKE_CACHE
-      case${id}_varname case${id}_vartype)
-  check_test_result(${id}
-      "${case${id}_cmake_arg_var}" "${case${id}_expected_cmake_arg_var}"
-      "${case${id}_varname}" "${case${id}_expected_varname}"
-      "${case${id}_vartype}" "${case${id}_expected_vartype}")
-  check_variable(${id} case${id}_input "Hello;World")
-
-  set(id 4)
-  set(case${id}_input Hello World)
-  set(case${id}_expected_varname "case${id}_input")
-  set(case${id}_expected_vartype "STRING")
-  set(case${id}_expected_cmake_arg_var "-Dcase${id}_input:STRING=Hello^^World")
-  _sb_cmakevar_to_cmakearg("case${id}_input:STRING"
-      case${id}_cmake_arg_var CMAKE_CMD
-      case${id}_varname case${id}_vartype)
-  check_test_result(${id}
-      "${case${id}_cmake_arg_var}" "${case${id}_expected_cmake_arg_var}"
-      "${case${id}_varname}" "${case${id}_expected_varname}"
-      "${case${id}_vartype}" "${case${id}_expected_vartype}")
-  check_variable(${id} case${id}_input "Hello;World")
-
-  message("SUCCESS")
-endfunction()
-if(TEST__sb_cmakevar_to_cmakearg_test)
-  _sb_cmakevar_to_cmakearg_test()
-endif()
-
-#
-# cmake -DTEST__sb_extract_varname_and_vartype_test:BOOL=ON -P ctkMacroCheckExternalProjectDependencyTest.cmake
-#
-function(_sb_extract_varname_and_vartype_test)
-  function(check_test_result id current_varname expected_varname
-      current_vartype expected_vartype)
-    if(NOT "${current_varname}" STREQUAL "${expected_varname}")
-      message(FATAL_ERROR "Problem with _sb_extract_varname_and_vartype() - See testcase: ${id}\n"
-                          "current_varname:${current_varname}\n"
-                          "expected_varname:${expected_varname}")
-    endif()
-    if(NOT "${current_vartype}" STREQUAL "${expected_vartype}")
-      message(FATAL_ERROR "Problem with _sb_extract_varname_and_vartype() - See testcase: ${id}\n"
-                          "current_vartype:${current_vartype}\n"
-                          "expected_vartype:${expected_vartype}")
-    endif()
-  endfunction()
-
-  set(id 1)
-  set(case${id}_input "VAR:STRING")
-  set(case${id}_expected_varname "VAR")
-  set(case${id}_expected_vartype "STRING")
-  _sb_extract_varname_and_vartype("${case${id}_input}"
-      case${id}_varname case${id}_vartype)
-  check_test_result(${id}
-      "${case${id}_varname}" "${case${id}_expected_varname}"
-      "${case${id}_vartype}" "${case${id}_expected_vartype}")
-
-  set(id 2)
-  set(case${id}_input "VAR:STRING")
-  set(case${id}_expected_varname "VAR")
-  set(case${id}_expected_vartype "")
-  _sb_extract_varname_and_vartype("${case${id}_input}"
-      case${id}_varname)
-  check_test_result(${id}
-      "${case${id}_varname}" "${case${id}_expected_varname}"
-      "${case${id}_vartype}" "${case${id}_expected_vartype}")
-
-  message("SUCCESS")
-endfunction()
-if(TEST__sb_extract_varname_and_vartype_test)
-  _sb_extract_varname_and_vartype_test()
-endif()

+ 7 - 4
CMakeExternals/CTKData.cmake

@@ -2,13 +2,16 @@
 # CTKData
 #
 
-superbuild_include_once()
-
 set(proj CTKData)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
@@ -52,7 +55,7 @@ if(NOT DEFINED CTKData_DIR)
     )
   set(CTKData_DIR ${CMAKE_BINARY_DIR}/${proj})
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/DCMTK.cmake

@@ -2,13 +2,16 @@
 # DCMTK
 #
 
-superbuild_include_once()
-
 set(proj DCMTK)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   unset(DCMTK_DIR CACHE)
@@ -73,7 +76,7 @@ if(NOT DEFINED DCMTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   set(DCMTK_DIR ${ep_install_dir})
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/ITK.cmake

@@ -2,13 +2,16 @@
 # ITK
 #
 
-superbuild_include_once()
-
 set(proj ITK)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   unset(ITK_DIR CACHE)
@@ -70,7 +73,7 @@ if(NOT DEFINED ITK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   set(ITK_DIR ${CMAKE_BINARY_DIR}/${proj}-build)
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/KWStyle.cmake

@@ -2,13 +2,16 @@
 # KWStyle
 #
 
-superbuild_include_once()
-
 set(proj KWStyle)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   unset(KWSTYLE_EXECUTABLE CACHE)
@@ -47,7 +50,7 @@ if(NOT DEFINED KWSTYLE_EXECUTABLE)
   set(KWSTYLE_EXECUTABLE ${ep_install_dir}/bin/KWStyle)
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/Log4Qt.cmake

@@ -2,13 +2,16 @@
 # Log4Qt
 #
 
-superbuild_include_once()
-
 set(proj Log4Qt)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
@@ -54,7 +57,7 @@ if(NOT DEFINED Log4Qt_DIR)
   set(Log4Qt_DIR ${CMAKE_BINARY_DIR}/${proj}-build)
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/OpenIGTLink.cmake

@@ -2,13 +2,16 @@
 # OpenIGTLink
 #
 
-superbuild_include_once()
-
 set(proj OpenIGTLink)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   unset(OpenIGTLink_DIR CACHE)
@@ -51,7 +54,7 @@ if(NOT DEFINED OpenIGTLink_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   set(OpenIGTLink_DIR ${CMAKE_BINARY_DIR}/${proj}-build)
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/PythonQt.cmake

@@ -2,13 +2,16 @@
 # PythonQt
 #
 
-superbuild_include_once()
-
 set(proj PythonQt)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
@@ -85,7 +88,7 @@ if(NOT DEFINED PYTHONQT_INSTALL_DIR)
   set(PYTHONQT_INSTALL_DIR ${ep_install_dir})
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/PythonQtGenerator.cmake

@@ -2,8 +2,6 @@
 # PythonQtGenerator
 #
 
-superbuild_include_once()
-
 set(proj PythonQtGenerator)
 
 # Sanity checks
@@ -13,7 +11,12 @@ endif()
 
 set(${proj}_DEPENDENCIES PythonQt)
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
@@ -47,7 +50,7 @@ if(NOT DEFINED PYTHONQTGENERATOR_EXECUTABLE)
   set(PYTHONQTGENERATOR_EXECUTABLE ${CMAKE_BINARY_DIR}/PythonQtGenerator-build/PythonQtGenerator)
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/QtSOAP.cmake

@@ -2,13 +2,16 @@
 # QtSOAP
 #
 
-superbuild_include_once()
-
 set(proj QtSOAP)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
@@ -55,7 +58,7 @@ if(NOT DEFINED QtSOAP_DIR)
   set(QtSOAP_DIR "${CMAKE_BINARY_DIR}/${proj}-build")
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 6
CMakeExternals/QtTesting.cmake

@@ -2,15 +2,16 @@
 # QtTesting
 #
 
-superbuild_include_once()
-
 set(proj QtTesting)
 
-set(${proj}_DEPENDS)
-
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
@@ -67,7 +68,7 @@ if(NOT DEFINED QtTesting_DIR)
   set(QtTesting_DIR ${CMAKE_BINARY_DIR}/${proj}-build)
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/VTK.cmake

@@ -2,13 +2,16 @@
 # VTK
 #
 
-superbuild_include_once()
-
 set(proj VTK)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   unset(VTK_DIR CACHE)
@@ -79,7 +82,7 @@ if(NOT DEFINED VTK_DIR AND NOT ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   set(VTK_DIR ${CMAKE_BINARY_DIR}/${proj}-build)
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/XIP.cmake

@@ -2,13 +2,16 @@
 # XIP
 #
 
-superbuild_include_once()
-
 set(proj XIP)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
@@ -47,7 +50,7 @@ if(NOT DEFINED XIP_DIR)
   set(XIP_DIR ${CMAKE_BINARY_DIR}/${proj}-build)
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 7 - 4
CMakeExternals/ZMQ.cmake

@@ -2,13 +2,16 @@
 # ZMQ
 #
 
-superbuild_include_once()
-
 set(proj ZMQ)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
@@ -56,7 +59,7 @@ if(NOT DEFINED ZMQ_DIR)
   set(ZMQ_DIR ${CMAKE_BINARY_DIR}/${proj}-build)
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 8 - 3
CMakeExternals/qxmlrpc.cmake

@@ -2,13 +2,18 @@
 # qxmlrpc
 #
 
-superbuild_include_once()
+
 
 set(proj qxmlrpc)
 
 set(${proj}_DEPENDENCIES "")
 
-superbuild_include_dependencies(PROJECT_VAR proj)
+ExternalProject_Include_Dependencies(${proj}
+  PROJECT_VAR proj
+  DEPENDS_VAR ${proj}_DEPENDENCIES
+  EP_ARGS_VAR ${proj}_EXTERNAL_PROJECT_ARGS
+  USE_SYSTEM_VAR ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj}
+  )
 
 if(${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj})
   message(FATAL_ERROR "Enabling ${CMAKE_PROJECT_NAME}_USE_SYSTEM_${proj} is not supported !")
@@ -53,7 +58,7 @@ if(NOT DEFINED qxmlrpc_DIR)
   set(qxmlrpc_DIR "${CMAKE_BINARY_DIR}/${proj}-build")
 
 else()
-  superbuild_add_empty_external_project(${proj} "${${proj}_DEPENDENCIES}")
+  ExternalProject_Add_Empty(${proj} DEPENDS ${${proj}_DEPENDENCIES})
 endif()
 
 mark_as_superbuild(

+ 1 - 1
SuperBuild.cmake

@@ -35,7 +35,7 @@ endif()
 set(proj CTK)
 
 ExternalProject_Add(${proj}
-  ${CTK_EXTERNAL_PROJECT_ARGS}
+  ${${proj}_EP_ARGS}
   DOWNLOAD_COMMAND ""
   CMAKE_CACHE_ARGS
     -DCTK_SUPERBUILD:BOOL=OFF