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.
This commit is contained in:
parent
40641e3cba
commit
cbfbb86b58
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue