mirror of
https://github.com/reactos/CMake.git
synced 2024-12-03 00:57:25 +00:00
Merge branch 'autogen-write-on-change-only' into release-3.11
Merge-request: !1753
This commit is contained in:
commit
43cd9467cd
@ -8,6 +8,7 @@
|
||||
#include "cmCustomCommandLines.h"
|
||||
#include "cmDuration.h"
|
||||
#include "cmFilePathChecksum.h"
|
||||
#include "cmGeneratedFileStream.h"
|
||||
#include "cmGeneratorTarget.h"
|
||||
#include "cmGlobalGenerator.h"
|
||||
#include "cmLinkItem.h"
|
||||
@ -22,7 +23,6 @@
|
||||
#include "cmStateTypes.h"
|
||||
#include "cmSystemTools.h"
|
||||
#include "cmTarget.h"
|
||||
#include "cm_sys_stat.h"
|
||||
#include "cmake.h"
|
||||
#include "cmsys/FStream.hxx"
|
||||
#include "cmsys/SystemInformation.hxx"
|
||||
@ -867,34 +867,6 @@ void cmQtAutoGenInitializer::SetupCustomTargets()
|
||||
dir += cfg;
|
||||
}
|
||||
|
||||
auto OpenInfoFile = [](cmsys::ofstream& ofs,
|
||||
std::string const& fileName) -> bool {
|
||||
// Ensure we have write permission
|
||||
if (cmSystemTools::FileExists(fileName)) {
|
||||
mode_t perm = 0;
|
||||
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
mode_t mode_write = S_IWRITE;
|
||||
#else
|
||||
mode_t mode_write = S_IWUSR;
|
||||
#endif
|
||||
cmSystemTools::GetPermissions(fileName, perm);
|
||||
if (!(perm & mode_write)) {
|
||||
cmSystemTools::SetPermissions(fileName, perm | mode_write);
|
||||
}
|
||||
}
|
||||
|
||||
ofs.open(fileName.c_str(),
|
||||
(std::ios::out | std::ios::binary | std::ios::trunc));
|
||||
if (!ofs) {
|
||||
// File open error
|
||||
std::string error = "Internal CMake error when trying to open file: ";
|
||||
error += Quoted(fileName);
|
||||
error += " for writing.";
|
||||
cmSystemTools::Error(error.c_str());
|
||||
}
|
||||
return static_cast<bool>(ofs);
|
||||
};
|
||||
|
||||
// Generate autogen target info file
|
||||
if (this->MocEnabled || this->UicEnabled) {
|
||||
if (this->MocEnabled) {
|
||||
@ -911,8 +883,10 @@ void cmQtAutoGenInitializer::SetupCustomTargets()
|
||||
this->Parallel = std::to_string(GetParallelCPUCount());
|
||||
}
|
||||
|
||||
cmsys::ofstream ofs;
|
||||
if (OpenInfoFile(ofs, this->AutogenInfoFile)) {
|
||||
cmGeneratedFileStream ofs;
|
||||
ofs.SetCopyIfDifferent(true);
|
||||
ofs.Open(this->AutogenInfoFile.c_str(), false, true);
|
||||
if (ofs) {
|
||||
// Utility lambdas
|
||||
auto CWrite = [&ofs](const char* key, std::string const& value) {
|
||||
ofs << "set(" << key << " " << cmOutputConverter::EscapeForCMake(value)
|
||||
@ -1012,14 +986,18 @@ void cmQtAutoGenInitializer::SetupCustomTargets()
|
||||
CWriteNestedLists("AM_UIC_OPTIONS_OPTIONS", this->UicFileOptions);
|
||||
CWriteList("AM_UIC_SEARCH_PATHS", this->UicSearchPaths);
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Generate auto RCC info files
|
||||
if (this->RccEnabled) {
|
||||
for (Qrc const& qrc : this->Qrcs) {
|
||||
cmsys::ofstream ofs;
|
||||
if (OpenInfoFile(ofs, qrc.InfoFile)) {
|
||||
cmGeneratedFileStream ofs;
|
||||
ofs.SetCopyIfDifferent(true);
|
||||
ofs.Open(qrc.InfoFile.c_str(), false, true);
|
||||
if (ofs) {
|
||||
// Utility lambdas
|
||||
auto CWrite = [&ofs](const char* key, std::string const& value) {
|
||||
ofs << "set(" << key << " "
|
||||
@ -1069,7 +1047,7 @@ void cmQtAutoGenInitializer::SetupCustomTargets()
|
||||
CWrite("ARCC_OPTIONS", cmJoin(qrc.Options, ";"));
|
||||
CWrite("ARCC_INPUTS", cmJoin(qrc.Resources, ";"));
|
||||
} else {
|
||||
break;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user