summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2010-01-04 15:18:44 (GMT)
committerBrad King <brad.king@kitware.com>2010-01-04 15:18:44 (GMT)
commitcbfbb86b581643db8c1317b07d64743bd1c8a100 (patch)
tree39ce0b910bbd62458717263035e55d6cc53a146e
parent40641e3cbaa0635616c870f987b0ef441d88da8c (diff)
downloadCMake-cbfbb86b581643db8c1317b07d64743bd1c8a100.zip
CMake-cbfbb86b581643db8c1317b07d64743bd1c8a100.tar.gz
CMake-cbfbb86b581643db8c1317b07d64743bd1c8a100.tar.bz2
Fix escapes in Fortran depend.make entries
Makefile dependencies must be escaped using cmLocalGenerator::Convert with the cmLocalGenerator::MAKEFILE option. This fixes Fortran module dependencies with spaces in the path. We test the fix by adding a space to one of the module paths in the Fortran test.
-rw-r--r--Source/cmDependsFortran.cxx12
-rw-r--r--Tests/Fortran/CMakeLists.txt11
-rw-r--r--Tests/Fortran/Executable/CMakeLists.txt4
3 files changed, 18 insertions, 9 deletions
diff --git a/Source/cmDependsFortran.cxx b/Source/cmDependsFortran.cxx
index 961d291..9e4726c 100644
--- a/Source/cmDependsFortran.cxx
+++ b/Source/cmDependsFortran.cxx
@@ -442,9 +442,11 @@ cmDependsFortran
for(std::set<cmStdString>::const_iterator i = info.Includes.begin();
i != info.Includes.end(); ++i)
{
- makeDepends << obj << ": "
- << cmSystemTools::ConvertToOutputPath(i->c_str()).c_str()
- << std::endl;
+ makeDepends << obj << ": " <<
+ this->LocalGenerator->Convert(i->c_str(),
+ cmLocalGenerator::HOME_OUTPUT,
+ cmLocalGenerator::MAKEFILE)
+ << std::endl;
internalDepends << " " << i->c_str() << std::endl;
}
makeDepends << std::endl;
@@ -491,7 +493,7 @@ cmDependsFortran
std::string stampFile =
this->LocalGenerator->Convert(required->second.c_str(),
cmLocalGenerator::HOME_OUTPUT,
- cmLocalGenerator::SHELL);
+ cmLocalGenerator::MAKEFILE);
makeDepends << obj << ": " << stampFile << "\n";
}
else
@@ -504,7 +506,7 @@ cmDependsFortran
module =
this->LocalGenerator->Convert(module.c_str(),
cmLocalGenerator::HOME_OUTPUT,
- cmLocalGenerator::SHELL);
+ cmLocalGenerator::MAKEFILE);
makeDepends << obj << ": " << module << "\n";
}
}
diff --git a/Tests/Fortran/CMakeLists.txt b/Tests/Fortran/CMakeLists.txt
index 709ea5f..e66b7a0 100644
--- a/Tests/Fortran/CMakeLists.txt
+++ b/Tests/Fortran/CMakeLists.txt
@@ -171,13 +171,20 @@ if(TEST_MODULE_DEPENDS)
set(External_CONFIG_TYPE)
set(External_BUILD_TYPE -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE})
endif(CMAKE_CONFIGURATION_TYPES)
+ set(External_SOURCE_DIR "${testf_SOURCE_DIR}/External")
+ set(External_BINARY_DIR "${testf_BINARY_DIR}/External")
+ if("${testf_BINARY_DIR}" MATCHES " ")
+ # Our build tree has a space, so the build tool supports spaces.
+ # Test using modules from a path with spaces.
+ set(External_BINARY_DIR "${External_BINARY_DIR} Build")
+ endif()
add_custom_command(
OUTPUT ${testf_BINARY_DIR}/ExternalProject
COMMAND ${CMAKE_CTEST_COMMAND}
ARGS ${External_CONFIG_TYPE}
--build-and-test
- ${testf_SOURCE_DIR}/External
- ${testf_BINARY_DIR}/External
+ ${External_SOURCE_DIR}
+ ${External_BINARY_DIR}
--build-noclean
--build-two-config
--build-project ExtFort
diff --git a/Tests/Fortran/Executable/CMakeLists.txt b/Tests/Fortran/Executable/CMakeLists.txt
index 40114e4..55f21ad 100644
--- a/Tests/Fortran/Executable/CMakeLists.txt
+++ b/Tests/Fortran/Executable/CMakeLists.txt
@@ -1,6 +1,6 @@
include_directories(${Library_MODDIR})
-include_directories(${testf_BINARY_DIR}/External)
-link_directories(${testf_BINARY_DIR}/External)
+include_directories(${External_BINARY_DIR})
+link_directories(${External_BINARY_DIR})
add_executable(subdir_exe2 main.f90)
target_link_libraries(subdir_exe2 subdir_mods)