Merge branch 'backport-3.20-makefile-normalize-depfile'

This commit is contained in:
Brad King 2021-07-02 10:01:09 -04:00
commit 6bc6ffb9a9
3 changed files with 17 additions and 6 deletions

View File

@ -131,7 +131,9 @@ bool cmDependsCompiler::CheckDependencies(
depends.emplace_back(std::move(line));
}
} else if (format == "gcc"_s) {
auto deps = cmReadGccDepfile(depFile.c_str());
auto deps = cmReadGccDepfile(
depFile.c_str(), this->LocalGenerator->GetCurrentBinaryDirectory(),
GccDepfilePrependPaths::Deps);
if (!deps) {
continue;
}

View File

@ -12,8 +12,9 @@
#include "cmStringAlgorithms.h"
#include "cmSystemTools.h"
cm::optional<cmGccDepfileContent> cmReadGccDepfile(const char* filePath,
const std::string& prefix)
cm::optional<cmGccDepfileContent> cmReadGccDepfile(
const char* filePath, const std::string& prefix,
GccDepfilePrependPaths prependPaths)
{
cmGccDepfileLexerHelper helper;
if (!helper.readFile(filePath)) {
@ -23,7 +24,8 @@ cm::optional<cmGccDepfileContent> cmReadGccDepfile(const char* filePath,
for (auto& dep : *deps) {
for (auto& rule : dep.rules) {
if (!prefix.empty() && !cmSystemTools::FileIsFullPath(rule)) {
if (prependPaths == GccDepfilePrependPaths::All && !prefix.empty() &&
!cmSystemTools::FileIsFullPath(rule)) {
rule = cmStrCat(prefix, '/', rule);
}
if (cmSystemTools::FileIsFullPath(rule)) {

View File

@ -8,8 +8,15 @@
#include "cmGccDepfileReaderTypes.h"
enum class GccDepfilePrependPaths
{
All,
Deps,
};
/*
* Read dependencies file and append prefix to all relative paths
* Read dependencies file and prepend prefix to all relative paths
*/
cm::optional<cmGccDepfileContent> cmReadGccDepfile(
const char* filePath, const std::string& prefix = {});
const char* filePath, const std::string& prefix = {},
GccDepfilePrependPaths prependPaths = GccDepfilePrependPaths::All);