Ver código fonte

Merge branch '418-support-use-system-option'

* 418-support-use-system-option:
  Display optional project only when configuring top-level project
  Properly display name of project with dependency found on the system.
  Ensure code following superbuild_include_dependencies(CTK) is executed.
  Tweak CTK_SUPERBUILD option description text.
  Remove redundant CMAKE_GENERATOR parameter from CTK project
Jean-Christophe Fillion-Robin 11 anos atrás
pai
commit
d13e27d21f

+ 3 - 3
CMake/Testing/SuperBuildTest/CMakeLists.txt

@@ -93,16 +93,16 @@ 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")
+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})
 
-check_variable(SuperBuildTest_EP_LABEL_FIND_PACKAGE "LibB_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_LibC;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibD")
+  "${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)

+ 21 - 15
CMake/ctkMacroCheckExternalProjectDependency.cmake

@@ -150,7 +150,7 @@ endfunction()
 #!
 #! <vartype_var> is an optional variable name that will be set to "<vartype>"
 function(_sb_extract_varname_and_vartype cmake_varname_and_type varname_var)
-  set(_vartype_var ${ARGV2})
+  set(_vartype_var "${ARGV2}")
   string(REPLACE ":" ";" varname_and_vartype ${cmake_varname_and_type})
   list(GET varname_and_vartype 0 _varname)
   list(GET varname_and_vartype 1 _vartype)
@@ -177,8 +177,8 @@ endfunction()
 #!
 #! <vartype_var> is an optional variable name that will be set to "<vartype>"
 function(_sb_cmakevar_to_cmakearg cmake_varname_and_type cmake_arg_var cmake_arg_type)
-  set(_varname_var ${ARGV3})
-  set(_vartype_var ${ARGV4})
+  set(_varname_var "${ARGV3}")
+  set(_vartype_var "${ARGV4}")
 
   # XXX Add check for <cmake_arg_type> value
 
@@ -192,7 +192,6 @@ 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>
-    set(ep_arg_as_string "")
     ctk_list_to_string(${EP_LIST_SEPARATOR} "${_var_value}" _var_value)
   endif()
 
@@ -459,14 +458,17 @@ macro(superbuild_include_dependencies)
     superbuild_message(${proj} "${proj} => Requires${dependency_str}")
   endif()
 
-  foreach(dep ${${proj}_DEPENDENCIES})
-    if(${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}})
-      set(${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${dep} ${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}})
-    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()
+  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}})
+      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()
 
   superbuild_stack_push(SUPERBUILD_PROJECT_STACK ${proj})
 
@@ -493,7 +495,7 @@ macro(superbuild_include_dependencies)
   if(NOT "${${proj}_DEPENDENCIES}" STREQUAL "")
     set(_msg "${proj}[OK]")
     if(${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj})
-      set(_msg "${_ok_message} (SYSTEM)")
+      set(_msg "${_msg} (SYSTEM)")
     endif()
     superbuild_message(${proj} ${_msg})
   endif()
@@ -517,7 +519,9 @@ macro(superbuild_include_dependencies)
         if(_include_project)
           list(APPEND ${SUPERBUILD_TOPLEVEL_PROJECT}_DEPENDENCIES ${possible_proj})
         else()
-          superbuild_message(STATUS "${possible_proj}[OPTIONAL]")
+          if(${SUPERBUILD_TOPLEVEL_PROJECT}_SUPERBUILD)
+            superbuild_message(STATUS "${possible_proj}[OPTIONAL]")
+          endif()
         endif()
       endif()
     endforeach()
@@ -536,7 +540,9 @@ macro(superbuild_include_dependencies)
   endif()
 
   if(SUPERBUILD_FIRST_PASS)
-    return()
+    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)

+ 13 - 0
CMake/ctkMacroCheckExternalProjectDependencyTest.cmake

@@ -26,6 +26,15 @@ function(_sb_cmakevar_to_cmakearg_test)
     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 "")
@@ -38,6 +47,7 @@ function(_sb_cmakevar_to_cmakearg_test)
       "${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")
@@ -51,6 +61,7 @@ function(_sb_cmakevar_to_cmakearg_test)
       "${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)
@@ -64,6 +75,7 @@ function(_sb_cmakevar_to_cmakearg_test)
       "${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)
@@ -77,6 +89,7 @@ function(_sb_cmakevar_to_cmakearg_test)
       "${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()

+ 1 - 1
CMakeLists.txt

@@ -71,7 +71,7 @@ endif()
 #-----------------------------------------------------------------------------
 # Superbuild Option - Enabled by default
 #
-option(CTK_SUPERBUILD "Build CTK and the projects it depends on via SuperBuild.cmake." ON)
+option(CTK_SUPERBUILD "Build ${PROJECT_NAME} and the projects it depends on." ON)
 mark_as_advanced(CTK_SUPERBUILD)
 
 #-----------------------------------------------------------------------------

+ 0 - 1
SuperBuild.cmake

@@ -37,7 +37,6 @@ set(proj CTK)
 ExternalProject_Add(${proj}
   ${CTK_EXTERNAL_PROJECT_ARGS}
   DOWNLOAD_COMMAND ""
-  CMAKE_GENERATOR ${EP_CMAKE_GENERATOR}
   CMAKE_CACHE_ARGS
     -DCTK_SUPERBUILD:BOOL=OFF
     -DCTK_SUPERBUILD_BINARY_DIR:PATH=${CTK_BINARY_DIR}