From 10f4e911f09eccf1af3641b1555f53f976d5db93 Mon Sep 17 00:00:00 2001 From: David Cole Date: Thu, 2 Jul 2009 17:38:30 -0400 Subject: [PATCH] BUG: Allow arbitrary text in values for some keywords. (And avoid warning that the arbitrary text is an unknown keyword.) --- Modules/ExternalProject.cmake | 48 ++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index 9221814a8..5465875d8 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -121,31 +121,45 @@ function(_ep_parse_arguments f name ns args) # upper-case letter followed by at least two more upper-case letters # or underscores to be keywords. set(key) + foreach(arg IN LISTS args) + set(is_value 1) + if(arg MATCHES "^[A-Z][A-Z_][A-Z_]+$" AND NOT ((arg STREQUAL "${key}") AND (key STREQUAL "COMMAND")) AND NOT arg MATCHES "^(TRUE|FALSE)$") - # Keyword - set(key "${arg}") - if(_ep_keywords_${f} AND NOT key MATCHES "${_ep_keywords_${f}}") - message(AUTHOR_WARNING "unknown ${f} keyword: ${key}") - endif() - elseif(key) - # Value - if(NOT arg STREQUAL "") - set_property(TARGET ${name} APPEND PROPERTY ${ns}${key} "${arg}") + if(_ep_keywords_${f} AND arg MATCHES "${_ep_keywords_${f}}") + set(is_value 0) else() - get_property(have_key TARGET ${name} PROPERTY ${ns}${key} SET) - if(have_key) - get_property(value TARGET ${name} PROPERTY ${ns}${key}) - set_property(TARGET ${name} PROPERTY ${ns}${key} "${value};${arg}") - else() - set_property(TARGET ${name} PROPERTY ${ns}${key} "${arg}") + if(NOT (key STREQUAL "COMMAND") + AND NOT (key STREQUAL "CVS_MODULE") + AND NOT (key STREQUAL "DEPENDS") + ) + message(AUTHOR_WARNING "unknown ${f} keyword: ${arg}") endif() endif() + endif() + + if(is_value) + if(key) + # Value + if(NOT arg STREQUAL "") + set_property(TARGET ${name} APPEND PROPERTY ${ns}${key} "${arg}") + else() + get_property(have_key TARGET ${name} PROPERTY ${ns}${key} SET) + if(have_key) + get_property(value TARGET ${name} PROPERTY ${ns}${key}) + set_property(TARGET ${name} PROPERTY ${ns}${key} "${value};${arg}") + else() + set_property(TARGET ${name} PROPERTY ${ns}${key} "${arg}") + endif() + endif() + else() + # Missing Keyword + message(AUTHOR_WARNING "value '${arg}' with no previous keyword in ${f}") + endif() else() - # Missing Keyword - message(AUTHOR_WARNING "value with no keyword in ${f}") + set(key "${arg}") endif() endforeach() endfunction(_ep_parse_arguments)