summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2011-10-19 11:16:25 -0700
committerJosh Blum <josh@joshknows.com>2011-10-19 11:16:25 -0700
commit7ed8b43e654ef613faf39c4298c15180b4114b1d (patch)
tree89abed6375c08a67b0529aef582cd0f53d99a6f9 /cmake
parent1cfa3791dab83b7bae1e4138f92e37364bd1c5ed (diff)
cmake: fix that component depends on component hack
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Modules/GrComponent.cmake16
1 files changed, 14 insertions, 2 deletions
diff --git a/cmake/Modules/GrComponent.cmake b/cmake/Modules/GrComponent.cmake
index 3891f6981d..d45b8003c5 100644
--- a/cmake/Modules/GrComponent.cmake
+++ b/cmake/Modules/GrComponent.cmake
@@ -54,9 +54,21 @@ function(GR_REGISTER_COMPONENT name var)
set(var_force FALSE)
endif()
+ #rewrite the dependency list so that deps that are also components use the cached version
+ unset(comp_deps)
+ foreach(dep ${ARGN})
+ list(FIND _gr_enabled_components ${dep} dep_enb_index)
+ list(FIND _gr_disabled_components ${dep} dep_dis_index)
+ if (${dep_enb_index} EQUAL -1 AND ${dep_dis_index} EQUAL -1)
+ list(APPEND comp_deps ${dep})
+ else()
+ list(APPEND comp_deps ${dep}_cached) #is a component, use cached version
+ endif()
+ endforeach(dep)
+
#setup the dependent option for this component
- CMAKE_DEPENDENT_OPTION(${var} "enable ${name} support" ${ENABLE_DEFAULT} "${ARGN}" OFF)
- set(${var}_ "${${var}}" CACHE INTERNAL "" FORCE)
+ CMAKE_DEPENDENT_OPTION(${var} "enable ${name} support" ${ENABLE_DEFAULT} "${comp_deps}" OFF)
+ set(${var}_cached "${${var}}" CACHE INTERNAL "" FORCE)
#force was specified, but the dependencies were not met
if(NOT ${var} AND var_force)