diff options
author | David Cole <david.cole@kitware.com> | 2011-01-07 13:04:16 (GMT) |
---|---|---|
committer | David Cole <david.cole@kitware.com> | 2011-01-07 13:04:16 (GMT) |
commit | d67a5134471dadb8b9578d598002832114a171b4 (patch) | |
tree | 2284a8eb4c09efc3dd05842a579364e4bd39f4eb /Modules | |
parent | d7a87b52a0d5e71f1d3c6bcb58c9bc2ef1f438a9 (diff) | |
download | CMake-d67a5134471dadb8b9578d598002832114a171b4.zip CMake-d67a5134471dadb8b9578d598002832114a171b4.tar.gz CMake-d67a5134471dadb8b9578d598002832114a171b4.tar.bz2 |
ExternalProject: Replace location tags in CMAKE_CACHE_ARGS
When we added CMAKE_CACHE_ARGS, we did not try it with any
<SOURCE_DIR> or <INSTALL_DIR> references. This commit fixes
that accidental omission.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/ExternalProject.cmake | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index 1f8844e..3de6b7e 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -550,7 +550,24 @@ function(_ep_set_directories name) endforeach() endfunction(_ep_set_directories) -function(_ep_write_initial_cache script_filename args) + +# IMPORTANT: this MUST be a macro and not a function because of the +# in-place replacements that occur in each ${var} +# +macro(_ep_replace_location_tags target_name) + set(vars ${ARGN}) + foreach(var ${vars}) + if(${var}) + foreach(dir SOURCE_DIR BINARY_DIR INSTALL_DIR TMP_DIR) + get_property(val TARGET ${target_name} PROPERTY _EP_${dir}) + string(REPLACE "<${dir}>" "${val}" ${var} "${${var}}") + endforeach() + endif() + endforeach() +endmacro() + + +function(_ep_write_initial_cache target_name script_filename args) # Write out values into an initial cache, that will be passed to CMake with -C set(script_initial_cache "") set(regex "^([^:]+):([^=]+)=(.*)$") @@ -584,6 +601,8 @@ function(_ep_write_initial_cache script_filename args) set(setArg "${setArg}${accumulator}\" CACHE ${type} \"Initial cache\" FORCE)") set(script_initial_cache "${script_initial_cache}\n${setArg}") endif() + # Replace location tags. + _ep_replace_location_tags(${target_name} script_initial_cache) # Write out the initial cache file to the location specified. if(NOT EXISTS "${script_filename}.in") file(WRITE "${script_filename}.in" "\@script_initial_cache\@\n") @@ -864,14 +883,7 @@ function(ExternalProject_Add_Step name step) endif() # Replace location tags. - foreach(var comment command work_dir) - if(${var}) - foreach(dir SOURCE_DIR BINARY_DIR INSTALL_DIR TMP_DIR) - get_property(val TARGET ${name} PROPERTY _EP_${dir}) - string(REPLACE "<${dir}>" "${val}" ${var} "${${var}}") - endforeach() - endif() - endforeach() + _ep_replace_location_tags(${name} comment command work_dir) # Custom comment? get_property(comment_set TARGET ${name} PROPERTY _EP_${step}_COMMENT SET) @@ -1271,7 +1283,7 @@ function(_ep_add_configure_command name) get_property(cmake_cache_args TARGET ${name} PROPERTY _EP_CMAKE_CACHE_ARGS) if(cmake_cache_args) set(_ep_cache_args_script "${tmp_dir}/${name}-cache.cmake") - _ep_write_initial_cache("${_ep_cache_args_script}" "${cmake_cache_args}") + _ep_write_initial_cache(${name} "${_ep_cache_args_script}" "${cmake_cache_args}") list(APPEND cmd "-C${_ep_cache_args_script}") endif() |