From c4c227406be768184ed57cf448fb04bb29deba47 Mon Sep 17 00:00:00 2001 From: Michael Koval Date: Thu, 21 Jul 2016 17:12:31 -0400 Subject: [PATCH] Fixed infinite loop in aikidoConfig.cmake file. --- cmake/aikidoConfig.cmake.in | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/cmake/aikidoConfig.cmake.in b/cmake/aikidoConfig.cmake.in index ca0abae39f..d61ebfe4d0 100644 --- a/cmake/aikidoConfig.cmake.in +++ b/cmake/aikidoConfig.cmake.in @@ -6,10 +6,15 @@ function(aikido_traverse_components output_variable) set(output_components) foreach(component ${ARGN}) - get_property(is_found DIRECTORY - PROPERTY "aikido_${component}_FOUND" DEFINED) - - if(NOT is_found) + # We should be able to elminate the _VISITED property by detecting + # whether the _FOUND property is DEFINED. Unfortunately, DEFINED checks + # whether or not define_property() was called, not whether the variable was + # set. The exact behavior seems to vary between CMake versions, so we use + # an extra variable instead. + get_property(is_visited DIRECTORY PROPERTY "aikido_${component}_VISITED") + set_property(DIRECTORY PROPERTY "aikido_${component}_VISITED" TRUE) + + if(NOT is_visited) set(component_include "${CMAKE_CURRENT_LIST_DIR}/aikido_${component}Component.cmake") set(target_include @@ -50,9 +55,9 @@ function(aikido_traverse_components output_variable) endforeach() list(APPEND output_components "${component}") + else() + set_property(DIRECTORY PROPERTY "aikido_${component}_FOUND" FALSE) endif() - else() - set_property(DIRECTORY PROPERTY "aikido_${component}_FOUND" FALSE) endif() endforeach() @@ -82,7 +87,7 @@ function(aikido_package_init) foreach(component ${ARGN}) aikido_export_property("aikido_${component}_FOUND") - if(${aikido_${component}_FOUND}) + if("aikido_${component}_FOUND") aikido_export_property("aikido_${component}_INCLUDE_DIRS") aikido_export_property("aikido_${component}_DEFINITIONS") aikido_export_property("aikido_${component}_LIBRARIES")