|
|
@@ -5,6 +5,7 @@
|
|
|
#include "cmQtAutoGen.h"
|
|
|
#include "cmQtAutoGenGlobalInitializer.h"
|
|
|
|
|
|
+#include "cmAlgorithms.h"
|
|
|
#include "cmCustomCommand.h"
|
|
|
#include "cmCustomCommandLines.h"
|
|
|
#include "cmFilePathChecksum.h"
|
|
|
@@ -422,8 +423,7 @@ bool cmQtAutoGenInitializer::InitCustomTargets()
|
|
|
std::string const deps =
|
|
|
this->GenTarget->GetSafeProperty("AUTOGEN_TARGET_DEPENDS");
|
|
|
if (!deps.empty()) {
|
|
|
- std::vector<std::string> extraDeps = cmExpandedList(deps);
|
|
|
- for (std::string const& depName : extraDeps) {
|
|
|
+ for (std::string const& depName : cmExpandedList(deps)) {
|
|
|
// Allow target and file dependencies
|
|
|
auto* depTarget = this->Makefile->FindTargetToUse(depName);
|
|
|
if (depTarget != nullptr) {
|
|
|
@@ -642,7 +642,7 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
auto makeMUFile = [this, &kw](cmSourceFile* sf, std::string const& fullPath,
|
|
|
bool muIt) -> MUFileHandle {
|
|
|
MUFileHandle muf = cm::make_unique<MUFile>();
|
|
|
- muf->RealPath = cmSystemTools::GetRealPath(fullPath);
|
|
|
+ muf->FullPath = fullPath;
|
|
|
muf->SF = sf;
|
|
|
muf->Generated = sf->GetIsGenerated();
|
|
|
bool const skipAutogen = sf->GetPropertyAsBool(kw.SKIP_AUTOGEN);
|
|
|
@@ -674,7 +674,7 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
std::vector<cmSourceFile*> srcFiles;
|
|
|
this->GenTarget->GetConfigCommonSourceFiles(srcFiles);
|
|
|
for (cmSourceFile* sf : srcFiles) {
|
|
|
- // sf->GetExtension() is only valid after sf->GetFullPath() ...
|
|
|
+ // sf->GetExtension() is only valid after sf->ResolveFullPath() ...
|
|
|
// Since we're iterating over source files that might be not in the
|
|
|
// target we need to check for path errors (not existing files).
|
|
|
std::string pathError;
|
|
|
@@ -700,7 +700,7 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
!sf->GetPropertyAsBool(kw.SKIP_AUTORCC)) {
|
|
|
// Register qrc file
|
|
|
Qrc qrc;
|
|
|
- qrc.QrcFile = cmSystemTools::GetRealPath(fullPath);
|
|
|
+ qrc.QrcFile = fullPath;
|
|
|
qrc.QrcName =
|
|
|
cmSystemTools::GetFilenameWithoutLastExtension(qrc.QrcFile);
|
|
|
qrc.Generated = sf->GetIsGenerated();
|
|
|
@@ -734,10 +734,10 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
MUFile const& muf = *pair.second;
|
|
|
if (muf.MocIt || muf.UicIt) {
|
|
|
// Search for the default header file and a private header
|
|
|
- std::string const& srcPath = muf.SF->ResolveFullPath();
|
|
|
- std::string basePath =
|
|
|
- cmStrCat(cmQtAutoGen::SubDirPrefix(srcPath),
|
|
|
- cmSystemTools::GetFilenameWithoutLastExtension(srcPath));
|
|
|
+ std::string const& srcFullPath = muf.SF->ResolveFullPath();
|
|
|
+ std::string basePath = cmStrCat(
|
|
|
+ cmQtAutoGen::SubDirPrefix(srcFullPath),
|
|
|
+ cmSystemTools::GetFilenameWithoutLastExtension(srcFullPath));
|
|
|
for (auto const& suffix : suffixes) {
|
|
|
std::string const suffixedPath = cmStrCat(basePath, suffix);
|
|
|
for (auto const& ext : exts) {
|
|
|
@@ -748,8 +748,7 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
this->Makefile->GetSource(fullPath, locationKind);
|
|
|
if (sf != nullptr) {
|
|
|
// Check if we know about this header already
|
|
|
- if (this->AutogenTarget.Headers.find(sf) !=
|
|
|
- this->AutogenTarget.Headers.end()) {
|
|
|
+ if (cmContains(this->AutogenTarget.Headers, sf)) {
|
|
|
continue;
|
|
|
}
|
|
|
// We only accept not-GENERATED files that do exist.
|
|
|
@@ -789,7 +788,7 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
// at generation time.
|
|
|
if (this->MocOrUicEnabled()) {
|
|
|
for (cmSourceFile* sf : this->Makefile->GetSourceFiles()) {
|
|
|
- // sf->GetExtension() is only valid after sf->GetFullPath() ...
|
|
|
+ // sf->GetExtension() is only valid after sf->ResolveFullPath() ...
|
|
|
// Since we're iterating over source files that might be not in the
|
|
|
// target we need to check for path errors (not existing files).
|
|
|
std::string pathError;
|
|
|
@@ -801,16 +800,14 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
cmSystemTools::LowerCase(sf->GetExtension());
|
|
|
|
|
|
if (cm->IsHeaderExtension(extLower)) {
|
|
|
- if (this->AutogenTarget.Headers.find(sf) ==
|
|
|
- this->AutogenTarget.Headers.end()) {
|
|
|
+ if (!cmContains(this->AutogenTarget.Headers, sf)) {
|
|
|
auto muf = makeMUFile(sf, fullPath, false);
|
|
|
if (muf->SkipMoc || muf->SkipUic) {
|
|
|
this->AutogenTarget.Headers.emplace(sf, std::move(muf));
|
|
|
}
|
|
|
}
|
|
|
} else if (cm->IsSourceExtension(extLower)) {
|
|
|
- if (this->AutogenTarget.Sources.find(sf) ==
|
|
|
- this->AutogenTarget.Sources.end()) {
|
|
|
+ if (!cmContains(this->AutogenTarget.Headers, sf)) {
|
|
|
auto muf = makeMUFile(sf, fullPath, false);
|
|
|
if (muf->SkipMoc || muf->SkipUic) {
|
|
|
this->AutogenTarget.Sources.emplace(sf, std::move(muf));
|
|
|
@@ -818,7 +815,6 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
}
|
|
|
} else if (this->Uic.Enabled && (extLower == kw.ui)) {
|
|
|
// .ui file
|
|
|
- std::string realPath = cmSystemTools::GetRealPath(fullPath);
|
|
|
bool const skipAutogen = sf->GetPropertyAsBool(kw.SKIP_AUTOGEN);
|
|
|
bool const skipUic =
|
|
|
(skipAutogen || sf->GetPropertyAsBool(kw.SKIP_AUTOUIC));
|
|
|
@@ -826,13 +822,12 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
// Check if the .ui file has uic options
|
|
|
std::string const uicOpts = sf->GetSafeProperty(kw.AUTOUIC_OPTIONS);
|
|
|
if (!uicOpts.empty()) {
|
|
|
- this->Uic.FileFiles.push_back(std::move(realPath));
|
|
|
- std::vector<std::string> optsVec = cmExpandedList(uicOpts);
|
|
|
- this->Uic.FileOptions.push_back(std::move(optsVec));
|
|
|
+ this->Uic.FileFiles.push_back(fullPath);
|
|
|
+ this->Uic.FileOptions.push_back(cmExpandedList(uicOpts));
|
|
|
}
|
|
|
} else {
|
|
|
// Register skipped .ui file
|
|
|
- this->Uic.SkipUi.insert(std::move(realPath));
|
|
|
+ this->Uic.SkipUi.insert(fullPath);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -843,7 +838,7 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
if (this->CMP0071Accept) {
|
|
|
// Let the autogen target depend on the GENERATED files
|
|
|
for (MUFile* muf : this->AutogenTarget.FilesGenerated) {
|
|
|
- this->AutogenTarget.DependFiles.insert(muf->RealPath);
|
|
|
+ this->AutogenTarget.DependFiles.insert(muf->FullPath);
|
|
|
}
|
|
|
} else if (this->CMP0071Warn) {
|
|
|
cm::string_view property;
|
|
|
@@ -856,7 +851,7 @@ bool cmQtAutoGenInitializer::InitScanFiles()
|
|
|
}
|
|
|
std::string files;
|
|
|
for (MUFile* muf : this->AutogenTarget.FilesGenerated) {
|
|
|
- files += cmStrCat(" ", Quoted(muf->RealPath), '\n');
|
|
|
+ files += cmStrCat(" ", Quoted(muf->FullPath), '\n');
|
|
|
}
|
|
|
this->Makefile->IssueMessage(
|
|
|
MessageType::AUTHOR_WARNING,
|
|
|
@@ -1280,7 +1275,7 @@ bool cmQtAutoGenInitializer::SetupWriteAutogenInfo()
|
|
|
}
|
|
|
std::sort(sortedHeaders.begin(), sortedHeaders.end(),
|
|
|
[](MUFile const* a, MUFile const* b) {
|
|
|
- return (a->RealPath < b->RealPath);
|
|
|
+ return (a->FullPath < b->FullPath);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
@@ -1289,13 +1284,13 @@ bool cmQtAutoGenInitializer::SetupWriteAutogenInfo()
|
|
|
continue;
|
|
|
}
|
|
|
if (muf->SkipMoc) {
|
|
|
- moc_skip.insert(muf->RealPath);
|
|
|
+ moc_skip.insert(muf->FullPath);
|
|
|
}
|
|
|
if (muf->SkipUic) {
|
|
|
- uic_skip.insert(muf->RealPath);
|
|
|
+ uic_skip.insert(muf->FullPath);
|
|
|
}
|
|
|
if (muf->MocIt || muf->UicIt) {
|
|
|
- headers.emplace_back(muf->RealPath);
|
|
|
+ headers.emplace_back(muf->FullPath);
|
|
|
headersFlags.emplace_back(
|
|
|
cmStrCat(muf->MocIt ? 'M' : 'm', muf->UicIt ? 'U' : 'u'));
|
|
|
}
|
|
|
@@ -1334,7 +1329,7 @@ bool cmQtAutoGenInitializer::SetupWriteAutogenInfo()
|
|
|
}
|
|
|
std::sort(sorted.begin(), sorted.end(),
|
|
|
[](MUFile const* a, MUFile const* b) {
|
|
|
- return (a->RealPath < b->RealPath);
|
|
|
+ return (a->FullPath < b->FullPath);
|
|
|
});
|
|
|
|
|
|
for (MUFile const* const muf : sorted) {
|
|
|
@@ -1342,13 +1337,13 @@ bool cmQtAutoGenInitializer::SetupWriteAutogenInfo()
|
|
|
continue;
|
|
|
}
|
|
|
if (muf->SkipMoc) {
|
|
|
- moc_skip.insert(muf->RealPath);
|
|
|
+ moc_skip.insert(muf->FullPath);
|
|
|
}
|
|
|
if (muf->SkipUic) {
|
|
|
- uic_skip.insert(muf->RealPath);
|
|
|
+ uic_skip.insert(muf->FullPath);
|
|
|
}
|
|
|
if (muf->MocIt || muf->UicIt) {
|
|
|
- sources.emplace_back(muf->RealPath);
|
|
|
+ sources.emplace_back(muf->FullPath);
|
|
|
sourcesFlags.emplace_back(
|
|
|
cmStrCat(muf->MocIt ? 'M' : 'm', muf->UicIt ? 'U' : 'u'));
|
|
|
}
|