source_group: Fix regression in relative FILES

Fix the check added in commit 8d93815d20 (source_group command ensures
that FILES arguments are actually files, 2019-04-25, v3.15.0-rc1~195^2)
to convert to an absolute path before checking for existence.

Also simplify the conversion to an absolute path.

Fixes: #19454
This commit is contained in:
Brad King
2019-07-30 11:26:02 -04:00
parent f43a7d76c7
commit 93af8a2583

View File

@@ -63,15 +63,6 @@ bool rootIsPrefix(const std::string& root,
return true;
}
std::string prepareFilePathForTree(const std::string& path,
const std::string& currentSourceDir)
{
if (!cmSystemTools::FileIsFullPath(path)) {
return cmSystemTools::CollapseFullPath(currentSourceDir + "/" + path);
}
return cmSystemTools::CollapseFullPath(path);
}
std::vector<std::string> prepareFilesPathsForTree(
const std::vector<std::string>& filesPaths,
const std::string& currentSourceDir)
@@ -80,9 +71,11 @@ std::vector<std::string> prepareFilesPathsForTree(
prepared.reserve(filesPaths.size());
for (auto const& filePath : filesPaths) {
std::string fullPath =
cmSystemTools::CollapseFullPath(filePath, currentSourceDir);
// If provided file path is actually not a file, silently ignore it.
if (cmSystemTools::FileExists(filePath, /*isFile=*/true)) {
prepared.push_back(prepareFilePathForTree(filePath, currentSourceDir));
if (cmSystemTools::FileExists(fullPath, /*isFile=*/true)) {
prepared.emplace_back(std::move(fullPath));
}
}