Skip to content

Commit d13e27d

Browse files
committed
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
2 parents e197d97 + af3e8d6 commit d13e27d

File tree

5 files changed

+38
-20
lines changed

5 files changed

+38
-20
lines changed

CMake/Testing/SuperBuildTest/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,16 +93,16 @@ check_variable(BAR_VAR_WITH_LABELS "BarVarWithLabels")
9393
check_variable(SuperBuildTest_EP_LABEL_LABEL_A "FOO_VAR_WITH_LABELS")
9494
check_variable(SuperBuildTest_EP_LABEL_LABEL_B "FOO_VAR_WITH_LABELS;BAR_VAR_WITH_LABELS")
9595

96-
check_variable(SuperBuildTest_EP_LABEL_FIND_PACKAGE "LibA_DIR")
96+
check_variable(SuperBuildTest_EP_LABEL_FIND_PACKAGE "LibA_DIR;LibB_DIR")
97+
9798
get_filename_component(expected_LibA_DIR "${CMAKE_CURRENT_BINARY_DIR}/../LibA-build" REALPATH)
9899
check_variable(LibA_DIR ${expected_LibA_DIR})
99100

100-
check_variable(SuperBuildTest_EP_LABEL_FIND_PACKAGE "LibB_DIR")
101101
get_filename_component(expected_LibB_DIR "${CMAKE_CURRENT_BINARY_DIR}/../LibB-build" REALPATH)
102102
check_variable(LibB_DIR ${expected_LibB_DIR})
103103

104104
check_variable(SuperBuildTest_EP_LABEL_USE_SYSTEM
105-
"${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibA;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibB;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibC;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibD")
105+
"${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibA;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibB;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibD;${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibC")
106106
check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibA "")
107107
check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibB "")
108108
check_variable(${CMAKE_PROJECT_NAME}_USE_SYSTEM_LibC 1)

CMake/ctkMacroCheckExternalProjectDependency.cmake

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ endfunction()
150150
#!
151151
#! <vartype_var> is an optional variable name that will be set to "<vartype>"
152152
function(_sb_extract_varname_and_vartype cmake_varname_and_type varname_var)
153-
set(_vartype_var ${ARGV2})
153+
set(_vartype_var "${ARGV2}")
154154
string(REPLACE ":" ";" varname_and_vartype ${cmake_varname_and_type})
155155
list(GET varname_and_vartype 0 _varname)
156156
list(GET varname_and_vartype 1 _vartype)
@@ -177,8 +177,8 @@ endfunction()
177177
#!
178178
#! <vartype_var> is an optional variable name that will be set to "<vartype>"
179179
function(_sb_cmakevar_to_cmakearg cmake_varname_and_type cmake_arg_var cmake_arg_type)
180-
set(_varname_var ${ARGV3})
181-
set(_vartype_var ${ARGV4})
180+
set(_varname_var "${ARGV3}")
181+
set(_vartype_var "${ARGV4}")
182182

183183
# XXX Add check for <cmake_arg_type> value
184184

@@ -192,7 +192,6 @@ function(_sb_cmakevar_to_cmakearg cmake_varname_and_type cmake_arg_var cmake_arg
192192

193193
if(cmake_arg_type STREQUAL "CMAKE_CMD")
194194
# Separate list item with <EP_LIST_SEPARATOR>
195-
set(ep_arg_as_string "")
196195
ctk_list_to_string(${EP_LIST_SEPARATOR} "${_var_value}" _var_value)
197196
endif()
198197

@@ -459,14 +458,17 @@ macro(superbuild_include_dependencies)
459458
superbuild_message(${proj} "${proj} => Requires${dependency_str}")
460459
endif()
461460

462-
foreach(dep ${${proj}_DEPENDENCIES})
463-
if(${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}})
464-
set(${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${dep} ${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}})
465-
endif()
466-
#if(SUPERBUILD_FIRST_PASS)
467-
# message("${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${dep} set to [${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}:${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}}]")
468-
#endif()
469-
endforeach()
461+
if(NOT ${proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT})
462+
foreach(dep ${${proj}_DEPENDENCIES})
463+
if(${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}})
464+
set(${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${dep} ${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}})
465+
endif()
466+
#if(SUPERBUILD_FIRST_PASS)
467+
# message("${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${dep} set to "
468+
# "[${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}:${${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj}}]")
469+
#endif()
470+
endforeach()
471+
endif()
470472

471473
superbuild_stack_push(SUPERBUILD_PROJECT_STACK ${proj})
472474

@@ -493,7 +495,7 @@ macro(superbuild_include_dependencies)
493495
if(NOT "${${proj}_DEPENDENCIES}" STREQUAL "")
494496
set(_msg "${proj}[OK]")
495497
if(${SUPERBUILD_TOPLEVEL_PROJECT}_USE_SYSTEM_${proj})
496-
set(_msg "${_ok_message} (SYSTEM)")
498+
set(_msg "${_msg} (SYSTEM)")
497499
endif()
498500
superbuild_message(${proj} ${_msg})
499501
endif()
@@ -517,7 +519,9 @@ macro(superbuild_include_dependencies)
517519
if(_include_project)
518520
list(APPEND ${SUPERBUILD_TOPLEVEL_PROJECT}_DEPENDENCIES ${possible_proj})
519521
else()
520-
superbuild_message(STATUS "${possible_proj}[OPTIONAL]")
522+
if(${SUPERBUILD_TOPLEVEL_PROJECT}_SUPERBUILD)
523+
superbuild_message(STATUS "${possible_proj}[OPTIONAL]")
524+
endif()
521525
endif()
522526
endif()
523527
endforeach()
@@ -536,7 +540,9 @@ macro(superbuild_include_dependencies)
536540
endif()
537541

538542
if(SUPERBUILD_FIRST_PASS)
539-
return()
543+
if(NOT ${proj} STREQUAL ${SUPERBUILD_TOPLEVEL_PROJECT})
544+
return()
545+
endif()
540546
else()
541547
unset(${proj}_EXTERNAL_PROJECT_ARGS)
542548
_sb_get_external_project_arguments(${proj} ${proj}_EXTERNAL_PROJECT_ARGS)

CMake/ctkMacroCheckExternalProjectDependencyTest.cmake

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ function(_sb_cmakevar_to_cmakearg_test)
2626
endif()
2727
endfunction()
2828

29+
function(check_variable id var_name expected_value)
30+
if(NOT "x${${var_name}}" STREQUAL "x${expected_value}")
31+
message(FATAL_ERROR "Problem with _sb_cmakevar_to_cmakearg() - See testcase: ${id}\n"
32+
"CMake variable [${var_name}] has wrong value !\n"
33+
"current:${${var_name}}\n"
34+
"expected:${expected_value}")
35+
endif()
36+
endfunction()
37+
2938
set(id 1)
3039
set(case${id}_input "Hello")
3140
set(case${id}_expected_varname "")
@@ -38,6 +47,7 @@ function(_sb_cmakevar_to_cmakearg_test)
3847
"${case${id}_cmake_arg_var}" "${case${id}_expected_cmake_arg_var}"
3948
"${case${id}_varname}" "${case${id}_expected_varname}"
4049
"${case${id}_vartype}" "${case${id}_expected_vartype}")
50+
check_variable(${id} case${id}_input "Hello")
4151

4252
set(id 2)
4353
set(case${id}_input "Hello")
@@ -51,6 +61,7 @@ function(_sb_cmakevar_to_cmakearg_test)
5161
"${case${id}_cmake_arg_var}" "${case${id}_expected_cmake_arg_var}"
5262
"${case${id}_varname}" "${case${id}_expected_varname}"
5363
"${case${id}_vartype}" "${case${id}_expected_vartype}")
64+
check_variable(${id} case${id}_input "Hello")
5465

5566
set(id 3)
5667
set(case${id}_input Hello World)
@@ -64,6 +75,7 @@ function(_sb_cmakevar_to_cmakearg_test)
6475
"${case${id}_cmake_arg_var}" "${case${id}_expected_cmake_arg_var}"
6576
"${case${id}_varname}" "${case${id}_expected_varname}"
6677
"${case${id}_vartype}" "${case${id}_expected_vartype}")
78+
check_variable(${id} case${id}_input "Hello;World")
6779

6880
set(id 4)
6981
set(case${id}_input Hello World)
@@ -77,6 +89,7 @@ function(_sb_cmakevar_to_cmakearg_test)
7789
"${case${id}_cmake_arg_var}" "${case${id}_expected_cmake_arg_var}"
7890
"${case${id}_varname}" "${case${id}_expected_varname}"
7991
"${case${id}_vartype}" "${case${id}_expected_vartype}")
92+
check_variable(${id} case${id}_input "Hello;World")
8093

8194
message("SUCCESS")
8295
endfunction()

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ endif()
7171
#-----------------------------------------------------------------------------
7272
# Superbuild Option - Enabled by default
7373
#
74-
option(CTK_SUPERBUILD "Build CTK and the projects it depends on via SuperBuild.cmake." ON)
74+
option(CTK_SUPERBUILD "Build ${PROJECT_NAME} and the projects it depends on." ON)
7575
mark_as_advanced(CTK_SUPERBUILD)
7676

7777
#-----------------------------------------------------------------------------

SuperBuild.cmake

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ set(proj CTK)
3737
ExternalProject_Add(${proj}
3838
${CTK_EXTERNAL_PROJECT_ARGS}
3939
DOWNLOAD_COMMAND ""
40-
CMAKE_GENERATOR ${EP_CMAKE_GENERATOR}
4140
CMAKE_CACHE_ARGS
4241
-DCTK_SUPERBUILD:BOOL=OFF
4342
-DCTK_SUPERBUILD_BINARY_DIR:PATH=${CTK_BINARY_DIR}

0 commit comments

Comments
 (0)