diff --git a/cmake/modules/DuneMacros.cmake b/cmake/modules/DuneMacros.cmake index 1a8de220d5a9d6382c7bf00d95919698f9bb216e..42051ca74822fd90183270f9d72446e69d98d9e2 100644 --- a/cmake/modules/DuneMacros.cmake +++ b/cmake/modules/DuneMacros.cmake @@ -279,14 +279,17 @@ macro(extract_line HEADER OUTPUT FILE_NAME) endif() endmacro(extract_line) +# +# split list of modules, potentially with version information +# into list of modules and list of versions +# macro(split_module_version STRING MODULES VERSIONS) - set(REGEX "[a-zA-Z-]+[ ]*(\\([ ]*([^ ]+)?[ ]*[^ ]+[ ]*\\))?") - #set(REGEX "dune") - string(REGEX MATCHALL "${REGEX}" matches "${STRING}") + set(REGEX "[a-zA-Z0-9-]+[ ]*(\\([ ]*([^ ]+)?[ ]*[^ ]+[ ]*\\))?") + string(REGEX MATCHALL "${REGEX}" matches "${STRING}") set(${MODULES} "") set(${VERSIONS} "") foreach(i ${matches}) - string(REGEX REPLACE "^([a-zA-Z-]+).*$" "\\1" mod ${i}) + string(REGEX REPLACE "^([a-zA-Z0-9-]+).*$" "\\1" mod ${i}) string(REGEX MATCH "\\([ ]*(([^ ]+)?[ ]*[^ ]+)[ ]*\\)" have_version ${i}) if(have_version) @@ -302,8 +305,11 @@ macro(split_module_version STRING MODULES VERSIONS) endforeach() endmacro(split_module_version) +# +# Convert a string with spaces in a list which is a string with semicolon +# function(convert_deps_to_list var) - string(REGEX REPLACE "([a-zA-Z\\)]) ([a-zA-Z])" "\\1;\\2" ${var} ${${var}}) + string(REGEX REPLACE "([a-zA-Z0-9\\)]) ([a-zA-Z0-9])" "\\1;\\2" ${var} ${${var}}) set(${var} ${${var}} PARENT_SCOPE) endfunction(convert_deps_to_list var)