From ea6260cb188f1ab1982f88504d5fb1017a233144 Mon Sep 17 00:00:00 2001 From: David Cole Date: Wed, 26 May 2010 15:38:41 -0400 Subject: Fix issue #10258: re-configure if args change. Fixes issue http://public.kitware.com/Bug/view.php?id=10258 Also, fix complaint that DOWNLOAD_COMMAND cannot contain arguments consisting entirely of upper case letters. It validly does when, for example, you construct a custom cvs command line and the module name is all upper case, like VTK. --- Modules/ExternalProject.cmake | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index 0302d5c..a304b9f 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -157,6 +157,7 @@ function(_ep_parse_arguments f name ns args) if(NOT (key STREQUAL "COMMAND") AND NOT (key STREQUAL "CVS_MODULE") AND NOT (key STREQUAL "DEPENDS") + AND NOT (key STREQUAL "DOWNLOAD_COMMAND") ) message(AUTHOR_WARNING "unknown ${f} keyword: ${arg}") endif() @@ -793,7 +794,7 @@ endfunction(_ep_add_patch_command) # TODO: Make sure external projects use the proper compiler function(_ep_add_configure_command name) - ExternalProject_Get_Property(${name} source_dir binary_dir) + ExternalProject_Get_Property(${name} source_dir binary_dir tmp_dir) _ep_get_configuration_subdir_suffix(cfgdir) @@ -827,6 +828,16 @@ function(_ep_add_configure_command name) endif() endif() + # If anything about the configure command changes, (command itself, cmake + # used, cmake args or cmake generator) then re-run the configure step. + # Fixes issue http://public.kitware.com/Bug/view.php?id=10258 + # + if(NOT EXISTS ${tmp_dir}/${name}-cfgcmd.txt.in) + file(WRITE ${tmp_dir}/${name}-cfgcmd.txt.in "cmd='@cmd@'\n") + endif() + configure_file(${tmp_dir}/${name}-cfgcmd.txt.in ${tmp_dir}/${name}-cfgcmd.txt) + list(APPEND file_deps ${tmp_dir}/${name}-cfgcmd.txt) + ExternalProject_Add_Step(${name} configure COMMAND ${cmd} WORKING_DIRECTORY ${binary_dir} -- cgit v0.12