summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/CMakeVersion.cmake2
-rw-r--r--Source/CPack/IFW/cmCPackIFWInstaller.cxx21
-rw-r--r--Source/CPack/IFW/cmCPackIFWPackage.cxx10
-rw-r--r--Source/CPack/WiX/cmCPackWIXGenerator.cxx14
-rw-r--r--Source/CPack/WiX/cmCPackWIXGenerator.h2
-rw-r--r--Source/CPack/WiX/cmWIXFeaturesSourceWriter.cxx4
-rw-r--r--Source/CPack/WiX/cmWIXFilesSourceWriter.cxx4
-rw-r--r--Source/CPack/WiX/cmWIXPatch.cxx6
-rw-r--r--Source/CPack/WiX/cmWIXPatchParser.cxx26
-rw-r--r--Source/CTest/cmCTestCoverageHandler.cxx3
-rw-r--r--Source/CTest/cmCTestLaunch.cxx3
-rw-r--r--Source/CTest/cmCTestMultiProcessHandler.cxx2
-rw-r--r--Source/CTest/cmCTestTestCommand.cxx3
-rw-r--r--Source/CTest/cmCTestTestHandler.cxx8
-rw-r--r--Source/CTest/cmParseDelphiCoverage.cxx3
-rw-r--r--Source/Checks/cm_cxx_eq_delete.cxx14
-rw-r--r--Source/Checks/cm_cxx_features.cmake1
-rw-r--r--Source/CursesDialog/cmCursesBoolWidget.h6
-rw-r--r--Source/CursesDialog/cmCursesCacheEntryComposite.cxx1
-rw-r--r--Source/CursesDialog/cmCursesCacheEntryComposite.h7
-rw-r--r--Source/CursesDialog/cmCursesDummyWidget.h6
-rw-r--r--Source/CursesDialog/cmCursesFilePathWidget.h8
-rw-r--r--Source/CursesDialog/cmCursesForm.cxx2
-rw-r--r--Source/CursesDialog/cmCursesForm.h7
-rw-r--r--Source/CursesDialog/cmCursesLabelWidget.h6
-rw-r--r--Source/CursesDialog/cmCursesLongMessageForm.cxx3
-rw-r--r--Source/CursesDialog/cmCursesLongMessageForm.h5
-rw-r--r--Source/CursesDialog/cmCursesMainForm.cxx5
-rw-r--r--Source/CursesDialog/cmCursesMainForm.h5
-rw-r--r--Source/CursesDialog/cmCursesOptionsWidget.h4
-rw-r--r--Source/CursesDialog/cmCursesPathWidget.h5
-rw-r--r--Source/CursesDialog/cmCursesStringWidget.h5
-rw-r--r--Source/CursesDialog/cmCursesWidget.cxx2
-rw-r--r--Source/CursesDialog/cmCursesWidget.h7
-rw-r--r--Source/cmAddSubDirectoryCommand.cxx3
-rw-r--r--Source/cmAlgorithms.h3
-rw-r--r--Source/cmCLocaleEnvironmentScope.h4
-rw-r--r--Source/cmCPackPropertiesGenerator.cxx2
-rw-r--r--Source/cmCPackPropertiesGenerator.h6
-rw-r--r--Source/cmCommand.h6
-rw-r--r--Source/cmCommandArgumentParserHelper.cxx1
-rw-r--r--Source/cmCommandArgumentParserHelper.h4
-rw-r--r--Source/cmComputeLinkInformation.h6
-rw-r--r--Source/cmConfigure.cmake.h.in11
-rw-r--r--Source/cmCryptoHash.h4
-rw-r--r--Source/cmDefinitions.h6
-rw-r--r--Source/cmDepends.h6
-rw-r--r--Source/cmDependsC.h6
-rw-r--r--Source/cmDependsFortran.h5
-rw-r--r--Source/cmDependsJava.h6
-rw-r--r--Source/cmDynamicLoader.cxx2
-rw-r--r--Source/cmDynamicLoader.h8
-rw-r--r--Source/cmFileCommand.cxx4
-rw-r--r--Source/cmFileLock.h7
-rw-r--r--Source/cmFileLockPool.h12
-rw-r--r--Source/cmFileMonitor.cxx2
-rw-r--r--Source/cmGeneratorExpression.h10
-rw-r--r--Source/cmGeneratorExpressionEvaluator.h3
-rw-r--r--Source/cmGeneratorTarget.cxx66
-rw-r--r--Source/cmGeneratorTarget.h10
-rw-r--r--Source/cmGlobalGenerator.h6
-rw-r--r--Source/cmGlobalNinjaGenerator.cxx29
-rw-r--r--Source/cmGlobalNinjaGenerator.h10
-rw-r--r--Source/cmGlobalVisualStudio7Generator.cxx13
-rw-r--r--Source/cmGlobalVisualStudio8Generator.cxx2
-rw-r--r--Source/cmGlobalXCodeGenerator.cxx452
-rw-r--r--Source/cmGlobalXCodeGenerator.h3
-rw-r--r--Source/cmGraphAdjacencyList.h17
-rw-r--r--Source/cmInstallDirectoryGenerator.cxx6
-rw-r--r--Source/cmInstallDirectoryGenerator.h7
-rw-r--r--Source/cmInstallExportGenerator.cxx4
-rw-r--r--Source/cmInstallExportGenerator.h6
-rw-r--r--Source/cmInstallFilesGenerator.cxx6
-rw-r--r--Source/cmInstallFilesGenerator.h7
-rw-r--r--Source/cmInstallGenerator.h2
-rw-r--r--Source/cmInstallTargetGenerator.cxx26
-rw-r--r--Source/cmInstallTargetGenerator.h31
-rw-r--r--Source/cmLinkItem.h11
-rw-r--r--Source/cmLinkLineComputer.h4
-rw-r--r--Source/cmLinkLineDeviceComputer.h4
-rw-r--r--Source/cmListFileCache.cxx5
-rw-r--r--Source/cmListFileCache.h6
-rw-r--r--Source/cmLocalNinjaGenerator.cxx6
-rw-r--r--Source/cmLocalNinjaGenerator.h4
-rw-r--r--Source/cmLocale.h5
-rw-r--r--Source/cmMSVC60LinkLineComputer.h2
-rw-r--r--Source/cmMakefile.h6
-rw-r--r--Source/cmNinjaLinkLineComputer.h2
-rw-r--r--Source/cmNinjaTargetGenerator.cxx31
-rw-r--r--Source/cmNinjaTargetGenerator.h3
-rw-r--r--Source/cmNinjaTypes.h6
-rw-r--r--Source/cmOutputRequiredFilesCommand.cxx3
-rw-r--r--Source/cmQtAutoGenerators.cxx478
-rw-r--r--Source/cmQtAutoGenerators.h93
-rw-r--r--Source/cmRST.cxx10
-rw-r--r--Source/cmScriptGenerator.cxx14
-rw-r--r--Source/cmScriptGenerator.h18
-rw-r--r--Source/cmSetTargetPropertiesCommand.cxx3
-rw-r--r--Source/cmSetTestsPropertiesCommand.cxx3
-rw-r--r--Source/cmSourceGroupCommand.cxx59
-rw-r--r--Source/cmStatePrivate.h5
-rw-r--r--Source/cmSystemTools.cxx49
-rw-r--r--Source/cmSystemTools.h5
-rw-r--r--Source/cmTargetDepend.h2
-rw-r--r--Source/cmTestGenerator.cxx14
-rw-r--r--Source/cmTestGenerator.h17
-rw-r--r--Source/cmXMLWriter.h7
-rw-r--r--Source/cmake.h6
-rw-r--r--Source/cmcmd.cxx3
109 files changed, 919 insertions, 1005 deletions
diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake
index ea6e0e2..f9c73c0 100644
--- a/Source/CMakeVersion.cmake
+++ b/Source/CMakeVersion.cmake
@@ -1,5 +1,5 @@
# CMake version number components.
set(CMake_VERSION_MAJOR 3)
set(CMake_VERSION_MINOR 8)
-set(CMake_VERSION_PATCH 20170421)
+set(CMake_VERSION_PATCH 20170425)
#set(CMake_VERSION_RC 1)
diff --git a/Source/CPack/IFW/cmCPackIFWInstaller.cxx b/Source/CPack/IFW/cmCPackIFWInstaller.cxx
index 3aebbc8..57b47f1 100644
--- a/Source/CPack/IFW/cmCPackIFWInstaller.cxx
+++ b/Source/CPack/IFW/cmCPackIFWInstaller.cxx
@@ -288,7 +288,7 @@ public:
hasFiles = false;
hasErrors = false;
- basePath = cmSystemTools::GetFilenamePath(installer->Resources[r].data());
+ basePath = cmSystemTools::GetFilenamePath(installer->Resources[r]);
ParseFile(installer->Resources[r].data());
@@ -360,8 +360,7 @@ void cmCPackIFWInstaller::GenerateInstallerFile()
cmSystemTools::GetFilenameName(InstallerApplicationIcon);
std::string path = Directory + "/config/" + name;
name = cmSystemTools::GetFilenameWithoutExtension(name);
- cmsys::SystemTools::CopyFileIfDifferent(InstallerApplicationIcon.data(),
- path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(InstallerApplicationIcon, path);
xout.Element("InstallerApplicationIcon", name);
}
@@ -369,8 +368,7 @@ void cmCPackIFWInstaller::GenerateInstallerFile()
if (!InstallerWindowIcon.empty()) {
std::string name = cmSystemTools::GetFilenameName(InstallerWindowIcon);
std::string path = Directory + "/config/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(InstallerWindowIcon.data(),
- path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(InstallerWindowIcon, path);
xout.Element("InstallerWindowIcon", name);
}
@@ -378,7 +376,7 @@ void cmCPackIFWInstaller::GenerateInstallerFile()
if (!Logo.empty()) {
std::string name = cmSystemTools::GetFilenameName(Logo);
std::string path = Directory + "/config/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(Logo.data(), path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(Logo, path);
xout.Element("Logo", name);
}
@@ -386,7 +384,7 @@ void cmCPackIFWInstaller::GenerateInstallerFile()
if (!Banner.empty()) {
std::string name = cmSystemTools::GetFilenameName(Banner);
std::string path = Directory + "/config/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(Banner.data(), path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(Banner, path);
xout.Element("Banner", name);
}
@@ -394,7 +392,7 @@ void cmCPackIFWInstaller::GenerateInstallerFile()
if (!Watermark.empty()) {
std::string name = cmSystemTools::GetFilenameName(Watermark);
std::string path = Directory + "/config/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(Watermark.data(), path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(Watermark, path);
xout.Element("Watermark", name);
}
@@ -402,7 +400,7 @@ void cmCPackIFWInstaller::GenerateInstallerFile()
if (!Background.empty()) {
std::string name = cmSystemTools::GetFilenameName(Background);
std::string path = Directory + "/config/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(Background.data(), path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(Background, path);
xout.Element("Background", name);
}
@@ -480,7 +478,7 @@ void cmCPackIFWInstaller::GenerateInstallerFile()
if (!IsVersionLess("2.0") && !ControlScript.empty()) {
std::string name = cmSystemTools::GetFilenameName(ControlScript);
std::string path = Directory + "/config/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(ControlScript.data(), path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(ControlScript, path);
xout.Element("ControlScript", name);
}
@@ -492,8 +490,7 @@ void cmCPackIFWInstaller::GenerateInstallerFile()
if (parser.ParseResource(i)) {
std::string name = cmSystemTools::GetFilenameName(Resources[i]);
std::string path = Directory + "/resources/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(Resources[i].data(),
- path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(Resources[i], path);
resources.push_back(name);
} else {
cmCPackLogger(cmCPackLog::LOG_WARNING, "Can't copy resources from \""
diff --git a/Source/CPack/IFW/cmCPackIFWPackage.cxx b/Source/CPack/IFW/cmCPackIFWPackage.cxx
index 2a95ba8..99e8b9e 100644
--- a/Source/CPack/IFW/cmCPackIFWPackage.cxx
+++ b/Source/CPack/IFW/cmCPackIFWPackage.cxx
@@ -590,7 +590,7 @@ void cmCPackIFWPackage::GeneratePackageFile()
if (!Script.empty()) {
std::string name = cmSystemTools::GetFilenameName(Script);
std::string path = Directory + "/meta/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(Script.data(), path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(Script, path);
xout.Element("Script", name);
}
@@ -599,8 +599,7 @@ void cmCPackIFWPackage::GeneratePackageFile()
for (size_t i = 0; i < userInterfaces.size(); i++) {
std::string name = cmSystemTools::GetFilenameName(userInterfaces[i]);
std::string path = Directory + "/meta/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(userInterfaces[i].data(),
- path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(userInterfaces[i], path);
userInterfaces[i] = name;
}
if (!userInterfaces.empty()) {
@@ -616,8 +615,7 @@ void cmCPackIFWPackage::GeneratePackageFile()
for (size_t i = 0; i < translations.size(); i++) {
std::string name = cmSystemTools::GetFilenameName(translations[i]);
std::string path = Directory + "/meta/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(translations[i].data(),
- path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(translations[i], path);
translations[i] = name;
}
if (!translations.empty()) {
@@ -675,7 +673,7 @@ void cmCPackIFWPackage::GeneratePackageFile()
for (size_t i = 1; i < licenses.size(); i += 2) {
std::string name = cmSystemTools::GetFilenameName(licenses[i]);
std::string path = Directory + "/meta/" + name;
- cmsys::SystemTools::CopyFileIfDifferent(licenses[i].data(), path.data());
+ cmsys::SystemTools::CopyFileIfDifferent(licenses[i], path);
licenses[i] = name;
}
if (!licenses.empty()) {
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
index 2df23fd..274dfd0 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx
@@ -677,10 +677,10 @@ bool cmCPackWIXGenerator::AddComponentsToFeature(
cpackPackageDesktopLinksList);
}
- AddDirectoryAndFileDefinitons(rootPath, "INSTALL_ROOT", directoryDefinitions,
- fileDefinitions, featureDefinitions,
- cpackPackageExecutablesList,
- cpackPackageDesktopLinksList, shortcuts);
+ AddDirectoryAndFileDefinitions(
+ rootPath, "INSTALL_ROOT", directoryDefinitions, fileDefinitions,
+ featureDefinitions, cpackPackageExecutablesList,
+ cpackPackageDesktopLinksList, shortcuts);
featureDefinitions.EndElement("FeatureRef");
@@ -841,7 +841,7 @@ bool cmCPackWIXGenerator::CreateLicenseFile()
return true;
}
-void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
+void cmCPackWIXGenerator::AddDirectoryAndFileDefinitions(
std::string const& topdir, std::string const& directoryId,
cmWIXDirectoriesSourceWriter& directoryDefinitions,
cmWIXFilesSourceWriter& fileDefinitions,
@@ -906,12 +906,12 @@ void cmCPackWIXGenerator::AddDirectoryAndFileDefinitons(
directoryDefinitions.BeginElement("Directory");
directoryDefinitions.AddAttribute("Id", subDirectoryId);
directoryDefinitions.AddAttribute("Name", fileName);
+ this->Patch->ApplyFragment(subDirectoryId, directoryDefinitions);
- AddDirectoryAndFileDefinitons(
+ AddDirectoryAndFileDefinitions(
fullPath, subDirectoryId, directoryDefinitions, fileDefinitions,
featureDefinitions, packageExecutables, desktopExecutables, shortcuts);
- this->Patch->ApplyFragment(subDirectoryId, directoryDefinitions);
directoryDefinitions.EndElement("Directory");
} else {
cmInstalledFile const* installedFile = this->GetInstalledFile(
diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.h b/Source/CPack/WiX/cmCPackWIXGenerator.h
index 353d6c0..b2633a7 100644
--- a/Source/CPack/WiX/cmCPackWIXGenerator.h
+++ b/Source/CPack/WiX/cmCPackWIXGenerator.h
@@ -104,7 +104,7 @@ private:
bool RunLightCommand(std::string const& objectFiles);
- void AddDirectoryAndFileDefinitons(
+ void AddDirectoryAndFileDefinitions(
std::string const& topdir, std::string const& directoryId,
cmWIXDirectoriesSourceWriter& directoryDefinitions,
cmWIXFilesSourceWriter& fileDefinitions,
diff --git a/Source/CPack/WiX/cmWIXFeaturesSourceWriter.cxx b/Source/CPack/WiX/cmWIXFeaturesSourceWriter.cxx
index 79a9fdd..0be4377 100644
--- a/Source/CPack/WiX/cmWIXFeaturesSourceWriter.cxx
+++ b/Source/CPack/WiX/cmWIXFeaturesSourceWriter.cxx
@@ -44,6 +44,8 @@ void cmWIXFeaturesSourceWriter::EmitFeatureForComponentGroup(
AddAttributeUnlessEmpty("Title", group.DisplayName);
AddAttributeUnlessEmpty("Description", group.Description);
+ patch.ApplyFragment("CM_G_" + group.Name, *this);
+
for (std::vector<cmCPackComponentGroup*>::const_iterator i =
group.Subgroups.begin();
i != group.Subgroups.end(); ++i) {
@@ -56,8 +58,6 @@ void cmWIXFeaturesSourceWriter::EmitFeatureForComponentGroup(
EmitFeatureForComponent(**i, patch);
}
- patch.ApplyFragment("CM_G_" + group.Name, *this);
-
EndElement("Feature");
}
diff --git a/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx b/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx
index 7aa1212..b4cd1a3 100644
--- a/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx
+++ b/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx
@@ -136,6 +136,7 @@ std::string cmWIXFilesSourceWriter::EmitComponentFile(
}
}
+ patch.ApplyFragment(componentId, *this);
BeginElement("File");
AddAttribute("Id", fileId);
AddAttribute("Source", filePath);
@@ -147,16 +148,15 @@ std::string cmWIXFilesSourceWriter::EmitComponentFile(
if (!(fileMode & S_IWRITE)) {
AddAttribute("ReadOnly", "yes");
}
+ patch.ApplyFragment(fileId, *this);
if (installedFile) {
cmWIXAccessControlList acl(Logger, *installedFile, *this);
acl.Apply();
}
- patch.ApplyFragment(fileId, *this);
EndElement("File");
- patch.ApplyFragment(componentId, *this);
EndElement("Component");
EndElement("DirectoryRef");
diff --git a/Source/CPack/WiX/cmWIXPatch.cxx b/Source/CPack/WiX/cmWIXPatch.cxx
index 3a7dbfd..287a644 100644
--- a/Source/CPack/WiX/cmWIXPatch.cxx
+++ b/Source/CPack/WiX/cmWIXPatch.cxx
@@ -29,7 +29,11 @@ void cmWIXPatch::ApplyFragment(std::string const& id,
return;
const cmWIXPatchElement& fragment = i->second;
-
+ for (cmWIXPatchElement::attributes_t::const_iterator attr_i =
+ fragment.attributes.begin();
+ attr_i != fragment.attributes.end(); ++attr_i) {
+ writer.AddAttribute(attr_i->first, attr_i->second);
+ }
this->ApplyElementChildren(fragment, writer);
Fragments.erase(i);
diff --git a/Source/CPack/WiX/cmWIXPatchParser.cxx b/Source/CPack/WiX/cmWIXPatchParser.cxx
index 7f2ae19..0dcc74a 100644
--- a/Source/CPack/WiX/cmWIXPatchParser.cxx
+++ b/Source/CPack/WiX/cmWIXPatchParser.cxx
@@ -72,9 +72,11 @@ void cmWIXPatchParser::StartElement(const std::string& name, const char** atts)
void cmWIXPatchParser::StartFragment(const char** attributes)
{
+ cmWIXPatchElement* new_element = CM_NULLPTR;
+ /* find the id of for fragment */
for (size_t i = 0; attributes[i]; i += 2) {
- std::string key = attributes[i];
- std::string value = attributes[i + 1];
+ const std::string key = attributes[i];
+ const std::string value = attributes[i + 1];
if (key == "Id") {
if (Fragments.find(value) != Fragments.end()) {
@@ -83,10 +85,22 @@ void cmWIXPatchParser::StartFragment(const char** attributes)
ReportValidationError(tmp.str());
}
- ElementStack.push_back(&Fragments[value]);
- } else {
- ReportValidationError(
- "The only allowed 'CPackWixFragment' attribute is 'Id'");
+ new_element = &Fragments[value];
+ ElementStack.push_back(new_element);
+ }
+ }
+
+ /* add any additional attributes for the fragement */
+ if (!new_element) {
+ ReportValidationError("No 'Id' specified for 'CPackWixFragment' element");
+ } else {
+ for (size_t i = 0; attributes[i]; i += 2) {
+ const std::string key = attributes[i];
+ const std::string value = attributes[i + 1];
+
+ if (key != "Id") {
+ new_element->attributes[key] = value;
+ }
}
}
}
diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx
index 4d970d5..87c532c 100644
--- a/Source/CTest/cmCTestCoverageHandler.cxx
+++ b/Source/CTest/cmCTestCoverageHandler.cxx
@@ -2222,7 +2222,8 @@ void cmCTestCoverageHandler::LoadLabels(const char* dir)
if (line.empty() || line[0] == '#') {
// Ignore blank and comment lines.
continue;
- } else if (line[0] == ' ') {
+ }
+ if (line[0] == ' ') {
// Label lines appear indented by one space.
std::string label = line.substr(1);
int id = this->GetLabelId(label);
diff --git a/Source/CTest/cmCTestLaunch.cxx b/Source/CTest/cmCTestLaunch.cxx
index 7195bb3..a782150 100644
--- a/Source/CTest/cmCTestLaunch.cxx
+++ b/Source/CTest/cmCTestLaunch.cxx
@@ -306,7 +306,8 @@ void cmCTestLaunch::LoadLabels()
if (line.empty() || line[0] == '#') {
// Ignore blank and comment lines.
continue;
- } else if (line[0] == ' ') {
+ }
+ if (line[0] == ' ') {
// Label lines appear indented by one space.
if (inTarget || inSource) {
this->Labels.insert(line.c_str() + 1);
diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx
index d738a1b..fdc16b1 100644
--- a/Source/CTest/cmCTestMultiProcessHandler.cxx
+++ b/Source/CTest/cmCTestMultiProcessHandler.cxx
@@ -561,7 +561,7 @@ void cmCTestMultiProcessHandler::CreateParallelTestCostList()
// In parallel test runs repeatedly move dependencies of the tests on
// the current dependency level to the next level until no
// further dependencies exist.
- while (priorityStack.back().size()) {
+ while (!priorityStack.back().empty()) {
TestSet& previousSet = priorityStack.back();
priorityStack.push_back(TestSet());
TestSet& currentSet = priorityStack.back();
diff --git a/Source/CTest/cmCTestTestCommand.cxx b/Source/CTest/cmCTestTestCommand.cxx
index a756188..21b1003 100644
--- a/Source/CTest/cmCTestTestCommand.cxx
+++ b/Source/CTest/cmCTestTestCommand.cxx
@@ -33,10 +33,11 @@ cmCTestGenericHandler* cmCTestTestCommand::InitializeHandler()
const char* ctestTimeout =
this->Makefile->GetDefinition("CTEST_TEST_TIMEOUT");
- double timeout = this->CTest->GetTimeOut();
+ double timeout;
if (ctestTimeout) {
timeout = atof(ctestTimeout);
} else {
+ timeout = this->CTest->GetTimeOut();
if (timeout <= 0) {
// By default use timeout of 10 minutes
timeout = 600;
diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx
index dafeec2..167fecf 100644
--- a/Source/CTest/cmCTestTestHandler.cxx
+++ b/Source/CTest/cmCTestTestHandler.cxx
@@ -1633,10 +1633,10 @@ void cmCTestTestHandler::UseExcludeRegExp()
const char* cmCTestTestHandler::GetTestStatus(int status)
{
- static const char statuses[][100] = {
- "Not Run", "Timeout", "SEGFAULT", "ILLEGAL", "INTERRUPT",
- "NUMERICAL", "OTHER_FAULT", "Failed", "BAD_COMMAND", "Completed"
- };
+ static const char* statuses[] = { "Not Run", "Timeout", "SEGFAULT",
+ "ILLEGAL", "INTERRUPT", "NUMERICAL",
+ "OTHER_FAULT", "Failed", "BAD_COMMAND",
+ "Completed" };
if (status < cmCTestTestHandler::NOT_RUN ||
status > cmCTestTestHandler::COMPLETED) {
diff --git a/Source/CTest/cmParseDelphiCoverage.cxx b/Source/CTest/cmParseDelphiCoverage.cxx
index 9ae48d8..9cdd50b 100644
--- a/Source/CTest/cmParseDelphiCoverage.cxx
+++ b/Source/CTest/cmParseDelphiCoverage.cxx
@@ -46,7 +46,8 @@ public:
beginSet.push_back("begin");
coverageVector.push_back(-1);
continue;
- } else if (line.find('{') != line.npos) {
+ }
+ if (line.find('{') != line.npos) {
blockComFlag = true;
} else if (line.find('}') != line.npos) {
blockComFlag = false;
diff --git a/Source/Checks/cm_cxx_eq_delete.cxx b/Source/Checks/cm_cxx_eq_delete.cxx
new file mode 100644
index 0000000..809e4cf
--- /dev/null
+++ b/Source/Checks/cm_cxx_eq_delete.cxx
@@ -0,0 +1,14 @@
+struct Foo
+{
+ Foo() {}
+ ~Foo() {}
+ Foo(Foo const&) = delete;
+ Foo& operator=(Foo const&) = delete;
+ int test() const { return 0; }
+};
+
+int main()
+{
+ Foo const foo;
+ return foo.test();
+}
diff --git a/Source/Checks/cm_cxx_features.cmake b/Source/Checks/cm_cxx_features.cmake
index 80c9f3b..cd58539 100644
--- a/Source/Checks/cm_cxx_features.cmake
+++ b/Source/Checks/cm_cxx_features.cmake
@@ -33,6 +33,7 @@ endfunction()
if(CMAKE_CXX_STANDARD)
cm_check_cxx_feature(auto_ptr)
+ cm_check_cxx_feature(eq_delete)
cm_check_cxx_feature(make_unique)
if(CMake_HAVE_CXX_MAKE_UNIQUE)
set(CMake_HAVE_CXX_UNIQUE_PTR 1)
diff --git a/Source/CursesDialog/cmCursesBoolWidget.h b/Source/CursesDialog/cmCursesBoolWidget.h
index 45f01aa..90bcc22 100644
--- a/Source/CursesDialog/cmCursesBoolWidget.h
+++ b/Source/CursesDialog/cmCursesBoolWidget.h
@@ -12,6 +12,8 @@ class cmCursesMainForm;
class cmCursesBoolWidget : public cmCursesWidget
{
+ CM_DISABLE_COPY(cmCursesBoolWidget)
+
public:
cmCursesBoolWidget(int width, int height, int left, int top);
@@ -25,10 +27,6 @@ public:
// Set/Get the value (on/off).
void SetValueAsBool(bool value);
bool GetValueAsBool();
-
-protected:
- cmCursesBoolWidget(const cmCursesBoolWidget& from);
- void operator=(const cmCursesBoolWidget&);
};
#endif // cmCursesBoolWidget_h
diff --git a/Source/CursesDialog/cmCursesCacheEntryComposite.cxx b/Source/CursesDialog/cmCursesCacheEntryComposite.cxx
index cdde1a3..d071c91 100644
--- a/Source/CursesDialog/cmCursesCacheEntryComposite.cxx
+++ b/Source/CursesDialog/cmCursesCacheEntryComposite.cxx
@@ -14,7 +14,6 @@
#include "cmSystemTools.h"
#include "cmake.h"
-#include "cmConfigure.h"
#include <assert.h>
#include <vector>
diff --git a/Source/CursesDialog/cmCursesCacheEntryComposite.h b/Source/CursesDialog/cmCursesCacheEntryComposite.h
index 1dbcfa4..3c50078 100644
--- a/Source/CursesDialog/cmCursesCacheEntryComposite.h
+++ b/Source/CursesDialog/cmCursesCacheEntryComposite.h
@@ -3,7 +3,7 @@
#ifndef cmCursesCacheEntryComposite_h
#define cmCursesCacheEntryComposite_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include <string>
@@ -13,6 +13,8 @@ class cmake;
class cmCursesCacheEntryComposite
{
+ CM_DISABLE_COPY(cmCursesCacheEntryComposite)
+
public:
cmCursesCacheEntryComposite(const std::string& key, int labelwidth,
int entrywidth);
@@ -24,9 +26,6 @@ public:
friend class cmCursesMainForm;
protected:
- cmCursesCacheEntryComposite(const cmCursesCacheEntryComposite& from);
- void operator=(const cmCursesCacheEntryComposite&);
-
cmCursesLabelWidget* Label;
cmCursesLabelWidget* IsNewLabel;
cmCursesWidget* Entry;
diff --git a/Source/CursesDialog/cmCursesDummyWidget.h b/Source/CursesDialog/cmCursesDummyWidget.h
index 0381f25..d9bb6ba 100644
--- a/Source/CursesDialog/cmCursesDummyWidget.h
+++ b/Source/CursesDialog/cmCursesDummyWidget.h
@@ -12,6 +12,8 @@ class cmCursesMainForm;
class cmCursesDummyWidget : public cmCursesWidget
{
+ CM_DISABLE_COPY(cmCursesDummyWidget)
+
public:
cmCursesDummyWidget(int width, int height, int left, int top);
@@ -20,10 +22,6 @@ public:
// when this widget has focus. Returns true if the input was
// handled.
bool HandleInput(int& key, cmCursesMainForm* fm, WINDOW* w) CM_OVERRIDE;
-
-protected:
- cmCursesDummyWidget(const cmCursesDummyWidget& from);
- void operator=(const cmCursesDummyWidget&);
};
#endif // cmCursesDummyWidget_h
diff --git a/Source/CursesDialog/cmCursesFilePathWidget.h b/Source/CursesDialog/cmCursesFilePathWidget.h
index b4c04cb..6ad535b 100644
--- a/Source/CursesDialog/cmCursesFilePathWidget.h
+++ b/Source/CursesDialog/cmCursesFilePathWidget.h
@@ -3,18 +3,16 @@
#ifndef cmCursesFilePathWidget_h
#define cmCursesFilePathWidget_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include "cmCursesPathWidget.h"
class cmCursesFilePathWidget : public cmCursesPathWidget
{
+ CM_DISABLE_COPY(cmCursesFilePathWidget)
+
public:
cmCursesFilePathWidget(int width, int height, int left, int top);
-
-protected:
- cmCursesFilePathWidget(const cmCursesFilePathWidget& from);
- void operator=(const cmCursesFilePathWidget&);
};
#endif // cmCursesFilePathWidget_h
diff --git a/Source/CursesDialog/cmCursesForm.cxx b/Source/CursesDialog/cmCursesForm.cxx
index 12e5d75..06c1e9c 100644
--- a/Source/CursesDialog/cmCursesForm.cxx
+++ b/Source/CursesDialog/cmCursesForm.cxx
@@ -2,8 +2,6 @@
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmCursesForm.h"
-#include "cmConfigure.h"
-
cmsys::ofstream cmCursesForm::DebugFile;
bool cmCursesForm::Debug = false;
diff --git a/Source/CursesDialog/cmCursesForm.h b/Source/CursesDialog/cmCursesForm.h
index 7eb94a8..553105c 100644
--- a/Source/CursesDialog/cmCursesForm.h
+++ b/Source/CursesDialog/cmCursesForm.h
@@ -3,7 +3,7 @@
#ifndef cmCursesForm_h
#define cmCursesForm_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include "cmCursesStandardIncludes.h"
@@ -11,6 +11,8 @@
class cmCursesForm
{
+ CM_DISABLE_COPY(cmCursesForm)
+
public:
cmCursesForm();
virtual ~cmCursesForm();
@@ -55,9 +57,6 @@ protected:
static cmsys::ofstream DebugFile;
static bool Debug;
- cmCursesForm(const cmCursesForm& form);
- void operator=(const cmCursesForm&);
-
FORM* Form;
};
diff --git a/Source/CursesDialog/cmCursesLabelWidget.h b/Source/CursesDialog/cmCursesLabelWidget.h
index a0de4c6..267de7c 100644
--- a/Source/CursesDialog/cmCursesLabelWidget.h
+++ b/Source/CursesDialog/cmCursesLabelWidget.h
@@ -14,6 +14,8 @@ class cmCursesMainForm;
class cmCursesLabelWidget : public cmCursesWidget
{
+ CM_DISABLE_COPY(cmCursesLabelWidget)
+
public:
cmCursesLabelWidget(int width, int height, int left, int top,
const std::string& name);
@@ -24,10 +26,6 @@ public:
// when this widget has focus. Returns true if the input was
// handled
bool HandleInput(int& key, cmCursesMainForm* fm, WINDOW* w) CM_OVERRIDE;
-
-protected:
- cmCursesLabelWidget(const cmCursesLabelWidget& from);
- void operator=(const cmCursesLabelWidget&);
};
#endif // cmCursesLabelWidget_h
diff --git a/Source/CursesDialog/cmCursesLongMessageForm.cxx b/Source/CursesDialog/cmCursesLongMessageForm.cxx
index d299547..7fb065d 100644
--- a/Source/CursesDialog/cmCursesLongMessageForm.cxx
+++ b/Source/CursesDialog/cmCursesLongMessageForm.cxx
@@ -159,7 +159,8 @@ void cmCursesLongMessageForm::HandleInput()
// quit
if (key == 'o' || key == 'e') {
break;
- } else if (key == KEY_DOWN || key == ctrl('n')) {
+ }
+ if (key == KEY_DOWN || key == ctrl('n')) {
form_driver(this->Form, REQ_SCR_FLINE);
} else if (key == KEY_UP || key == ctrl('p')) {
form_driver(this->Form, REQ_SCR_BLINE);
diff --git a/Source/CursesDialog/cmCursesLongMessageForm.h b/Source/CursesDialog/cmCursesLongMessageForm.h
index ab49c07..cd8e095 100644
--- a/Source/CursesDialog/cmCursesLongMessageForm.h
+++ b/Source/CursesDialog/cmCursesLongMessageForm.h
@@ -13,6 +13,8 @@
class cmCursesLongMessageForm : public cmCursesForm
{
+ CM_DISABLE_COPY(cmCursesLongMessageForm)
+
public:
cmCursesLongMessageForm(std::vector<std::string> const& messages,
const char* title);
@@ -38,9 +40,6 @@ public:
void UpdateStatusBar() CM_OVERRIDE;
protected:
- cmCursesLongMessageForm(const cmCursesLongMessageForm& from);
- void operator=(const cmCursesLongMessageForm&);
-
std::string Messages;
std::string Title;
diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx
index 939c736..ca824c0 100644
--- a/Source/CursesDialog/cmCursesMainForm.cxx
+++ b/Source/CursesDialog/cmCursesMainForm.cxx
@@ -764,9 +764,8 @@ void cmCursesMainForm::HandleInput()
// quit
if (key == 'q') {
break;
- } else {
- continue;
}
+ continue;
}
currentField = current_field(this->Form);
@@ -826,7 +825,7 @@ void cmCursesMainForm::HandleInput()
// (index always corresponds to the value field)
// scroll down with arrow down, ctrl+n (emacs binding), or j (vim
// binding)
- else if (key == KEY_DOWN || key == ctrl('n') || key == 'j') {
+ if (key == KEY_DOWN || key == ctrl('n') || key == 'j') {
FIELD* cur = current_field(this->Form);
size_t findex = field_index(cur);
if (findex == 3 * this->NumberOfVisibleEntries - 1) {
diff --git a/Source/CursesDialog/cmCursesMainForm.h b/Source/CursesDialog/cmCursesMainForm.h
index b91211e..e35cf3e 100644
--- a/Source/CursesDialog/cmCursesMainForm.h
+++ b/Source/CursesDialog/cmCursesMainForm.h
@@ -23,6 +23,8 @@ class cmake;
*/
class cmCursesMainForm : public cmCursesForm
{
+ CM_DISABLE_COPY(cmCursesMainForm)
+
public:
cmCursesMainForm(std::vector<std::string> const& args, int initwidth);
~cmCursesMainForm() CM_OVERRIDE;
@@ -103,9 +105,6 @@ public:
static void UpdateProgress(const char* msg, float prog, void*);
protected:
- cmCursesMainForm(const cmCursesMainForm& from);
- void operator=(const cmCursesMainForm&);
-
// Copy the cache values from the user interface to the actual
// cache.
void FillCacheManagerFromUI();
diff --git a/Source/CursesDialog/cmCursesOptionsWidget.h b/Source/CursesDialog/cmCursesOptionsWidget.h
index 4b2e8b4..7f4416f 100644
--- a/Source/CursesDialog/cmCursesOptionsWidget.h
+++ b/Source/CursesDialog/cmCursesOptionsWidget.h
@@ -15,6 +15,8 @@ class cmCursesMainForm;
class cmCursesOptionsWidget : public cmCursesWidget
{
+ CM_DISABLE_COPY(cmCursesOptionsWidget)
+
public:
cmCursesOptionsWidget(int width, int height, int left, int top);
@@ -29,8 +31,6 @@ public:
void PreviousOption();
protected:
- cmCursesOptionsWidget(const cmCursesOptionsWidget& from);
- void operator=(const cmCursesOptionsWidget&);
std::vector<std::string> Options;
std::vector<std::string>::size_type CurrentOption;
};
diff --git a/Source/CursesDialog/cmCursesPathWidget.h b/Source/CursesDialog/cmCursesPathWidget.h
index 097eeca..ae6c16d 100644
--- a/Source/CursesDialog/cmCursesPathWidget.h
+++ b/Source/CursesDialog/cmCursesPathWidget.h
@@ -14,6 +14,8 @@ class cmCursesMainForm;
class cmCursesPathWidget : public cmCursesStringWidget
{
+ CM_DISABLE_COPY(cmCursesPathWidget)
+
public:
cmCursesPathWidget(int width, int height, int left, int top);
@@ -26,9 +28,6 @@ public:
void OnType(int& key, cmCursesMainForm* fm, WINDOW* w) CM_OVERRIDE;
protected:
- cmCursesPathWidget(const cmCursesPathWidget& from);
- void operator=(const cmCursesPathWidget&);
-
std::string LastString;
std::string LastGlob;
bool Cycle;
diff --git a/Source/CursesDialog/cmCursesStringWidget.h b/Source/CursesDialog/cmCursesStringWidget.h
index c07bfce..5eb3366 100644
--- a/Source/CursesDialog/cmCursesStringWidget.h
+++ b/Source/CursesDialog/cmCursesStringWidget.h
@@ -20,6 +20,8 @@ class cmCursesMainForm;
class cmCursesStringWidget : public cmCursesWidget
{
+ CM_DISABLE_COPY(cmCursesStringWidget)
+
public:
cmCursesStringWidget(int width, int height, int left, int top);
@@ -60,9 +62,6 @@ public:
bool PrintKeys() CM_OVERRIDE;
protected:
- cmCursesStringWidget(const cmCursesStringWidget& from);
- void operator=(const cmCursesStringWidget&);
-
// true if the widget is in edit mode
bool InEdit;
char* OriginalString;
diff --git a/Source/CursesDialog/cmCursesWidget.cxx b/Source/CursesDialog/cmCursesWidget.cxx
index 229a050..054f27e 100644
--- a/Source/CursesDialog/cmCursesWidget.cxx
+++ b/Source/CursesDialog/cmCursesWidget.cxx
@@ -2,8 +2,6 @@
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmCursesWidget.h"
-#include "cmConfigure.h"
-
cmCursesWidget::cmCursesWidget(int width, int height, int left, int top)
{
this->Field = new_field(height, width, top, left, 0, 0);
diff --git a/Source/CursesDialog/cmCursesWidget.h b/Source/CursesDialog/cmCursesWidget.h
index 5ce8a75..3470d70 100644
--- a/Source/CursesDialog/cmCursesWidget.h
+++ b/Source/CursesDialog/cmCursesWidget.h
@@ -3,7 +3,7 @@
#ifndef cmCursesWidget_h
#define cmCursesWidget_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include "cmCursesStandardIncludes.h"
#include "cmStateTypes.h"
@@ -14,6 +14,8 @@ class cmCursesMainForm;
class cmCursesWidget
{
+ CM_DISABLE_COPY(cmCursesWidget)
+
public:
cmCursesWidget(int width, int height, int left, int top);
virtual ~cmCursesWidget();
@@ -59,9 +61,6 @@ public:
friend class cmCursesMainForm;
protected:
- cmCursesWidget(const cmCursesWidget& from);
- void operator=(const cmCursesWidget&);
-
cmStateEnums::CacheEntryType Type;
std::string Value;
FIELD* Field;
diff --git a/Source/cmAddSubDirectoryCommand.cxx b/Source/cmAddSubDirectoryCommand.cxx
index 34ec0e3..dbd4dd1 100644
--- a/Source/cmAddSubDirectoryCommand.cxx
+++ b/Source/cmAddSubDirectoryCommand.cxx
@@ -32,7 +32,8 @@ bool cmAddSubDirectoryCommand::InitialPass(
if (*i == "EXCLUDE_FROM_ALL") {
excludeFromAll = true;
continue;
- } else if (binArg.empty()) {
+ }
+ if (binArg.empty()) {
binArg = *i;
} else {
this->SetError("called with incorrect number of arguments");
diff --git a/Source/cmAlgorithms.h b/Source/cmAlgorithms.h
index 70581ad..4adfe23 100644
--- a/Source/cmAlgorithms.h
+++ b/Source/cmAlgorithms.h
@@ -360,7 +360,8 @@ std::string cmWrap(std::string const& prefix, Range const& r,
}
template <typename Range>
-std::string cmWrap(char prefix, Range const& r, char suffix, std::string sep)
+std::string cmWrap(char prefix, Range const& r, char suffix,
+ std::string const& sep)
{
return cmWrap(std::string(1, prefix), r, std::string(1, suffix), sep);
}
diff --git a/Source/cmCLocaleEnvironmentScope.h b/Source/cmCLocaleEnvironmentScope.h
index c4065e1..e956cb2 100644
--- a/Source/cmCLocaleEnvironmentScope.h
+++ b/Source/cmCLocaleEnvironmentScope.h
@@ -3,13 +3,15 @@
#ifndef cmCLocaleEnvironmentScope_h
#define cmCLocaleEnvironmentScope_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include <map>
#include <string>
class cmCLocaleEnvironmentScope
{
+ CM_DISABLE_COPY(cmCLocaleEnvironmentScope)
+
public:
cmCLocaleEnvironmentScope();
~cmCLocaleEnvironmentScope();
diff --git a/Source/cmCPackPropertiesGenerator.cxx b/Source/cmCPackPropertiesGenerator.cxx
index ae6b0a1..57a8b38 100644
--- a/Source/cmCPackPropertiesGenerator.cxx
+++ b/Source/cmCPackPropertiesGenerator.cxx
@@ -19,7 +19,7 @@ cmCPackPropertiesGenerator::cmCPackPropertiesGenerator(
}
void cmCPackPropertiesGenerator::GenerateScriptForConfig(
- std::ostream& os, const std::string& config, Indent const& indent)
+ std::ostream& os, const std::string& config, Indent indent)
{
std::string const& expandedFileName =
this->InstalledFile.GetNameExpression().Evaluate(this->LG, config);
diff --git a/Source/cmCPackPropertiesGenerator.h b/Source/cmCPackPropertiesGenerator.h
index 6df5297..48f4c10 100644
--- a/Source/cmCPackPropertiesGenerator.h
+++ b/Source/cmCPackPropertiesGenerator.h
@@ -3,7 +3,7 @@
#ifndef cmCPackPropertiesGenerator_h
#define cmCPackPropertiesGenerator_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include "cmScriptGenerator.h"
@@ -20,6 +20,8 @@ class cmLocalGenerator;
*/
class cmCPackPropertiesGenerator : public cmScriptGenerator
{
+ CM_DISABLE_COPY(cmCPackPropertiesGenerator)
+
public:
cmCPackPropertiesGenerator(cmLocalGenerator* lg,
cmInstalledFile const& installedFile,
@@ -27,7 +29,7 @@ public:
protected:
void GenerateScriptForConfig(std::ostream& os, const std::string& config,
- Indent const& indent) CM_OVERRIDE;
+ Indent indent) CM_OVERRIDE;
cmLocalGenerator* LG;
cmInstalledFile const& InstalledFile;
diff --git a/Source/cmCommand.h b/Source/cmCommand.h
index f4a75d5..62eced0 100644
--- a/Source/cmCommand.h
+++ b/Source/cmCommand.h
@@ -24,6 +24,8 @@ struct cmListFileArgument;
*/
class cmCommand
{
+ CM_DISABLE_COPY(cmCommand)
+
public:
/**
* Construct the command. By default it has no makefile.
@@ -103,10 +105,6 @@ public:
*/
void SetError(const std::string& e);
-private:
- cmCommand(cmCommand const&); // = delete;
- cmCommand& operator=(cmCommand const&); // = delete;
-
protected:
cmMakefile* Makefile;
diff --git a/Source/cmCommandArgumentParserHelper.cxx b/Source/cmCommandArgumentParserHelper.cxx
index 153efc4..4eb4531 100644
--- a/Source/cmCommandArgumentParserHelper.cxx
+++ b/Source/cmCommandArgumentParserHelper.cxx
@@ -8,7 +8,6 @@
#include "cmSystemTools.h"
#include "cmake.h"
-#include "cmConfigure.h"
#include <iostream>
#include <sstream>
#include <string.h>
diff --git a/Source/cmCommandArgumentParserHelper.h b/Source/cmCommandArgumentParserHelper.h
index 2b65a5a..465ca9e 100644
--- a/Source/cmCommandArgumentParserHelper.h
+++ b/Source/cmCommandArgumentParserHelper.h
@@ -3,7 +3,7 @@
#ifndef cmCommandArgumentParserHelper_h
#define cmCommandArgumentParserHelper_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include <string>
#include <vector>
@@ -12,6 +12,8 @@ class cmMakefile;
class cmCommandArgumentParserHelper
{
+ CM_DISABLE_COPY(cmCommandArgumentParserHelper)
+
public:
struct ParserType
{
diff --git a/Source/cmComputeLinkInformation.h b/Source/cmComputeLinkInformation.h
index 60878e4..00e3ad2 100644
--- a/Source/cmComputeLinkInformation.h
+++ b/Source/cmComputeLinkInformation.h
@@ -36,12 +36,6 @@ public:
, Target(CM_NULLPTR)
{
}
- Item(Item const& item)
- : Value(item.Value)
- , IsPath(item.IsPath)
- , Target(item.Target)
- {
- }
Item(std::string const& v, bool p,
cmGeneratorTarget const* target = CM_NULLPTR)
: Value(v)
diff --git a/Source/cmConfigure.cmake.h.in b/Source/cmConfigure.cmake.h.in
index e30b43f..970fde5 100644
--- a/Source/cmConfigure.cmake.h.in
+++ b/Source/cmConfigure.cmake.h.in
@@ -21,6 +21,7 @@
#cmakedefine CMAKE_USE_MACH_PARSER
#cmakedefine CMAKE_USE_LIBUV
#cmakedefine CMake_HAVE_CXX_AUTO_PTR
+#cmakedefine CMake_HAVE_CXX_EQ_DELETE
#cmakedefine CMake_HAVE_CXX_MAKE_UNIQUE
#cmakedefine CMake_HAVE_CXX_NULLPTR
#cmakedefine CMake_HAVE_CXX_OVERRIDE
@@ -30,6 +31,12 @@
#define CMAKE_BIN_DIR "/@CMAKE_BIN_DIR@"
#define CMAKE_DATA_DIR "/@CMAKE_DATA_DIR@"
+#ifdef CMake_HAVE_CXX_EQ_DELETE
+#define CM_EQ_DELETE = delete
+#else
+#define CM_EQ_DELETE
+#endif
+
#ifdef CMake_HAVE_CXX_NULLPTR
#define CM_NULLPTR nullptr
#else
@@ -42,4 +49,8 @@
#define CM_OVERRIDE
#endif
+#define CM_DISABLE_COPY(Class) \
+ Class(Class const&) CM_EQ_DELETE; \
+ Class& operator=(Class const&) CM_EQ_DELETE;
+
#endif
diff --git a/Source/cmCryptoHash.h b/Source/cmCryptoHash.h
index 021ad10..c380d85 100644
--- a/Source/cmCryptoHash.h
+++ b/Source/cmCryptoHash.h
@@ -3,7 +3,7 @@
#ifndef cmCryptoHash_h
#define cmCryptoHash_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include <stddef.h>
#include <string>
@@ -16,6 +16,8 @@
*/
class cmCryptoHash
{
+ CM_DISABLE_COPY(cmCryptoHash)
+
public:
enum Algo
{
diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h
index 160e8e1..ddb8918 100644
--- a/Source/cmDefinitions.h
+++ b/Source/cmDefinitions.h
@@ -65,12 +65,6 @@ private:
, Used(false)
{
}
- Def(Def const& d)
- : std_string(d)
- , Exists(d.Exists)
- , Used(d.Used)
- {
- }
bool Exists;
bool Used;
};
diff --git a/Source/cmDepends.h b/Source/cmDepends.h
index a80b585..b33feb9 100644
--- a/Source/cmDepends.h
+++ b/Source/cmDepends.h
@@ -24,6 +24,8 @@ class cmLocalGenerator;
*/
class cmDepends
{
+ CM_DISABLE_COPY(cmDepends)
+
public:
/** Instances need to know the build directory name and the relative
path from the build directory to the target file. */
@@ -116,10 +118,6 @@ protected:
std::vector<std::string> IncludePath;
void SetIncludePathFromLanguage(const std::string& lang);
-
-private:
- cmDepends(cmDepends const&); // Purposely not implemented.
- void operator=(cmDepends const&); // Purposely not implemented.
};
#endif
diff --git a/Source/cmDependsC.h b/Source/cmDependsC.h
index 4f52826..250d40f 100644
--- a/Source/cmDependsC.h
+++ b/Source/cmDependsC.h
@@ -22,6 +22,8 @@ class cmLocalGenerator;
*/
class cmDependsC : public cmDepends
{
+ CM_DISABLE_COPY(cmDependsC)
+
public:
/** Checking instances need to know the build directory name and the
relative path from the build directory to the target file. */
@@ -93,10 +95,6 @@ protected:
void WriteCacheFile() const;
void ReadCacheFile();
-
-private:
- cmDependsC(cmDependsC const&); // Purposely not implemented.
- void operator=(cmDependsC const&); // Purposely not implemented.
};
#endif
diff --git a/Source/cmDependsFortran.h b/Source/cmDependsFortran.h
index a9a1ed3..ec208af 100644
--- a/Source/cmDependsFortran.h
+++ b/Source/cmDependsFortran.h
@@ -21,6 +21,8 @@ class cmLocalGenerator;
*/
class cmDependsFortran : public cmDepends
{
+ CM_DISABLE_COPY(cmDependsFortran)
+
public:
/** Checking instances need to know the build directory name and the
relative path from the build directory to the target file. */
@@ -77,9 +79,6 @@ protected:
cmDependsFortranInternals* Internal;
private:
- cmDependsFortran(cmDependsFortran const&); // Purposely not implemented.
- void operator=(cmDependsFortran const&); // Purposely not implemented.
-
std::string MaybeConvertToRelativePath(std::string const& base,
std::string const& path);
};
diff --git a/Source/cmDependsJava.h b/Source/cmDependsJava.h
index 6efa51a..a07bf09 100644
--- a/Source/cmDependsJava.h
+++ b/Source/cmDependsJava.h
@@ -17,6 +17,8 @@
*/
class cmDependsJava : public cmDepends
{
+ CM_DISABLE_COPY(cmDependsJava)
+
public:
/** Checking instances need to know the build directory name and the
relative path from the build directory to the target file. */
@@ -33,10 +35,6 @@ protected:
bool CheckDependencies(
std::istream& internalDepends, const char* internalDependsFileName,
std::map<std::string, DependencyVector>& validDeps) CM_OVERRIDE;
-
-private:
- cmDependsJava(cmDependsJava const&); // Purposely not implemented.
- void operator=(cmDependsJava const&); // Purposely not implemented.
};
#endif
diff --git a/Source/cmDynamicLoader.cxx b/Source/cmDynamicLoader.cxx
index 76a4a29..f530ba7 100644
--- a/Source/cmDynamicLoader.cxx
+++ b/Source/cmDynamicLoader.cxx
@@ -2,8 +2,6 @@
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmDynamicLoader.h"
-#include "cmConfigure.h"
-
#include <map>
#include <string>
#include <utility>
diff --git a/Source/cmDynamicLoader.h b/Source/cmDynamicLoader.h
index dd69b40..7c46dd5 100644
--- a/Source/cmDynamicLoader.h
+++ b/Source/cmDynamicLoader.h
@@ -8,12 +8,14 @@
#ifndef cmDynamicLoader_h
#define cmDynamicLoader_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include "cmsys/DynamicLoader.hxx" // IWYU pragma: export
class cmDynamicLoader
{
+ CM_DISABLE_COPY(cmDynamicLoader)
+
public:
// Description:
// Load a dynamic library into the current process.
@@ -28,10 +30,6 @@ public:
protected:
cmDynamicLoader() {}
~cmDynamicLoader() {}
-
-private:
- cmDynamicLoader(const cmDynamicLoader&); // Not implemented.
- void operator=(const cmDynamicLoader&); // Not implemented.
};
#endif
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 034a266..fa166a0 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -613,8 +613,8 @@ bool cmFileCommand::HandleStringsCommand(std::vector<std::string> const& args)
continue;
}
- else if ((c >= 0x20 && c < 0x7F) || c == '\t' ||
- (c == '\n' && newline_consume)) {
+ if ((c >= 0x20 && c < 0x7F) || c == '\t' ||
+ (c == '\n' && newline_consume)) {
// This is an ASCII character that may be part of a string.
// Cast added to avoid compiler warning. Cast is ok because
// c is guaranteed to fit in char by the above if...
diff --git a/Source/cmFileLock.h b/Source/cmFileLock.h
index 8f996cf..ccef508 100644
--- a/Source/cmFileLock.h
+++ b/Source/cmFileLock.h
@@ -3,7 +3,7 @@
#ifndef cmFileLock_h
#define cmFileLock_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include <string>
@@ -21,6 +21,8 @@ class cmFileLockResult;
*/
class cmFileLock
{
+ CM_DISABLE_COPY(cmFileLock)
+
public:
cmFileLock();
~cmFileLock();
@@ -44,9 +46,6 @@ public:
bool IsLocked(const std::string& filename) const;
private:
- cmFileLock(const cmFileLock&);
- cmFileLock& operator=(const cmFileLock&);
-
cmFileLockResult OpenFile();
cmFileLockResult LockWithoutTimeout();
cmFileLockResult LockWithTimeout(unsigned long timeoutSec);
diff --git a/Source/cmFileLockPool.h b/Source/cmFileLockPool.h
index 09c984c..689ddd7 100644
--- a/Source/cmFileLockPool.h
+++ b/Source/cmFileLockPool.h
@@ -3,7 +3,7 @@
#ifndef cmFileLockPool_h
#define cmFileLockPool_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include <list>
#include <string>
@@ -13,6 +13,8 @@ class cmFileLockResult;
class cmFileLockPool
{
+ CM_DISABLE_COPY(cmFileLockPool)
+
public:
cmFileLockPool();
~cmFileLockPool();
@@ -52,13 +54,12 @@ public:
cmFileLockResult Release(const std::string& filename);
private:
- cmFileLockPool(const cmFileLockPool&);
- cmFileLockPool& operator=(const cmFileLockPool&);
-
bool IsAlreadyLocked(const std::string& filename) const;
class ScopePool
{
+ CM_DISABLE_COPY(ScopePool)
+
public:
ScopePool();
~ScopePool();
@@ -69,9 +70,6 @@ private:
bool IsAlreadyLocked(const std::string& filename) const;
private:
- ScopePool(const ScopePool&);
- ScopePool& operator=(const ScopePool&);
-
typedef std::list<cmFileLock*> List;
typedef List::iterator It;
typedef List::const_iterator CIt;
diff --git a/Source/cmFileMonitor.cxx b/Source/cmFileMonitor.cxx
index 9e66035..ed794c3 100644
--- a/Source/cmFileMonitor.cxx
+++ b/Source/cmFileMonitor.cxx
@@ -236,7 +236,7 @@ public:
cmFileMonitor::Callback cb)
: Parent(p)
, PathSegment(ps)
- , CbList({ cb })
+ , CbList({ std::move(cb) })
{
assert(p);
assert(!ps.empty());
diff --git a/Source/cmGeneratorExpression.h b/Source/cmGeneratorExpression.h
index 694ce8a..34516f5 100644
--- a/Source/cmGeneratorExpression.h
+++ b/Source/cmGeneratorExpression.h
@@ -31,6 +31,8 @@ struct cmGeneratorExpressionEvaluator;
*/
class cmGeneratorExpression
{
+ CM_DISABLE_COPY(cmGeneratorExpression)
+
public:
/** Construct. */
cmGeneratorExpression(
@@ -61,14 +63,13 @@ public:
static std::string StripEmptyListElements(const std::string& input);
private:
- cmGeneratorExpression(const cmGeneratorExpression&);
- void operator=(const cmGeneratorExpression&);
-
cmListFileBacktrace Backtrace;
};
class cmCompiledGeneratorExpression
{
+ CM_DISABLE_COPY(cmCompiledGeneratorExpression)
+
public:
const char* Evaluate(
cmLocalGenerator* lg, const std::string& config, bool quiet = false,
@@ -133,9 +134,6 @@ private:
friend class cmGeneratorExpression;
- cmCompiledGeneratorExpression(const cmCompiledGeneratorExpression&);
- void operator=(const cmCompiledGeneratorExpression&);
-
cmListFileBacktrace Backtrace;
std::vector<cmGeneratorExpressionEvaluator*> Evaluators;
const std::string Input;
diff --git a/Source/cmGeneratorExpressionEvaluator.h b/Source/cmGeneratorExpressionEvaluator.h
index a6a341b..a0a826a 100644
--- a/Source/cmGeneratorExpressionEvaluator.h
+++ b/Source/cmGeneratorExpressionEvaluator.h
@@ -30,8 +30,7 @@ struct cmGeneratorExpressionEvaluator
cmGeneratorExpressionDAGChecker*) const = 0;
private:
- cmGeneratorExpressionEvaluator(const cmGeneratorExpressionEvaluator&);
- void operator=(const cmGeneratorExpressionEvaluator&);
+ CM_DISABLE_COPY(cmGeneratorExpressionEvaluator)
};
struct TextContent : public cmGeneratorExpressionEvaluator
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 10a7706..a0f677b 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -3973,15 +3973,14 @@ PropertyType checkInterfacePropertyCompatibility(cmGeneratorTarget const* tgt,
<< theTarget->GetName() << "\".\n";
cmSystemTools::Error(e.str().c_str());
break;
- } else {
- propContent = consistent.second;
- continue;
}
- } else {
- // Explicitly set on target and not set in iface. Can't disagree.
+ propContent = consistent.second;
continue;
}
- } else if (impliedByUse) {
+ // Explicitly set on target and not set in iface. Can't disagree.
+ continue;
+ }
+ if (impliedByUse) {
propContent = impliedValue<PropertyType>(propContent);
if (ifaceIsSet) {
@@ -3999,43 +3998,36 @@ PropertyType checkInterfacePropertyCompatibility(cmGeneratorTarget const* tgt,
<< "\" is in conflict.\n";
cmSystemTools::Error(e.str().c_str());
break;
- } else {
- propContent = consistent.second;
- continue;
}
- } else {
- // Implicitly set on target and not set in iface. Can't disagree.
+ propContent = consistent.second;
continue;
}
- } else {
- if (ifaceIsSet) {
- if (propInitialized) {
- std::pair<bool, PropertyType> consistent =
- consistentProperty(propContent, ifacePropContent, t);
- report += reportEntry;
- report += compatibilityAgree(t, propContent != consistent.second);
- if (!consistent.first) {
- std::ostringstream e;
- e << "The INTERFACE_" << p << " property of \""
- << theTarget->GetName() << "\" does\nnot agree with the value "
- "of "
- << p << " already determined\nfor \"" << tgt->GetName()
- << "\".\n";
- cmSystemTools::Error(e.str().c_str());
- break;
- } else {
- propContent = consistent.second;
- continue;
- }
- } else {
- report += reportEntry + "(Interface set)\n";
- propContent = ifacePropContent;
- propInitialized = true;
+ // Implicitly set on target and not set in iface. Can't disagree.
+ continue;
+ }
+ if (ifaceIsSet) {
+ if (propInitialized) {
+ std::pair<bool, PropertyType> consistent =
+ consistentProperty(propContent, ifacePropContent, t);
+ report += reportEntry;
+ report += compatibilityAgree(t, propContent != consistent.second);
+ if (!consistent.first) {
+ std::ostringstream e;
+ e << "The INTERFACE_" << p << " property of \""
+ << theTarget->GetName() << "\" does\nnot agree with the value of "
+ << p << " already determined\nfor \"" << tgt->GetName() << "\".\n";
+ cmSystemTools::Error(e.str().c_str());
+ break;
}
- } else {
- // Not set. Nothing to agree on.
+ propContent = consistent.second;
continue;
}
+ report += reportEntry + "(Interface set)\n";
+ propContent = ifacePropContent;
+ propInitialized = true;
+ } else {
+ // Not set. Nothing to agree on.
+ continue;
}
}
diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h
index 8a687e8..13b6b73 100644
--- a/Source/cmGeneratorTarget.h
+++ b/Source/cmGeneratorTarget.h
@@ -27,6 +27,8 @@ class cmTarget;
class cmGeneratorTarget
{
+ CM_DISABLE_COPY(cmGeneratorTarget)
+
public:
cmGeneratorTarget(cmTarget*, cmLocalGenerator* lg);
~cmGeneratorTarget();
@@ -512,11 +514,6 @@ public:
, MacFolder(CM_NULLPTR)
{
}
- SourceFileFlags(SourceFileFlags const& r)
- : Type(r.Type)
- , MacFolder(r.MacFolder)
- {
- }
SourceFileType Type;
const char* MacFolder; // location inside Mac content folders
};
@@ -706,9 +703,6 @@ private:
void CheckPropertyCompatibility(cmComputeLinkInformation* info,
const std::string& config) const;
- cmGeneratorTarget(cmGeneratorTarget const&);
- void operator=(cmGeneratorTarget const&);
-
struct LinkImplClosure : public std::vector<cmGeneratorTarget const*>
{
LinkImplClosure()
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h
index aa2dd22..cc7ffed 100644
--- a/Source/cmGlobalGenerator.h
+++ b/Source/cmGlobalGenerator.h
@@ -560,12 +560,6 @@ private:
: LastDiskTime(-1)
{
}
- DirectoryContent(DirectoryContent const& dc)
- : LastDiskTime(dc.LastDiskTime)
- , All(dc.All)
- , Generated(dc.Generated)
- {
- }
};
std::map<std::string, DirectoryContent> DirectoryContentMap;
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx
index e61cbd9..1a77d7c 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -966,8 +966,14 @@ void cmGlobalNinjaGenerator::WriteAssumedSourceDependencies()
}
}
+std::string OrderDependsTargetForTarget(cmGeneratorTarget const* target)
+{
+ return "cmake_object_order_depends_target_" + target->GetName();
+}
+
void cmGlobalNinjaGenerator::AppendTargetOutputs(
- cmGeneratorTarget const* target, cmNinjaDeps& outputs)
+ cmGeneratorTarget const* target, cmNinjaDeps& outputs,
+ cmNinjaTargetDepends depends)
{
std::string configName =
target->Target->GetMakefile()->GetSafeDefinition("CMAKE_BUILD_TYPE");
@@ -979,15 +985,27 @@ void cmGlobalNinjaGenerator::AppendTargetOutputs(
bool realname = target->IsFrameworkOnApple();
switch (target->GetType()) {
- case cmStateEnums::EXECUTABLE:
case cmStateEnums::SHARED_LIBRARY:
case cmStateEnums::STATIC_LIBRARY:
case cmStateEnums::MODULE_LIBRARY: {
+ if (depends == DependOnTargetOrdering) {
+ outputs.push_back(OrderDependsTargetForTarget(target));
+ break;
+ }
+ }
+ // FALLTHROUGH
+ case cmStateEnums::EXECUTABLE: {
outputs.push_back(this->ConvertToNinjaPath(target->GetFullPath(
configName, cmStateEnums::RuntimeBinaryArtifact, realname)));
break;
}
- case cmStateEnums::OBJECT_LIBRARY:
+ case cmStateEnums::OBJECT_LIBRARY: {
+ if (depends == DependOnTargetOrdering) {
+ outputs.push_back(OrderDependsTargetForTarget(target));
+ break;
+ }
+ }
+ // FALLTHROUGH
case cmStateEnums::GLOBAL_TARGET:
case cmStateEnums::UTILITY: {
std::string path =
@@ -1003,7 +1021,8 @@ void cmGlobalNinjaGenerator::AppendTargetOutputs(
}
void cmGlobalNinjaGenerator::AppendTargetDepends(
- cmGeneratorTarget const* target, cmNinjaDeps& outputs)
+ cmGeneratorTarget const* target, cmNinjaDeps& outputs,
+ cmNinjaTargetDepends depends)
{
if (target->GetType() == cmStateEnums::GLOBAL_TARGET) {
// These depend only on other CMake-provided targets, e.g. "all".
@@ -1023,7 +1042,7 @@ void cmGlobalNinjaGenerator::AppendTargetDepends(
if ((*i)->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
continue;
}
- this->AppendTargetOutputs(*i, outs);
+ this->AppendTargetOutputs(*i, outs, depends);
}
std::sort(outs.begin(), outs.end());
outputs.insert(outputs.end(), outs.begin(), outs.end());
diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h
index e06afb0..b1d6155 100644
--- a/Source/cmGlobalNinjaGenerator.h
+++ b/Source/cmGlobalNinjaGenerator.h
@@ -316,10 +316,12 @@ public:
ASD.insert(deps.begin(), deps.end());
}
- void AppendTargetOutputs(cmGeneratorTarget const* target,
- cmNinjaDeps& outputs);
- void AppendTargetDepends(cmGeneratorTarget const* target,
- cmNinjaDeps& outputs);
+ void AppendTargetOutputs(
+ cmGeneratorTarget const* target, cmNinjaDeps& outputs,
+ cmNinjaTargetDepends depends = DependOnTargetArtifact);
+ void AppendTargetDepends(
+ cmGeneratorTarget const* target, cmNinjaDeps& outputs,
+ cmNinjaTargetDepends depends = DependOnTargetArtifact);
void AppendTargetDependsClosure(cmGeneratorTarget const* target,
cmNinjaDeps& outputs);
void AddDependencyToAll(cmGeneratorTarget* target);
diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx
index 14ec72f..1b75a08 100644
--- a/Source/cmGlobalVisualStudio7Generator.cxx
+++ b/Source/cmGlobalVisualStudio7Generator.cxx
@@ -293,6 +293,19 @@ void cmGlobalVisualStudio7Generator::Generate()
if (!cmSystemTools::GetErrorOccuredFlag()) {
this->CallVisualStudioMacro(MacroReload);
}
+
+ if (this->Version == VS8 && !this->CMakeInstance->GetIsInTryCompile()) {
+ const char* cmakeWarnVS8 =
+ this->CMakeInstance->GetState()->GetCacheEntryValue("CMAKE_WARN_VS8");
+ if (!cmakeWarnVS8 || !cmSystemTools::IsOff(cmakeWarnVS8)) {
+ this->CMakeInstance->IssueMessage(
+ cmake::WARNING,
+ "The \"Visual Studio 8 2005\" generator is deprecated "
+ "and will be removed in a future version of CMake."
+ "\n"
+ "Add CMAKE_WARN_VS8=OFF to the cache to disable this warning.");
+ }
+ }
}
void cmGlobalVisualStudio7Generator::OutputSLNFile(
diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx
index 1fcb5ac..7a42b72 100644
--- a/Source/cmGlobalVisualStudio8Generator.cxx
+++ b/Source/cmGlobalVisualStudio8Generator.cxx
@@ -54,7 +54,7 @@ public:
void GetDocumentation(cmDocumentationEntry& entry) const CM_OVERRIDE
{
entry.Name = std::string(vs8generatorName) + " [arch]";
- entry.Brief = "Generates Visual Studio 2005 project files. "
+ entry.Brief = "Deprecated. Generates Visual Studio 2005 project files. "
"Optional [arch] can be \"Win64\".";
}
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index 4213751..6636329 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -133,16 +133,12 @@ public:
bool SupportsPlatform() const CM_OVERRIDE { return false; }
};
-cmGlobalXCodeGenerator::cmGlobalXCodeGenerator(cmake* cm,
- std::string const& version)
+cmGlobalXCodeGenerator::cmGlobalXCodeGenerator(
+ cmake* cm, std::string const& version_string, unsigned int version_number)
: cmGlobalGenerator(cm)
{
- this->VersionString = version;
-
- // Compute an integer form of the version number.
- unsigned int v[2] = { 0, 0 };
- sscanf(this->VersionString.c_str(), "%u.%u", &v[0], &v[1]);
- this->XcodeVersion = 10 * v[0] + v[1];
+ this->VersionString = version_string;
+ this->XcodeVersion = version_number;
this->RootObject = 0;
this->MainGroupChildren = 0;
@@ -189,13 +185,21 @@ cmGlobalGenerator* cmGlobalXCodeGenerator::Factory::CreateGlobalGenerator(
parser.ParseFile(
"/Developer/Applications/Xcode.app/Contents/version.plist");
}
- CM_AUTO_PTR<cmGlobalXCodeGenerator> gg(
- new cmGlobalXCodeGenerator(cm, parser.Version));
- if (gg->XcodeVersion == 20) {
- cmSystemTools::Message("Xcode 2.0 not really supported by cmake, "
- "using Xcode 15 generator\n");
- gg->XcodeVersion = 15;
+ std::string const& version_string = parser.Version;
+
+ // Compute an integer form of the version number.
+ unsigned int v[2] = { 0, 0 };
+ sscanf(version_string.c_str(), "%u.%u", &v[0], &v[1]);
+ unsigned int version_number = 10 * v[0] + v[1];
+
+ if (version_number < 30) {
+ cm->IssueMessage(cmake::FATAL_ERROR,
+ "Xcode " + version_string + " not supported.");
+ return CM_NULLPTR;
}
+
+ CM_AUTO_PTR<cmGlobalXCodeGenerator> gg(
+ new cmGlobalXCodeGenerator(cm, version_string, version_number));
return gg.release();
#else
std::cerr << "CMake should be built with cmake to use Xcode, "
@@ -242,29 +246,25 @@ std::string cmGlobalXCodeGenerator::FindXcodeBuildCommand()
bool cmGlobalXCodeGenerator::SetGeneratorToolset(std::string const& ts,
cmMakefile* mf)
{
- if (this->XcodeVersion >= 30) {
- if (ts.find_first_of(",=") != ts.npos) {
- std::ostringstream e;
- /* clang-format off */
- e <<
- "Generator\n"
- " " << this->GetName() << "\n"
- "does not recognize the toolset\n"
- " " << ts << "\n"
- "that was specified.";
- /* clang-format on */
- mf->IssueMessage(cmake::FATAL_ERROR, e.str());
- return false;
- }
- this->GeneratorToolset = ts;
- if (!this->GeneratorToolset.empty()) {
- mf->AddDefinition("CMAKE_XCODE_PLATFORM_TOOLSET",
- this->GeneratorToolset.c_str());
- }
- return true;
- } else {
- return cmGlobalGenerator::SetGeneratorToolset(ts, mf);
+ if (ts.find_first_of(",=") != ts.npos) {
+ std::ostringstream e;
+ /* clang-format off */
+ e <<
+ "Generator\n"
+ " " << this->GetName() << "\n"
+ "does not recognize the toolset\n"
+ " " << ts << "\n"
+ "that was specified.";
+ /* clang-format on */
+ mf->IssueMessage(cmake::FATAL_ERROR, e.str());
+ return false;
+ }
+ this->GeneratorToolset = ts;
+ if (!this->GeneratorToolset.empty()) {
+ mf->AddDefinition("CMAKE_XCODE_PLATFORM_TOOLSET",
+ this->GeneratorToolset.c_str());
}
+ return true;
}
void cmGlobalXCodeGenerator::EnableLanguage(
@@ -272,16 +272,13 @@ void cmGlobalXCodeGenerator::EnableLanguage(
{
mf->AddDefinition("XCODE", "1");
mf->AddDefinition("XCODE_VERSION", this->VersionString.c_str());
- if (this->XcodeVersion == 15) {
- } else {
- if (!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
- mf->AddCacheDefinition(
- "CMAKE_CONFIGURATION_TYPES", "Debug;Release;MinSizeRel;RelWithDebInfo",
- "Semicolon separated list of supported configuration types, "
- "only supports Debug, Release, MinSizeRel, and RelWithDebInfo, "
- "anything else will be ignored.",
- cmStateEnums::STRING);
- }
+ if (!mf->GetDefinition("CMAKE_CONFIGURATION_TYPES")) {
+ mf->AddCacheDefinition(
+ "CMAKE_CONFIGURATION_TYPES", "Debug;Release;MinSizeRel;RelWithDebInfo",
+ "Semicolon separated list of supported configuration types, "
+ "only supports Debug, Release, MinSizeRel, and RelWithDebInfo, "
+ "anything else will be ignored.",
+ cmStateEnums::STRING);
}
mf->AddDefinition("CMAKE_GENERATOR_NO_COMPILER_ENV", "1");
this->cmGlobalGenerator::EnableLanguage(lang, mf, optional);
@@ -301,9 +298,7 @@ void cmGlobalXCodeGenerator::GenerateBuildCommand(
makeCommand.push_back("-project");
std::string projectArg = projectName;
projectArg += ".xcode";
- if (this->XcodeVersion > 20) {
- projectArg += "proj";
- }
+ projectArg += "proj";
makeCommand.push_back(projectArg);
bool clean = false;
@@ -323,13 +318,8 @@ void cmGlobalXCodeGenerator::GenerateBuildCommand(
} else {
makeCommand.push_back("ALL_BUILD");
}
- if (this->XcodeVersion == 15) {
- makeCommand.push_back("-buildstyle");
- makeCommand.push_back("Development");
- } else {
- makeCommand.push_back("-configuration");
- makeCommand.push_back(!config.empty() ? config : "Debug");
- }
+ makeCommand.push_back("-configuration");
+ makeCommand.push_back(!config.empty() ? config : "Debug");
makeCommand.insert(makeCommand.end(), makeOptions.begin(),
makeOptions.end());
}
@@ -391,9 +381,7 @@ std::string cmGlobalXCodeGenerator::PostBuildMakeTarget(
std::string target = tName;
std::replace(target.begin(), target.end(), ' ', '_');
std::string out = "PostBuild." + target;
- if (this->XcodeVersion > 20) {
- out += "." + configName;
- }
+ out += "." + configName;
return out;
}
@@ -603,12 +591,7 @@ void cmGlobalXCodeGenerator::addObject(cmXCodeObject* obj)
cmXCodeObject* cmGlobalXCodeGenerator::CreateObject(
cmXCodeObject::PBXType ptype)
{
- cmXCodeObject* obj;
- if (this->XcodeVersion == 15) {
- obj = new cmXCodeObject(ptype, cmXCodeObject::OBJECT);
- } else {
- obj = new cmXCode21Object(ptype, cmXCodeObject::OBJECT);
- }
+ cmXCodeObject* obj = new cmXCode21Object(ptype, cmXCodeObject::OBJECT);
this->addObject(obj);
return obj;
}
@@ -894,9 +877,6 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath(
fileRef->AddAttribute("name", this->CreateString(name));
fileRef->AddAttribute("path", this->CreateString(path));
fileRef->AddAttribute("sourceTree", this->CreateString(sourceTree));
- if (this->XcodeVersion == 15) {
- fileRef->AddAttribute("refType", this->CreateString("4"));
- }
return fileRef;
}
@@ -1561,9 +1541,7 @@ void cmGlobalXCodeGenerator::CreateCustomRulesMakefile(
std::vector<cmCustomCommand> const& commands, const std::string& configName)
{
std::string makefileName = makefileBasename;
- if (this->XcodeVersion > 20) {
- makefileName += configName;
- }
+ makefileName += configName;
cmGeneratedFileStream makefileStream(makefileName.c_str());
if (!makefileStream) {
return;
@@ -1712,11 +1690,9 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
defFlags, this->CurrentMakefile->GetDefineFlags());
// Add preprocessor definitions for this target and configuration.
- BuildObjectListOrString ppDefs(this, this->XcodeVersion >= 30);
- if (this->XcodeVersion > 15) {
- this->AppendDefines(
- ppDefs, "CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"");
- }
+ BuildObjectListOrString ppDefs(this, true);
+ this->AppendDefines(
+ ppDefs, "CMAKE_INTDIR=\"$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)\"");
if (const char* exportMacro = gtgt->GetExportMacro()) {
// Add the export symbol definition for shared library objects.
this->AppendDefines(ppDefs, exportMacro);
@@ -1816,16 +1792,11 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
gtgt->GetType() == cmStateEnums::SHARED_LIBRARY ||
gtgt->GetType() == cmStateEnums::MODULE_LIBRARY ||
gtgt->GetType() == cmStateEnums::EXECUTABLE) {
- if (this->XcodeVersion >= 21) {
- if (!gtgt->UsesDefaultOutputDir(configName,
- cmStateEnums::RuntimeBinaryArtifact)) {
- std::string pncdir = gtgt->GetDirectory(configName);
- buildSettings->AddAttribute("CONFIGURATION_BUILD_DIR",
- this->CreateString(pncdir));
- }
- } else {
- buildSettings->AddAttribute("OBJROOT", this->CreateString(pndir));
- pndir = gtgt->GetDirectory(configName);
+ if (!gtgt->UsesDefaultOutputDir(configName,
+ cmStateEnums::RuntimeBinaryArtifact)) {
+ std::string pncdir = gtgt->GetDirectory(configName);
+ buildSettings->AddAttribute("CONFIGURATION_BUILD_DIR",
+ this->CreateString(pncdir));
}
if (gtgt->IsFrameworkOnApple() || gtgt->IsCFBundleOnApple()) {
@@ -1841,16 +1812,10 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
pnbase = gtgt->GetName();
pnsuffix = ".a";
- if (this->XcodeVersion >= 21) {
- std::string pncdir = this->GetObjectsNormalDirectory(
- this->CurrentProject, configName, gtgt);
- buildSettings->AddAttribute("CONFIGURATION_BUILD_DIR",
- this->CreateString(pncdir));
- } else {
- buildSettings->AddAttribute("OBJROOT", this->CreateString(pndir));
- pndir = this->GetObjectsNormalDirectory(this->CurrentProject, configName,
- gtgt);
- }
+ std::string pncdir =
+ this->GetObjectsNormalDirectory(this->CurrentProject, configName, gtgt);
+ buildSettings->AddAttribute("CONFIGURATION_BUILD_DIR",
+ this->CreateString(pncdir));
}
// Store the product name for all target types.
@@ -1919,7 +1884,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
gtgt, "$(EXECUTABLE_NAME)", plist.c_str());
buildSettings->AddAttribute("INFOPLIST_FILE",
this->CreateString(plist));
- } else if (this->XcodeVersion >= 22) {
+ } else {
buildSettings->AddAttribute("MACH_O_TYPE",
this->CreateString("mh_bundle"));
buildSettings->AddAttribute("GCC_DYNAMIC_NO_PIC",
@@ -1931,14 +1896,6 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
extraLinkOptions += " ";
extraLinkOptions += createFlags;
}
- } else {
- // Add the flags to create a module.
- std::string createFlags = this->LookupFlags(
- "CMAKE_SHARED_MODULE_CREATE_", llang, "_FLAGS", "-bundle");
- if (!createFlags.empty()) {
- extraLinkOptions += " ";
- extraLinkOptions += createFlags;
- }
}
break;
}
@@ -2004,14 +1961,14 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
default:
break;
}
- if (this->XcodeVersion >= 22 && this->XcodeVersion < 40) {
+ if (this->XcodeVersion < 40) {
buildSettings->AddAttribute("PREBINDING", this->CreateString("NO"));
}
- BuildObjectListOrString dirs(this, this->XcodeVersion >= 30);
- BuildObjectListOrString fdirs(this, this->XcodeVersion >= 30);
- BuildObjectListOrString sysdirs(this, this->XcodeVersion >= 30);
- BuildObjectListOrString sysfdirs(this, this->XcodeVersion >= 30);
+ BuildObjectListOrString dirs(this, true);
+ BuildObjectListOrString fdirs(this, true);
+ BuildObjectListOrString sysdirs(this, true);
+ BuildObjectListOrString sysfdirs(this, true);
const bool emitSystemIncludes = this->XcodeVersion >= 83;
std::vector<std::string> includes;
@@ -2242,18 +2199,12 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt,
buildSettings->AddAttribute("OTHER_REZFLAGS", this->CreateString(""));
buildSettings->AddAttribute("SECTORDER_FLAGS", this->CreateString(""));
buildSettings->AddAttribute("USE_HEADERMAP", this->CreateString("NO"));
- if (this->XcodeVersion >= 30) {
- cmXCodeObject* group = this->CreateObject(cmXCodeObject::OBJECT_LIST);
- group->AddObject(this->CreateString("-Wmost"));
- group->AddObject(this->CreateString("-Wno-four-char-constants"));
- group->AddObject(this->CreateString("-Wno-unknown-pragmas"));
- group->AddObject(this->CreateString("$(inherited)"));
- buildSettings->AddAttribute("WARNING_CFLAGS", group);
- } else {
- buildSettings->AddAttribute(
- "WARNING_CFLAGS", this->CreateString("-Wmost -Wno-four-char-constants"
- " -Wno-unknown-pragmas"));
- }
+ cmXCodeObject* group = this->CreateObject(cmXCodeObject::OBJECT_LIST);
+ group->AddObject(this->CreateString("-Wmost"));
+ group->AddObject(this->CreateString("-Wno-four-char-constants"));
+ group->AddObject(this->CreateString("-Wno-unknown-pragmas"));
+ group->AddObject(this->CreateString("$(inherited)"));
+ buildSettings->AddAttribute("WARNING_CFLAGS", group);
// Runtime version information.
if (gtgt->GetType() == cmStateEnums::SHARED_LIBRARY) {
@@ -2333,16 +2284,7 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateUtilityTarget(
this->CreateCustomCommands(buildPhases, 0, 0, 0, emptyContentVector, 0,
gtgt);
target->AddAttribute("buildPhases", buildPhases);
- if (this->XcodeVersion > 20) {
- this->AddConfigurations(target, gtgt);
- } else {
- std::string theConfig =
- this->CurrentMakefile->GetSafeDefinition("CMAKE_BUILD_TYPE");
- cmXCodeObject* buildSettings =
- this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
- this->CreateBuildSettings(gtgt, buildSettings, theConfig);
- target->AddAttribute("buildSettings", buildSettings);
- }
+ this->AddConfigurations(target, gtgt);
cmXCodeObject* dependencies = this->CreateObject(cmXCodeObject::OBJECT_LIST);
target->AddAttribute("dependencies", dependencies);
target->AddAttribute("name", this->CreateString(gtgt->GetName()));
@@ -2444,8 +2386,7 @@ const char* cmGlobalXCodeGenerator::GetTargetFileType(
else if (target->IsCFBundleOnApple())
return "wrapper.plug-in";
else
- return ((this->XcodeVersion >= 22) ? "compiled.mach-o.executable"
- : "compiled.mach-o.dylib");
+ return "compiled.mach-o.executable";
case cmStateEnums::SHARED_LIBRARY:
return (target->GetPropertyAsBool("FRAMEWORK")
? "wrapper.framework"
@@ -2478,9 +2419,7 @@ const char* cmGlobalXCodeGenerator::GetTargetProductType(
else if (target->IsCFBundleOnApple())
return "com.apple.product-type.bundle";
else
- return ((this->XcodeVersion >= 22)
- ? "com.apple.product-type.tool"
- : "com.apple.product-type.library.dynamic");
+ return "com.apple.product-type.tool";
case cmStateEnums::SHARED_LIBRARY:
return (target->GetPropertyAsBool("FRAMEWORK")
? "com.apple.product-type.framework"
@@ -2506,15 +2445,7 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeTarget(
cmXCodeObject* buildRules = this->CreateObject(cmXCodeObject::OBJECT_LIST);
target->AddAttribute("buildRules", buildRules);
std::string defConfig;
- if (this->XcodeVersion > 20) {
- defConfig = this->AddConfigurations(target, gtgt);
- } else {
- cmXCodeObject* buildSettings =
- this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
- defConfig = this->CurrentMakefile->GetSafeDefinition("CMAKE_BUILD_TYPE");
- this->CreateBuildSettings(gtgt, buildSettings, defConfig);
- target->AddAttribute("buildSettings", buildSettings);
- }
+ defConfig = this->AddConfigurations(target, gtgt);
cmXCodeObject* dependencies = this->CreateObject(cmXCodeObject::OBJECT_LIST);
target->AddAttribute("dependencies", dependencies);
target->AddAttribute("name", this->CreateString(gtgt->GetName()));
@@ -2533,9 +2464,6 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeTarget(
fullName = gtgt->GetFullName(defConfig);
}
fileRef->AddAttribute("path", this->CreateString(fullName));
- if (this->XcodeVersion == 15) {
- fileRef->AddAttribute("refType", this->CreateString("0"));
- }
fileRef->AddAttribute("sourceTree",
this->CreateString("BUILT_PRODUCTS_DIR"));
fileRef->SetComment(gtgt->GetName());
@@ -2636,32 +2564,25 @@ void cmGlobalXCodeGenerator::AppendBuildSettingAttribute(
cmXCodeObject* target, const char* attribute, const char* value,
const std::string& configName)
{
- if (this->XcodeVersion < 21) {
- // There is only one configuration. Add the setting to the buildSettings
- // of the target.
- this->AppendOrAddBuildSetting(target->GetObject("buildSettings"),
- attribute, value);
- } else {
- // There are multiple configurations. Add the setting to the
- // buildSettings of the configuration name given.
- cmXCodeObject* configurationList =
- target->GetObject("buildConfigurationList")->GetObject();
- cmXCodeObject* buildConfigs =
- configurationList->GetObject("buildConfigurations");
- std::vector<cmXCodeObject*> list = buildConfigs->GetObjectList();
- // each configuration and the target itself has a buildSettings in it
- // list.push_back(target);
- for (std::vector<cmXCodeObject*>::iterator i = list.begin();
- i != list.end(); ++i) {
- if (!configName.empty()) {
- if ((*i)->GetObject("name")->GetString() == configName) {
- cmXCodeObject* settings = (*i)->GetObject("buildSettings");
- this->AppendOrAddBuildSetting(settings, attribute, value);
- }
- } else {
+ // There are multiple configurations. Add the setting to the
+ // buildSettings of the configuration name given.
+ cmXCodeObject* configurationList =
+ target->GetObject("buildConfigurationList")->GetObject();
+ cmXCodeObject* buildConfigs =
+ configurationList->GetObject("buildConfigurations");
+ std::vector<cmXCodeObject*> list = buildConfigs->GetObjectList();
+ // each configuration and the target itself has a buildSettings in it
+ // list.push_back(target);
+ for (std::vector<cmXCodeObject*>::iterator i = list.begin(); i != list.end();
+ ++i) {
+ if (!configName.empty()) {
+ if ((*i)->GetObject("name")->GetString() == configName) {
cmXCodeObject* settings = (*i)->GetObject("buildSettings");
this->AppendOrAddBuildSetting(settings, attribute, value);
}
+ } else {
+ cmXCodeObject* settings = (*i)->GetObject("buildSettings");
+ this->AppendOrAddBuildSetting(settings, attribute, value);
}
}
}
@@ -2741,13 +2662,11 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
for (std::vector<std::string>::const_iterator libDir = libDirs.begin();
libDir != libDirs.end(); ++libDir) {
if (libDir->size() && *libDir != "/usr/lib") {
- if (this->XcodeVersion > 15) {
- // Now add the same one but append
- // $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) to it:
- linkDirs += " ";
- linkDirs += this->XCodeEscapePath(
- *libDir + "/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)");
- }
+ // Now add the same one but append
+ // $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) to it:
+ linkDirs += " ";
+ linkDirs += this->XCodeEscapePath(
+ *libDir + "/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)");
linkDirs += " ";
linkDirs += this->XCodeEscapePath(*libDir);
}
@@ -2849,9 +2768,6 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreatePBXGroup(cmXCodeObject* parent,
this->CreateObject(cmXCodeObject::OBJECT_LIST);
group->AddAttribute("name", this->CreateString(name));
group->AddAttribute("children", groupChildren);
- if (this->XcodeVersion == 15) {
- group->AddAttribute("refType", this->CreateString("4"));
- }
group->AddAttribute("sourceTree", this->CreateString("<group>"));
if (parentChildren)
parentChildren->AddObject(group);
@@ -2950,50 +2866,28 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
this->MainGroupChildren = 0;
cmXCodeObject* group = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
group->AddAttribute("COPY_PHASE_STRIP", this->CreateString("NO"));
- cmXCodeObject* developBuildStyle =
- this->CreateObject(cmXCodeObject::PBXBuildStyle);
cmXCodeObject* listObjs = this->CreateObject(cmXCodeObject::OBJECT_LIST);
- if (this->XcodeVersion == 15) {
- developBuildStyle->AddAttribute("name", this->CreateString("Development"));
- developBuildStyle->AddAttribute("buildSettings", group);
- listObjs->AddObject(developBuildStyle);
- group = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
- group->AddAttribute("COPY_PHASE_STRIP", this->CreateString("YES"));
- cmXCodeObject* deployBuildStyle =
+ for (unsigned int i = 0; i < this->CurrentConfigurationTypes.size(); ++i) {
+ cmXCodeObject* buildStyle =
this->CreateObject(cmXCodeObject::PBXBuildStyle);
- deployBuildStyle->AddAttribute("name", this->CreateString("Deployment"));
- deployBuildStyle->AddAttribute("buildSettings", group);
- listObjs->AddObject(deployBuildStyle);
- } else {
- for (unsigned int i = 0; i < this->CurrentConfigurationTypes.size(); ++i) {
- cmXCodeObject* buildStyle =
- this->CreateObject(cmXCodeObject::PBXBuildStyle);
- const char* name = this->CurrentConfigurationTypes[i].c_str();
- buildStyle->AddAttribute("name", this->CreateString(name));
- buildStyle->SetComment(name);
- cmXCodeObject* sgroup =
- this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
- sgroup->AddAttribute("COPY_PHASE_STRIP", this->CreateString("NO"));
- buildStyle->AddAttribute("buildSettings", sgroup);
- listObjs->AddObject(buildStyle);
- }
+ const char* name = this->CurrentConfigurationTypes[i].c_str();
+ buildStyle->AddAttribute("name", this->CreateString(name));
+ buildStyle->SetComment(name);
+ cmXCodeObject* sgroup = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
+ sgroup->AddAttribute("COPY_PHASE_STRIP", this->CreateString("NO"));
+ buildStyle->AddAttribute("buildSettings", sgroup);
+ listObjs->AddObject(buildStyle);
}
cmXCodeObject* mainGroup = this->CreateObject(cmXCodeObject::PBXGroup);
this->MainGroupChildren = this->CreateObject(cmXCodeObject::OBJECT_LIST);
mainGroup->AddAttribute("children", this->MainGroupChildren);
- if (this->XcodeVersion == 15) {
- mainGroup->AddAttribute("refType", this->CreateString("4"));
- }
mainGroup->AddAttribute("sourceTree", this->CreateString("<group>"));
cmXCodeObject* sourcesGroup = this->CreateObject(cmXCodeObject::PBXGroup);
this->SourcesGroupChildren = this->CreateObject(cmXCodeObject::OBJECT_LIST);
sourcesGroup->AddAttribute("name", this->CreateString("Sources"));
sourcesGroup->AddAttribute("children", this->SourcesGroupChildren);
- if (this->XcodeVersion == 15) {
- sourcesGroup->AddAttribute("refType", this->CreateString("4"));
- }
sourcesGroup->AddAttribute("sourceTree", this->CreateString("<group>"));
this->MainGroupChildren->AddObject(sourcesGroup);
@@ -3002,9 +2896,6 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
this->CreateObject(cmXCodeObject::OBJECT_LIST);
resourcesGroup->AddAttribute("name", this->CreateString("Resources"));
resourcesGroup->AddAttribute("children", this->ResourcesGroupChildren);
- if (this->XcodeVersion == 15) {
- resourcesGroup->AddAttribute("refType", this->CreateString("4"));
- }
resourcesGroup->AddAttribute("sourceTree", this->CreateString("<group>"));
this->MainGroupChildren->AddObject(resourcesGroup);
@@ -3015,9 +2906,6 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
cmXCodeObject* productGroup = this->CreateObject(cmXCodeObject::PBXGroup);
productGroup->AddAttribute("name", this->CreateString("Products"));
- if (this->XcodeVersion == 15) {
- productGroup->AddAttribute("refType", this->CreateString("4"));
- }
productGroup->AddAttribute("sourceTree", this->CreateString("<group>"));
cmXCodeObject* productGroupChildren =
this->CreateObject(cmXCodeObject::OBJECT_LIST);
@@ -3039,24 +2927,22 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
this->RootObject->AddAttribute("buildStyles", listObjs);
this->RootObject->AddAttribute("hasScannedForEncodings",
this->CreateString("0"));
- if (this->XcodeVersion >= 30) {
- group = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
- group->AddAttribute("BuildIndependentTargetsInParallel",
- this->CreateString("YES"));
- std::ostringstream v;
- v << std::setfill('0') << std::setw(4) << XcodeVersion * 10;
- group->AddAttribute("LastUpgradeCheck", this->CreateString(v.str()));
- this->RootObject->AddAttribute("attributes", group);
- if (this->XcodeVersion >= 32)
- this->RootObject->AddAttribute("compatibilityVersion",
- this->CreateString("Xcode 3.2"));
- else if (this->XcodeVersion >= 31)
- this->RootObject->AddAttribute("compatibilityVersion",
- this->CreateString("Xcode 3.1"));
- else
- this->RootObject->AddAttribute("compatibilityVersion",
- this->CreateString("Xcode 3.0"));
- }
+ group = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP);
+ group->AddAttribute("BuildIndependentTargetsInParallel",
+ this->CreateString("YES"));
+ std::ostringstream v;
+ v << std::setfill('0') << std::setw(4) << XcodeVersion * 10;
+ group->AddAttribute("LastUpgradeCheck", this->CreateString(v.str()));
+ this->RootObject->AddAttribute("attributes", group);
+ if (this->XcodeVersion >= 32)
+ this->RootObject->AddAttribute("compatibilityVersion",
+ this->CreateString("Xcode 3.2"));
+ else if (this->XcodeVersion >= 31)
+ this->RootObject->AddAttribute("compatibilityVersion",
+ this->CreateString("Xcode 3.1"));
+ else
+ this->RootObject->AddAttribute("compatibilityVersion",
+ this->CreateString("Xcode 3.0"));
// Point Xcode at the top of the source tree.
{
std::string pdir =
@@ -3071,26 +2957,15 @@ bool cmGlobalXCodeGenerator::CreateXCodeObjects(
typedef std::vector<std::pair<std::string, cmXCodeObject*> > Configs;
Configs configs;
const char* defaultConfigName = "Debug";
- if (this->XcodeVersion == 15) {
- cmXCodeObject* configDebug =
- this->CreateObject(cmXCodeObject::XCBuildConfiguration);
- configDebug->AddAttribute("name", this->CreateString("Debug"));
- configs.push_back(std::make_pair("Debug", configDebug));
- cmXCodeObject* configRelease =
- this->CreateObject(cmXCodeObject::XCBuildConfiguration);
- configRelease->AddAttribute("name", this->CreateString("Release"));
- configs.push_back(std::make_pair("Release", configRelease));
- } else {
- for (unsigned int i = 0; i < this->CurrentConfigurationTypes.size(); ++i) {
- const char* name = this->CurrentConfigurationTypes[i].c_str();
- if (0 == i) {
- defaultConfigName = name;
- }
- cmXCodeObject* config =
- this->CreateObject(cmXCodeObject::XCBuildConfiguration);
- config->AddAttribute("name", this->CreateString(name));
- configs.push_back(std::make_pair(name, config));
+ for (unsigned int i = 0; i < this->CurrentConfigurationTypes.size(); ++i) {
+ const char* name = this->CurrentConfigurationTypes[i].c_str();
+ if (0 == i) {
+ defaultConfigName = name;
}
+ cmXCodeObject* config =
+ this->CreateObject(cmXCodeObject::XCBuildConfiguration);
+ config->AddAttribute("name", this->CreateString(name));
+ configs.push_back(std::make_pair(name, config));
}
for (Configs::iterator c = configs.begin(); c != configs.end(); ++c) {
buildConfigurations->AddObject(c->second);
@@ -3247,22 +3122,12 @@ void cmGlobalXCodeGenerator::ComputeArchitectures(cmMakefile* mf)
void cmGlobalXCodeGenerator::ComputeObjectDirArch()
{
- if (this->XcodeVersion >= 21) {
- if (this->Architectures.size() > 1) {
- this->ObjectDirArch = "$(CURRENT_ARCH)";
- } else if (!this->Architectures.empty()) {
- this->ObjectDirArch = this->Architectures[0];
- } else {
- this->ObjectDirArch = this->ObjectDirArchDefault;
- }
+ if (this->Architectures.size() > 1) {
+ this->ObjectDirArch = "$(CURRENT_ARCH)";
+ } else if (!this->Architectures.empty()) {
+ this->ObjectDirArch = this->Architectures[0];
} else {
-#if defined(__ppc__)
- this->ObjectDirArch = "ppc";
-#elif defined(__i386)
- this->ObjectDirArch = "i386";
-#else
- this->ObjectDirArch = "";
-#endif
+ this->ObjectDirArch = this->ObjectDirArchDefault;
}
}
@@ -3432,10 +3297,7 @@ void cmGlobalXCodeGenerator::OutputXCodeProject(
std::string xcodeDir = root->GetCurrentBinaryDirectory();
xcodeDir += "/";
xcodeDir += root->GetProjectName();
- xcodeDir += ".xcode";
- if (this->XcodeVersion > 20) {
- xcodeDir += "proj";
- }
+ xcodeDir += ".xcodeproj";
cmSystemTools::MakeDirectory(xcodeDir.c_str());
std::string xcodeProjFile = xcodeDir + "/project.pbxproj";
cmGeneratedFileStream fout(xcodeProjFile.c_str());
@@ -3524,20 +3386,13 @@ void cmGlobalXCodeGenerator::WriteXCodePBXProj(std::ostream& fout,
cmXCodeObject::Indent(1, fout);
fout << "};\n";
cmXCodeObject::Indent(1, fout);
- if (this->XcodeVersion >= 21) {
- if (this->XcodeVersion >= 32)
- fout << "objectVersion = 46;\n";
- else if (this->XcodeVersion >= 31)
- fout << "objectVersion = 45;\n";
- else if (this->XcodeVersion >= 30)
- fout << "objectVersion = 44;\n";
- else
- fout << "objectVersion = 42;\n";
- cmXCode21Object::PrintList(this->XCodeObjects, fout);
- } else {
- fout << "objectVersion = 39;\n";
- cmXCodeObject::PrintList(this->XCodeObjects, fout);
- }
+ if (this->XcodeVersion >= 32)
+ fout << "objectVersion = 46;\n";
+ else if (this->XcodeVersion >= 31)
+ fout << "objectVersion = 45;\n";
+ else
+ fout << "objectVersion = 44;\n";
+ cmXCode21Object::PrintList(this->XCodeObjects, fout);
cmXCodeObject::Indent(1, fout);
fout << "rootObject = " << this->RootObject->GetId()
<< " /* Project object */;\n";
@@ -3546,9 +3401,7 @@ void cmGlobalXCodeGenerator::WriteXCodePBXProj(std::ostream& fout,
const char* cmGlobalXCodeGenerator::GetCMakeCFGIntDir() const
{
- return this->XcodeVersion >= 21
- ? "$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)"
- : ".";
+ return "$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
}
std::string cmGlobalXCodeGenerator::ExpandCFGIntDir(
@@ -3611,12 +3464,10 @@ void cmGlobalXCodeGenerator::AppendDirectoryForConfig(
const std::string& prefix, const std::string& config,
const std::string& suffix, std::string& dir)
{
- if (this->XcodeVersion > 20) {
- if (!config.empty()) {
- dir += prefix;
- dir += config;
- dir += suffix;
- }
+ if (!config.empty()) {
+ dir += prefix;
+ dir += config;
+ dir += suffix;
}
}
@@ -3741,11 +3592,6 @@ std::string cmGlobalXCodeGenerator::ComputeInfoPListLocation(
// i.e. "Can I build Debug and Release in the same tree?"
bool cmGlobalXCodeGenerator::IsMultiConfig() const
{
- // Old Xcode 1.5 is single config:
- if (this->XcodeVersion == 15) {
- return false;
- }
-
// Newer Xcode versions are multi config:
return true;
}
diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h
index a733d5c..ee06074 100644
--- a/Source/cmGlobalXCodeGenerator.h
+++ b/Source/cmGlobalXCodeGenerator.h
@@ -32,7 +32,8 @@ struct cmDocumentationEntry;
class cmGlobalXCodeGenerator : public cmGlobalGenerator
{
public:
- cmGlobalXCodeGenerator(cmake* cm, std::string const& version);
+ cmGlobalXCodeGenerator(cmake* cm, std::string const& version_string,
+ unsigned int version_number);
static cmGlobalGeneratorFactory* NewFactory();
///! Get the name for the generator.
diff --git a/Source/cmGraphAdjacencyList.h b/Source/cmGraphAdjacencyList.h
index 527db16..46cf878 100644
--- a/Source/cmGraphAdjacencyList.h
+++ b/Source/cmGraphAdjacencyList.h
@@ -15,26 +15,11 @@
class cmGraphEdge
{
public:
- cmGraphEdge()
- : Dest(0)
- , Strong(true)
- {
- }
- cmGraphEdge(int n)
- : Dest(n)
- , Strong(true)
- {
- }
- cmGraphEdge(int n, bool s)
+ cmGraphEdge(int n = 0, bool s = true)
: Dest(n)
, Strong(s)
{
}
- cmGraphEdge(cmGraphEdge const& r)
- : Dest(r.Dest)
- , Strong(r.Strong)
- {
- }
operator int() const { return this->Dest; }
bool IsStrong() const { return this->Strong; }
diff --git a/Source/cmInstallDirectoryGenerator.cxx b/Source/cmInstallDirectoryGenerator.cxx
index dfb3aeb..54ad85c 100644
--- a/Source/cmInstallDirectoryGenerator.cxx
+++ b/Source/cmInstallDirectoryGenerator.cxx
@@ -48,7 +48,7 @@ void cmInstallDirectoryGenerator::Compute(cmLocalGenerator* lg)
}
void cmInstallDirectoryGenerator::GenerateScriptActions(std::ostream& os,
- Indent const& indent)
+ Indent indent)
{
if (this->ActionsPerConfig) {
this->cmInstallGenerator::GenerateScriptActions(os, indent);
@@ -58,7 +58,7 @@ void cmInstallDirectoryGenerator::GenerateScriptActions(std::ostream& os,
}
void cmInstallDirectoryGenerator::GenerateScriptForConfig(
- std::ostream& os, const std::string& config, Indent const& indent)
+ std::ostream& os, const std::string& config, Indent indent)
{
std::vector<std::string> dirs;
cmGeneratorExpression ge;
@@ -82,7 +82,7 @@ void cmInstallDirectoryGenerator::GenerateScriptForConfig(
}
void cmInstallDirectoryGenerator::AddDirectoryInstallRule(
- std::ostream& os, const std::string& config, Indent const& indent,
+ std::ostream& os, const std::string& config, Indent indent,
std::vector<std::string> const& dirs)
{
// Write code to install the directories.
diff --git a/Source/cmInstallDirectoryGenerator.h b/Source/cmInstallDirectoryGenerator.h
index 029ce46..aa2cbc6 100644
--- a/Source/cmInstallDirectoryGenerator.h
+++ b/Source/cmInstallDirectoryGenerator.h
@@ -34,12 +34,11 @@ public:
std::string GetDestination(std::string const& config) const;
protected:
- void GenerateScriptActions(std::ostream& os,
- Indent const& indent) CM_OVERRIDE;
+ void GenerateScriptActions(std::ostream& os, Indent indent) CM_OVERRIDE;
void GenerateScriptForConfig(std::ostream& os, const std::string& config,
- Indent const& indent) CM_OVERRIDE;
+ Indent indent) CM_OVERRIDE;
void AddDirectoryInstallRule(std::ostream& os, const std::string& config,
- Indent const& indent,
+ Indent indent,
std::vector<std::string> const& dirs);
cmLocalGenerator* LocalGenerator;
std::vector<std::string> Directories;
diff --git a/Source/cmInstallExportGenerator.cxx b/Source/cmInstallExportGenerator.cxx
index 39fab4f..b176e85 100644
--- a/Source/cmInstallExportGenerator.cxx
+++ b/Source/cmInstallExportGenerator.cxx
@@ -166,7 +166,7 @@ void cmInstallExportGenerator::GenerateScript(std::ostream& os)
}
void cmInstallExportGenerator::GenerateScriptConfigs(std::ostream& os,
- Indent const& indent)
+ Indent indent)
{
// Create the main install rules first.
this->cmInstallGenerator::GenerateScriptConfigs(os, indent);
@@ -189,7 +189,7 @@ void cmInstallExportGenerator::GenerateScriptConfigs(std::ostream& os,
}
void cmInstallExportGenerator::GenerateScriptActions(std::ostream& os,
- Indent const& indent)
+ Indent indent)
{
// Remove old per-configuration export files if the main changes.
std::string installedDir = "$ENV{DESTDIR}";
diff --git a/Source/cmInstallExportGenerator.h b/Source/cmInstallExportGenerator.h
index 3a46a72..047e6b3 100644
--- a/Source/cmInstallExportGenerator.h
+++ b/Source/cmInstallExportGenerator.h
@@ -44,10 +44,8 @@ public:
protected:
void GenerateScript(std::ostream& os) CM_OVERRIDE;
- void GenerateScriptConfigs(std::ostream& os,
- Indent const& indent) CM_OVERRIDE;
- void GenerateScriptActions(std::ostream& os,
- Indent const& indent) CM_OVERRIDE;
+ void GenerateScriptConfigs(std::ostream& os, Indent indent) CM_OVERRIDE;
+ void GenerateScriptActions(std::ostream& os, Indent indent) CM_OVERRIDE;
void GenerateImportFile(cmExportSet const* exportSet);
void GenerateImportFile(const char* config, cmExportSet const* exportSet);
void ComputeTempDir();
diff --git a/Source/cmInstallFilesGenerator.cxx b/Source/cmInstallFilesGenerator.cxx
index 7daea38..6323a91 100644
--- a/Source/cmInstallFilesGenerator.cxx
+++ b/Source/cmInstallFilesGenerator.cxx
@@ -54,7 +54,7 @@ std::string cmInstallFilesGenerator::GetDestination(
}
void cmInstallFilesGenerator::AddFilesInstallRule(
- std::ostream& os, std::string const& config, Indent const& indent,
+ std::ostream& os, std::string const& config, Indent indent,
std::vector<std::string> const& files)
{
// Write code to install the files.
@@ -67,7 +67,7 @@ void cmInstallFilesGenerator::AddFilesInstallRule(
}
void cmInstallFilesGenerator::GenerateScriptActions(std::ostream& os,
- Indent const& indent)
+ Indent indent)
{
if (this->ActionsPerConfig) {
this->cmInstallGenerator::GenerateScriptActions(os, indent);
@@ -77,7 +77,7 @@ void cmInstallFilesGenerator::GenerateScriptActions(std::ostream& os,
}
void cmInstallFilesGenerator::GenerateScriptForConfig(
- std::ostream& os, const std::string& config, Indent const& indent)
+ std::ostream& os, const std::string& config, Indent indent)
{
std::vector<std::string> files;
cmGeneratorExpression ge;
diff --git a/Source/cmInstallFilesGenerator.h b/Source/cmInstallFilesGenerator.h
index 578763b..62b57f9 100644
--- a/Source/cmInstallFilesGenerator.h
+++ b/Source/cmInstallFilesGenerator.h
@@ -34,12 +34,11 @@ public:
std::string GetDestination(std::string const& config) const;
protected:
- void GenerateScriptActions(std::ostream& os,
- Indent const& indent) CM_OVERRIDE;
+ void GenerateScriptActions(std::ostream& os, Indent indent) CM_OVERRIDE;
void GenerateScriptForConfig(std::ostream& os, const std::string& config,
- Indent const& indent) CM_OVERRIDE;
+ Indent indent) CM_OVERRIDE;
void AddFilesInstallRule(std::ostream& os, std::string const& config,
- Indent const& indent,
+ Indent indent,
std::vector<std::string> const& files);
cmLocalGenerator* LocalGenerator;
diff --git a/Source/cmInstallGenerator.h b/Source/cmInstallGenerator.h
index bb1dd54..de19f98 100644
--- a/Source/cmInstallGenerator.h
+++ b/Source/cmInstallGenerator.h
@@ -21,6 +21,8 @@ class cmMakefile;
*/
class cmInstallGenerator : public cmScriptGenerator
{
+ CM_DISABLE_COPY(cmInstallGenerator)
+
public:
enum MessageLevel
{
diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx
index 1827ed3..84d6f7a 100644
--- a/Source/cmInstallTargetGenerator.cxx
+++ b/Source/cmInstallTargetGenerator.cxx
@@ -58,7 +58,7 @@ void cmInstallTargetGenerator::GenerateScript(std::ostream& os)
}
void cmInstallTargetGenerator::GenerateScriptForConfig(
- std::ostream& os, const std::string& config, Indent const& indent)
+ std::ostream& os, const std::string& config, Indent indent)
{
cmStateEnums::TargetType targetType = this->Target->GetType();
cmInstallType type = cmInstallType();
@@ -339,7 +339,7 @@ static std::string computeInstallObjectDir(cmGeneratorTarget* gt,
}
void cmInstallTargetGenerator::GenerateScriptForConfigObjectLibrary(
- std::ostream& os, const std::string& config, Indent const& indent)
+ std::ostream& os, const std::string& config, Indent indent)
{
// Compute all the object files inside this target
std::vector<std::string> objects;
@@ -444,7 +444,7 @@ void cmInstallTargetGenerator::Compute(cmLocalGenerator* lg)
this->Target = lg->FindLocalNonAliasGeneratorTarget(this->TargetName);
}
-void cmInstallTargetGenerator::AddTweak(std::ostream& os, Indent const& indent,
+void cmInstallTargetGenerator::AddTweak(std::ostream& os, Indent indent,
const std::string& config,
std::string const& file,
TweakMethod tweak)
@@ -460,7 +460,7 @@ void cmInstallTargetGenerator::AddTweak(std::ostream& os, Indent const& indent,
}
}
-void cmInstallTargetGenerator::AddTweak(std::ostream& os, Indent const& indent,
+void cmInstallTargetGenerator::AddTweak(std::ostream& os, Indent indent,
const std::string& config,
std::vector<std::string> const& files,
TweakMethod tweak)
@@ -500,7 +500,7 @@ std::string cmInstallTargetGenerator::GetDestDirPath(std::string const& file)
}
void cmInstallTargetGenerator::PreReplacementTweaks(std::ostream& os,
- Indent const& indent,
+ Indent indent,
const std::string& config,
std::string const& file)
{
@@ -508,7 +508,7 @@ void cmInstallTargetGenerator::PreReplacementTweaks(std::ostream& os,
}
void cmInstallTargetGenerator::PostReplacementTweaks(std::ostream& os,
- Indent const& indent,
+ Indent indent,
const std::string& config,
std::string const& file)
{
@@ -520,7 +520,7 @@ void cmInstallTargetGenerator::PostReplacementTweaks(std::ostream& os,
}
void cmInstallTargetGenerator::AddInstallNamePatchRule(
- std::ostream& os, Indent const& indent, const std::string& config,
+ std::ostream& os, Indent indent, const std::string& config,
std::string const& toDestDirPath)
{
if (this->ImportLibrary ||
@@ -621,7 +621,7 @@ void cmInstallTargetGenerator::AddInstallNamePatchRule(
}
void cmInstallTargetGenerator::AddRPathCheckRule(
- std::ostream& os, Indent const& indent, const std::string& config,
+ std::ostream& os, Indent indent, const std::string& config,
std::string const& toDestDirPath)
{
// Skip the chrpath if the target does not need it.
@@ -655,7 +655,7 @@ void cmInstallTargetGenerator::AddRPathCheckRule(
}
void cmInstallTargetGenerator::AddChrpathPatchRule(
- std::ostream& os, Indent const& indent, const std::string& config,
+ std::ostream& os, Indent indent, const std::string& config,
std::string const& toDestDirPath)
{
// Skip the chrpath if the target does not need it.
@@ -750,8 +750,7 @@ void cmInstallTargetGenerator::AddChrpathPatchRule(
}
}
-void cmInstallTargetGenerator::AddStripRule(std::ostream& os,
- Indent const& indent,
+void cmInstallTargetGenerator::AddStripRule(std::ostream& os, Indent indent,
const std::string& toDestDirPath)
{
@@ -779,8 +778,7 @@ void cmInstallTargetGenerator::AddStripRule(std::ostream& os,
os << indent << "endif()\n";
}
-void cmInstallTargetGenerator::AddRanlibRule(std::ostream& os,
- Indent const& indent,
+void cmInstallTargetGenerator::AddRanlibRule(std::ostream& os, Indent indent,
const std::string& toDestDirPath)
{
// Static libraries need ranlib on this platform.
@@ -805,7 +803,7 @@ void cmInstallTargetGenerator::AddRanlibRule(std::ostream& os,
}
void cmInstallTargetGenerator::AddUniversalInstallRule(
- std::ostream& os, Indent const& indent, const std::string& toDestDirPath)
+ std::ostream& os, Indent indent, const std::string& toDestDirPath)
{
cmMakefile const* mf = this->Target->Target->GetMakefile();
diff --git a/Source/cmInstallTargetGenerator.h b/Source/cmInstallTargetGenerator.h
index 6aaa3ba..cf2de58 100644
--- a/Source/cmInstallTargetGenerator.h
+++ b/Source/cmInstallTargetGenerator.h
@@ -67,42 +67,39 @@ public:
protected:
void GenerateScript(std::ostream& os) CM_OVERRIDE;
void GenerateScriptForConfig(std::ostream& os, const std::string& config,
- Indent const& indent) CM_OVERRIDE;
+ Indent indent) CM_OVERRIDE;
void GenerateScriptForConfigObjectLibrary(std::ostream& os,
const std::string& config,
- Indent const& indent);
- typedef void (cmInstallTargetGenerator::*TweakMethod)(std::ostream&,
- Indent const&,
+ Indent indent);
+ typedef void (cmInstallTargetGenerator::*TweakMethod)(std::ostream&, Indent,
const std::string&,
std::string const&);
- void AddTweak(std::ostream& os, Indent const& indent,
- const std::string& config, std::string const& file,
- TweakMethod tweak);
- void AddTweak(std::ostream& os, Indent const& indent,
- const std::string& config,
+ void AddTweak(std::ostream& os, Indent indent, const std::string& config,
+ std::string const& file, TweakMethod tweak);
+ void AddTweak(std::ostream& os, Indent indent, const std::string& config,
std::vector<std::string> const& files, TweakMethod tweak);
std::string GetDestDirPath(std::string const& file);
- void PreReplacementTweaks(std::ostream& os, Indent const& indent,
+ void PreReplacementTweaks(std::ostream& os, Indent indent,
const std::string& config,
std::string const& file);
- void PostReplacementTweaks(std::ostream& os, Indent const& indent,
+ void PostReplacementTweaks(std::ostream& os, Indent indent,
const std::string& config,
std::string const& file);
- void AddInstallNamePatchRule(std::ostream& os, Indent const& indent,
+ void AddInstallNamePatchRule(std::ostream& os, Indent indent,
const std::string& config,
const std::string& toDestDirPath);
- void AddChrpathPatchRule(std::ostream& os, Indent const& indent,
+ void AddChrpathPatchRule(std::ostream& os, Indent indent,
const std::string& config,
std::string const& toDestDirPath);
- void AddRPathCheckRule(std::ostream& os, Indent const& indent,
+ void AddRPathCheckRule(std::ostream& os, Indent indent,
const std::string& config,
std::string const& toDestDirPath);
- void AddStripRule(std::ostream& os, Indent const& indent,
+ void AddStripRule(std::ostream& os, Indent indent,
const std::string& toDestDirPath);
- void AddRanlibRule(std::ostream& os, Indent const& indent,
+ void AddRanlibRule(std::ostream& os, Indent indent,
const std::string& toDestDirPath);
- void AddUniversalInstallRule(std::ostream& os, Indent const& indent,
+ void AddUniversalInstallRule(std::ostream& os, Indent indent,
const std::string& toDestDirPath);
std::string TargetName;
diff --git a/Source/cmLinkItem.h b/Source/cmLinkItem.h
index ae300e6..f0fded2 100644
--- a/Source/cmLinkItem.h
+++ b/Source/cmLinkItem.h
@@ -32,11 +32,6 @@ public:
, Target(t)
{
}
- cmLinkItem(cmLinkItem const& r)
- : std_string(r)
- , Target(r.Target)
- {
- }
cmGeneratorTarget const* Target;
};
@@ -56,12 +51,6 @@ public:
, FromGenex(fromGenex)
{
}
- cmLinkImplItem(cmLinkImplItem const& r)
- : cmLinkItem(r)
- , Backtrace(r.Backtrace)
- , FromGenex(r.FromGenex)
- {
- }
cmListFileBacktrace Backtrace;
bool FromGenex;
};
diff --git a/Source/cmLinkLineComputer.h b/Source/cmLinkLineComputer.h
index bf65347..27b8adb 100644
--- a/Source/cmLinkLineComputer.h
+++ b/Source/cmLinkLineComputer.h
@@ -4,7 +4,7 @@
#ifndef cmLinkLineComputer_h
#define cmLinkLineComputer_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include <string>
@@ -16,6 +16,8 @@ class cmOutputConverter;
class cmLinkLineComputer
{
+ CM_DISABLE_COPY(cmLinkLineComputer)
+
public:
cmLinkLineComputer(cmOutputConverter* outputConverter,
cmStateDirectory stateDir);
diff --git a/Source/cmLinkLineDeviceComputer.h b/Source/cmLinkLineDeviceComputer.h
index a827b06..e9e98ac 100644
--- a/Source/cmLinkLineDeviceComputer.h
+++ b/Source/cmLinkLineDeviceComputer.h
@@ -18,6 +18,8 @@ class cmStateDirectory;
class cmLinkLineDeviceComputer : public cmLinkLineComputer
{
+ CM_DISABLE_COPY(cmLinkLineDeviceComputer)
+
public:
cmLinkLineDeviceComputer(cmOutputConverter* outputConverter,
cmStateDirectory stateDir);
@@ -33,6 +35,8 @@ public:
class cmNinjaLinkLineDeviceComputer : public cmLinkLineDeviceComputer
{
+ CM_DISABLE_COPY(cmNinjaLinkLineDeviceComputer)
+
public:
cmNinjaLinkLineDeviceComputer(cmOutputConverter* outputConverter,
cmStateDirectory stateDir,
diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx
index 16297f3..929b1cd 100644
--- a/Source/cmListFileCache.cxx
+++ b/Source/cmListFileCache.cxx
@@ -16,7 +16,7 @@
struct cmListFileParser
{
- cmListFileParser(cmListFile* lf, cmListFileBacktrace lfbt,
+ cmListFileParser(cmListFile* lf, cmListFileBacktrace const& lfbt,
cmMessenger* messenger, const char* filename);
~cmListFileParser();
void IssueFileOpenError(std::string const& text) const;
@@ -39,7 +39,8 @@ struct cmListFileParser
} Separation;
};
-cmListFileParser::cmListFileParser(cmListFile* lf, cmListFileBacktrace lfbt,
+cmListFileParser::cmListFileParser(cmListFile* lf,
+ cmListFileBacktrace const& lfbt,
cmMessenger* messenger,
const char* filename)
: ListFile(lf)
diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h
index bda4ea3..aa11ba7 100644
--- a/Source/cmListFileCache.h
+++ b/Source/cmListFileCache.h
@@ -45,12 +45,6 @@ struct cmListFileArgument
, Line(0)
{
}
- cmListFileArgument(const cmListFileArgument& r)
- : Value(r.Value)
- , Delim(r.Delim)
- , Line(r.Line)
- {
- }
cmListFileArgument(const std::string& v, Delimiter d, long line)
: Value(v)
, Delim(d)
diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx
index 00f5e4b..e0e3e54 100644
--- a/Source/cmLocalNinjaGenerator.cxx
+++ b/Source/cmLocalNinjaGenerator.cxx
@@ -281,9 +281,11 @@ void cmLocalNinjaGenerator::AppendTargetOutputs(cmGeneratorTarget* target,
}
void cmLocalNinjaGenerator::AppendTargetDepends(cmGeneratorTarget* target,
- cmNinjaDeps& outputs)
+ cmNinjaDeps& outputs,
+ cmNinjaTargetDepends depends)
{
- this->GetGlobalNinjaGenerator()->AppendTargetDepends(target, outputs);
+ this->GetGlobalNinjaGenerator()->AppendTargetDepends(target, outputs,
+ depends);
}
void cmLocalNinjaGenerator::AppendCustomCommandDeps(
diff --git a/Source/cmLocalNinjaGenerator.h b/Source/cmLocalNinjaGenerator.h
index fda4578..a45e018 100644
--- a/Source/cmLocalNinjaGenerator.h
+++ b/Source/cmLocalNinjaGenerator.h
@@ -63,7 +63,9 @@ public:
std::string BuildCommandLine(const std::vector<std::string>& cmdLines);
void AppendTargetOutputs(cmGeneratorTarget* target, cmNinjaDeps& outputs);
- void AppendTargetDepends(cmGeneratorTarget* target, cmNinjaDeps& outputs);
+ void AppendTargetDepends(
+ cmGeneratorTarget* target, cmNinjaDeps& outputs,
+ cmNinjaTargetDepends depends = DependOnTargetArtifact);
void AddCustomCommandTarget(cmCustomCommand const* cc,
cmGeneratorTarget* target);
diff --git a/Source/cmLocale.h b/Source/cmLocale.h
index b98009f..9f90a3a 100644
--- a/Source/cmLocale.h
+++ b/Source/cmLocale.h
@@ -10,7 +10,7 @@
class cmLocaleRAII
{
- std::string OldLocale;
+ CM_DISABLE_COPY(cmLocaleRAII)
public:
cmLocaleRAII()
@@ -19,6 +19,9 @@ public:
setlocale(LC_CTYPE, "");
}
~cmLocaleRAII() { setlocale(LC_CTYPE, this->OldLocale.c_str()); }
+
+private:
+ std::string OldLocale;
};
#endif
diff --git a/Source/cmMSVC60LinkLineComputer.h b/Source/cmMSVC60LinkLineComputer.h
index 612658c..e494060 100644
--- a/Source/cmMSVC60LinkLineComputer.h
+++ b/Source/cmMSVC60LinkLineComputer.h
@@ -15,6 +15,8 @@ class cmStateDirectory;
class cmMSVC60LinkLineComputer : public cmLinkLineComputer
{
+ CM_DISABLE_COPY(cmMSVC60LinkLineComputer)
+
public:
cmMSVC60LinkLineComputer(cmOutputConverter* outputConverter,
cmStateDirectory stateDir);
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index 7543a89..52a6498 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -54,6 +54,8 @@ class cmVariableWatch;
*/
class cmMakefile
{
+ CM_DISABLE_COPY(cmMakefile)
+
public:
/* Mark a variable as used */
void MarkVariableAsUsed(const std::string& var);
@@ -709,6 +711,7 @@ public:
/** Helper class to push and pop scopes automatically. */
class ScopePushPop
{
+ CM_DISABLE_COPY(ScopePushPop)
public:
ScopePushPop(cmMakefile* m)
: Makefile(m)
@@ -829,9 +832,6 @@ protected:
cmExecutionStatus& status);
private:
- cmMakefile(const cmMakefile& mf);
- cmMakefile& operator=(const cmMakefile& mf);
-
cmStateSnapshot StateSnapshot;
cmListFileBacktrace Backtrace;
diff --git a/Source/cmNinjaLinkLineComputer.h b/Source/cmNinjaLinkLineComputer.h
index db6d4a8..e612e88 100644
--- a/Source/cmNinjaLinkLineComputer.h
+++ b/Source/cmNinjaLinkLineComputer.h
@@ -16,6 +16,8 @@ class cmStateDirectory;
class cmNinjaLinkLineComputer : public cmLinkLineComputer
{
+ CM_DISABLE_COPY(cmNinjaLinkLineComputer)
+
public:
cmNinjaLinkLineComputer(cmOutputConverter* outputConverter,
cmStateDirectory stateDir,
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx
index 7c417a4..e0b2217 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -117,7 +117,7 @@ bool cmNinjaTargetGenerator::NeedDyndep(std::string const& lang) const
std::string cmNinjaTargetGenerator::OrderDependsTargetForTarget()
{
- return "cmake_order_depends_target_" + this->GetTargetName();
+ return "cmake_object_order_depends_target_" + this->GetTargetName();
}
// TODO: Most of the code is picked up from
@@ -718,8 +718,8 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements()
}
cmNinjaDeps orderOnlyDeps;
- this->GetLocalGenerator()->AppendTargetDepends(this->GeneratorTarget,
- orderOnlyDeps);
+ this->GetLocalGenerator()->AppendTargetDepends(
+ this->GeneratorTarget, orderOnlyDeps, DependOnTargetOrdering);
// Add order-only dependencies on other files associated with the target.
orderOnlyDeps.insert(orderOnlyDeps.end(), this->ExtraFiles.begin(),
@@ -740,7 +740,11 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements()
std::back_inserter(orderOnlyDeps), MapToNinjaPath());
}
- if (!orderOnlyDeps.empty()) {
+ std::sort(orderOnlyDeps.begin(), orderOnlyDeps.end());
+ orderOnlyDeps.erase(std::unique(orderOnlyDeps.begin(), orderOnlyDeps.end()),
+ orderOnlyDeps.end());
+
+ {
cmNinjaDeps orderOnlyTarget;
orderOnlyTarget.push_back(this->OrderDependsTargetForTarget());
this->GetGlobalGenerator()->WritePhonyBuild(
@@ -753,7 +757,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements()
for (std::vector<cmSourceFile const*>::const_iterator si =
objectSources.begin();
si != objectSources.end(); ++si) {
- this->WriteObjectBuildStatement(*si, !orderOnlyDeps.empty());
+ this->WriteObjectBuildStatement(*si);
}
if (!this->DDIFiles.empty()) {
@@ -770,6 +774,17 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements()
ddOutputs.push_back(this->GetDyndepFilePath("Fortran"));
+ // Make sure dyndep files for all our dependencies have already
+ // been generated so that the 'FortranModules.json' files they
+ // produced as side-effects are available for us to read.
+ // Ideally we should depend on the 'FortranModules.json' files
+ // from our dependencies directly, but we don't know which of
+ // our dependencies produces them. Fixing this will require
+ // refactoring the Ninja generator to generate targets in
+ // dependency order so that we can collect the needed information.
+ this->GetLocalGenerator()->AppendTargetDepends(
+ this->GeneratorTarget, ddOrderOnlyDeps, DependOnTargetArtifact);
+
this->GetGlobalGenerator()->WriteBuild(
this->GetBuildFileStream(), ddComment, ddRule, ddOutputs, ddImplicitOuts,
ddExplicitDeps, ddImplicitDeps, ddOrderOnlyDeps, ddVars);
@@ -779,7 +794,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements()
}
void cmNinjaTargetGenerator::WriteObjectBuildStatement(
- cmSourceFile const* source, bool writeOrderDependsTargetForTarget)
+ cmSourceFile const* source)
{
std::string const language = source->GetLanguage();
std::string const sourceFileName =
@@ -830,9 +845,7 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
}
cmNinjaDeps orderOnlyDeps;
- if (writeOrderDependsTargetForTarget) {
- orderOnlyDeps.push_back(this->OrderDependsTargetForTarget());
- }
+ orderOnlyDeps.push_back(this->OrderDependsTargetForTarget());
// If the source file is GENERATED and does not have a custom command
// (either attached to this source file or another one), assume that one of
diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h
index 9ce8651..5eb7a9a 100644
--- a/Source/cmNinjaTargetGenerator.h
+++ b/Source/cmNinjaTargetGenerator.h
@@ -119,8 +119,7 @@ protected:
void WriteLanguageRules(const std::string& language);
void WriteCompileRule(const std::string& language);
void WriteObjectBuildStatements();
- void WriteObjectBuildStatement(cmSourceFile const* source,
- bool writeOrderDependsTargetForTarget);
+ void WriteObjectBuildStatement(cmSourceFile const* source);
void WriteTargetDependInfo(std::string const& lang);
void ExportObjectCompileCommand(
diff --git a/Source/cmNinjaTypes.h b/Source/cmNinjaTypes.h
index b4af70e..ec435d9 100644
--- a/Source/cmNinjaTypes.h
+++ b/Source/cmNinjaTypes.h
@@ -9,6 +9,12 @@
#include <string>
#include <vector>
+enum cmNinjaTargetDepends
+{
+ DependOnTargetArtifact,
+ DependOnTargetOrdering
+};
+
typedef std::vector<std::string> cmNinjaDeps;
typedef std::map<std::string, std::string> cmNinjaVars;
diff --git a/Source/cmOutputRequiredFilesCommand.cxx b/Source/cmOutputRequiredFilesCommand.cxx
index 8b8cf07..2339d68 100644
--- a/Source/cmOutputRequiredFilesCommand.cxx
+++ b/Source/cmOutputRequiredFilesCommand.cxx
@@ -188,9 +188,8 @@ protected:
if (qstart == std::string::npos) {
cmSystemTools::Error("unknown include directive ", line.c_str());
continue;
- } else {
- qend = line.find('>', qstart + 1);
}
+ qend = line.find('>', qstart + 1);
} else {
qend = line.find('\"', qstart + 1);
}
diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx
index d142693..eec1fc6 100644
--- a/Source/cmQtAutoGenerators.cxx
+++ b/Source/cmQtAutoGenerators.cxx
@@ -15,6 +15,7 @@
#include <utility>
#include "cmAlgorithms.h"
+#include "cmCryptoHash.h"
#include "cmFilePathChecksum.h"
#include "cmGlobalGenerator.h"
#include "cmMakefile.h"
@@ -31,9 +32,9 @@
// -- Static variables
-static const char* SettingsKeyMoc = "AM_MOC_OLD_SETTINGS";
-static const char* SettingsKeyUic = "AM_UIC_OLD_SETTINGS";
-static const char* SettingsKeyRcc = "AM_RCC_OLD_SETTINGS";
+static const char* SettingsKeyMoc = "AM_MOC_SETTINGS_HASH";
+static const char* SettingsKeyUic = "AM_UIC_SETTINGS_HASH";
+static const char* SettingsKeyRcc = "AM_RCC_SETTINGS_HASH";
// -- Static functions
@@ -42,6 +43,25 @@ inline static std::string Quoted(const std::string& text)
return cmQtAutoGeneratorCommon::Quoted(text);
}
+static std::string QuotedCommand(const std::vector<std::string>& command)
+{
+ std::string res;
+ for (std::vector<std::string>::const_iterator cit = command.begin();
+ cit != command.end(); ++cit) {
+ if (!res.empty()) {
+ res.push_back(' ');
+ }
+ const std::string cesc = Quoted(*cit);
+ if (cit->empty() || (cesc.size() > (cit->size() + 2)) ||
+ (cesc.find(' ') != std::string::npos)) {
+ res += cesc;
+ } else {
+ res += *cit;
+ }
+ }
+ return res;
+}
+
static void InfoGet(cmMakefile* makefile, const char* key, std::string& value)
{
value = makefile->GetSafeDefinition(key);
@@ -76,30 +96,25 @@ static void InfoGet(cmMakefile* makefile, const char* key,
cmSystemTools::ExpandListArgument(valueConf, list);
}
-static std::string SettingsFile(const std::string& targetDirectory)
-{
- std::string filename(cmSystemTools::CollapseFullPath(targetDirectory));
- cmSystemTools::ConvertToUnixSlashes(filename);
- filename += "/AutogenOldSettings.cmake";
- return filename;
-}
-
inline static bool SettingsMatch(cmMakefile* makefile, const char* key,
const std::string& value)
{
return (value == makefile->GetSafeDefinition(key));
}
-static void SettingWrite(std::ostream& ostr, const char* key,
- const std::string& value)
+static void SettingAppend(std::string& str, const char* key,
+ const std::string& value)
{
if (!value.empty()) {
- ostr << "set(" << key << " " << cmOutputConverter::EscapeForCMake(value)
- << ")\n";
+ str += "set(";
+ str += key;
+ str += " ";
+ str += cmOutputConverter::EscapeForCMake(value);
+ str += ")\n";
}
}
-std::string subDirPrefix(const std::string& fileName)
+static std::string SubDirPrefix(const std::string& fileName)
{
std::string res(cmsys::SystemTools::GetFilenamePath(fileName));
if (!res.empty()) {
@@ -236,12 +251,13 @@ static void UicMergeOptions(std::vector<std::string>& opts,
cmQtAutoGenerators::cmQtAutoGenerators()
: Verbose(cmsys::SystemTools::HasEnv("VERBOSE"))
, ColorOutput(true)
- , RunMocFailed(false)
- , RunUicFailed(false)
- , RunRccFailed(false)
- , GenerateAllMoc(false)
- , GenerateAllUic(false)
- , GenerateAllRcc(false)
+ , MocSettingsChanged(false)
+ , MocPredefsChanged(false)
+ , MocRunFailed(false)
+ , UicSettingsChanged(false)
+ , UicRunFailed(false)
+ , RccSettingsChanged(false)
+ , RccRunFailed(false)
{
std::string colorEnv;
@@ -254,16 +270,16 @@ cmQtAutoGenerators::cmQtAutoGenerators()
}
}
- this->MacroFilters[0].first = "Q_OBJECT";
- this->MacroFilters[0].second.compile("[\n][ \t]*Q_OBJECT[^a-zA-Z0-9_]");
- this->MacroFilters[1].first = "Q_GADGET";
- this->MacroFilters[1].second.compile("[\n][ \t]*Q_GADGET[^a-zA-Z0-9_]");
+ this->MocMacroFilters[0].first = "Q_OBJECT";
+ this->MocMacroFilters[0].second.compile("[\n][ \t]*Q_OBJECT[^a-zA-Z0-9_]");
+ this->MocMacroFilters[1].first = "Q_GADGET";
+ this->MocMacroFilters[1].second.compile("[\n][ \t]*Q_GADGET[^a-zA-Z0-9_]");
// Precompile regular expressions
- this->RegExpMocInclude.compile(
+ this->MocRegExpInclude.compile(
"[\n][ \t]*#[ \t]*include[ \t]+"
"[\"<](([^ \">]+/)?moc_[^ \">/]+\\.cpp|[^ \">]+\\.moc)[\">]");
- this->RegExpUicInclude.compile("[\n][ \t]*#[ \t]*include[ \t]+"
+ this->UicRegExpInclude.compile("[\n][ \t]*#[ \t]*include[ \t]+"
"[\"<](([^ \">]+/)?ui_[^ \">/]+\\.h)[\">]");
}
@@ -286,12 +302,12 @@ bool cmQtAutoGenerators::Run(const std::string& targetDirectory,
bool success = false;
if (this->ReadAutogenInfoFile(mf.get(), targetDirectory, config)) {
// Read old settings
- this->SettingsFileRead(mf.get(), targetDirectory);
+ this->SettingsFileRead(mf.get());
// Init and run
this->Init(mf.get());
if (this->RunAutogen()) {
// Write current settings
- if (this->SettingsFileWrite(targetDirectory)) {
+ if (this->SettingsFileWrite()) {
success = true;
}
}
@@ -338,6 +354,13 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(
return false;
}
+ // - Old settings file
+ {
+ this->SettingsFile = cmSystemTools::CollapseFullPath(targetDirectory);
+ cmSystemTools::ConvertToUnixSlashes(this->SettingsFile);
+ this->SettingsFile += "/AutogenOldSettings.cmake";
+ }
+
// - Target names
InfoGet(makefile, "AM_TARGET_NAME", this->AutogenTargetName);
InfoGet(makefile, "AM_ORIGIN_TARGET_NAME", this->OriginTargetName);
@@ -489,83 +512,87 @@ bool cmQtAutoGenerators::ReadAutogenInfoFile(
return true;
}
-void cmQtAutoGenerators::SettingsFileRead(cmMakefile* makefile,
- const std::string& targetDirectory)
+void cmQtAutoGenerators::SettingsFileRead(cmMakefile* makefile)
{
// Compose current settings strings
- if (this->MocEnabled()) {
- std::string& str = this->SettingsStringMoc;
- str += JoinOptionsList(this->MocDefinitions);
- str += " ~~~ ";
- str += JoinOptionsList(this->MocIncludePaths);
- str += " ~~~ ";
- str += JoinOptionsList(this->MocOptions);
- str += " ~~~ ";
- str += this->IncludeProjectDirsBefore ? "TRUE" : "FALSE";
- str += " ~~~ ";
- }
- if (this->UicEnabled()) {
- std::string& str = this->SettingsStringUic;
- str += JoinOptionsList(this->UicTargetOptions);
- str += " ~~~ ";
- str += JoinOptionsMap(this->UicOptions);
- str += " ~~~ ";
- }
- if (this->RccEnabled()) {
- std::string& str = this->SettingsStringRcc;
- str += JoinOptionsMap(this->RccOptions);
- str += " ~~~ ";
+ {
+ cmCryptoHash crypt(cmCryptoHash::AlgoSHA256);
+ if (this->MocEnabled()) {
+ std::string str;
+ str += JoinOptionsList(this->MocDefinitions);
+ str += " ~~~ ";
+ str += JoinOptionsList(this->MocIncludePaths);
+ str += " ~~~ ";
+ str += JoinOptionsList(this->MocOptions);
+ str += " ~~~ ";
+ str += this->IncludeProjectDirsBefore ? "TRUE" : "FALSE";
+ str += " ~~~ ";
+ str += JoinOptionsList(this->MocPredefsCmd);
+ str += " ~~~ ";
+ this->SettingsStringMoc = crypt.HashString(str);
+ }
+ if (this->UicEnabled()) {
+ std::string str;
+ str += JoinOptionsList(this->UicTargetOptions);
+ str += " ~~~ ";
+ str += JoinOptionsMap(this->UicOptions);
+ str += " ~~~ ";
+ this->SettingsStringUic = crypt.HashString(str);
+ }
+ if (this->RccEnabled()) {
+ std::string str;
+ str += JoinOptionsMap(this->RccOptions);
+ str += " ~~~ ";
+ this->SettingsStringRcc = crypt.HashString(str);
+ }
}
// Read old settings
- const std::string filename = SettingsFile(targetDirectory);
- if (makefile->ReadListFile(filename.c_str())) {
+ if (makefile->ReadListFile(this->SettingsFile.c_str())) {
if (!SettingsMatch(makefile, SettingsKeyMoc, this->SettingsStringMoc)) {
- this->GenerateAllMoc = true;
+ this->MocSettingsChanged = true;
}
if (!SettingsMatch(makefile, SettingsKeyUic, this->SettingsStringUic)) {
- this->GenerateAllUic = true;
+ this->UicSettingsChanged = true;
}
if (!SettingsMatch(makefile, SettingsKeyRcc, this->SettingsStringRcc)) {
- this->GenerateAllRcc = true;
+ this->RccSettingsChanged = true;
}
// In case any setting changed remove the old settings file.
// This triggers a full rebuild on the next run if the current
// build is aborted before writing the current settings in the end.
- if (this->GenerateAllAny()) {
- cmSystemTools::RemoveFile(filename);
+ if (this->AnySettingsChanged()) {
+ cmSystemTools::RemoveFile(this->SettingsFile);
}
} else {
// If the file could not be read re-generate everythiung.
- this->GenerateAllMoc = true;
- this->GenerateAllUic = true;
- this->GenerateAllRcc = true;
+ this->MocSettingsChanged = true;
+ this->UicSettingsChanged = true;
+ this->RccSettingsChanged = true;
}
}
-bool cmQtAutoGenerators::SettingsFileWrite(const std::string& targetDirectory)
+bool cmQtAutoGenerators::SettingsFileWrite()
{
bool success = true;
// Only write if any setting changed
- if (this->GenerateAllAny()) {
- const std::string filename = SettingsFile(targetDirectory);
+ if (this->AnySettingsChanged()) {
if (this->Verbose) {
- this->LogInfo("AutoGen: Writing settings file " + filename);
- }
- cmsys::ofstream outfile;
- outfile.open(filename.c_str(), std::ios::trunc);
- if (outfile) {
- SettingWrite(outfile, SettingsKeyMoc, this->SettingsStringMoc);
- SettingWrite(outfile, SettingsKeyUic, this->SettingsStringUic);
- SettingWrite(outfile, SettingsKeyRcc, this->SettingsStringRcc);
- success = outfile.good();
- outfile.close();
- } else {
+ this->LogInfo("AutoGen: Writing settings file " +
+ Quoted(this->SettingsFile));
+ }
+ // Compose settings file content
+ std::string settings;
+ SettingAppend(settings, SettingsKeyMoc, this->SettingsStringMoc);
+ SettingAppend(settings, SettingsKeyUic, this->SettingsStringUic);
+ SettingAppend(settings, SettingsKeyRcc, this->SettingsStringRcc);
+ // Write settings file
+ if (!this->FileWrite("AutoGen", this->SettingsFile, settings)) {
+ this->LogError("AutoGen: Error: Could not write old settings file " +
+ Quoted(this->SettingsFile));
+ // Remove old settings file to trigger a full rebuild on the next run
+ cmSystemTools::RemoveFile(this->SettingsFile);
success = false;
- // Remove old settings file to trigger full rebuild on next run
- cmSystemTools::RemoveFile(filename);
- this->LogError("AutoGen: Error: Writing old settings file failed: " +
- filename);
}
}
return success;
@@ -588,7 +615,7 @@ void cmQtAutoGenerators::Init(cmMakefile* makefile)
}
// Init file path checksum generator
- fpathCheckSum.setupParentDirs(this->CurrentSourceDir, this->CurrentBinaryDir,
+ FPathChecksum.setupParentDirs(this->CurrentSourceDir, this->CurrentBinaryDir,
this->ProjectSourceDir,
this->ProjectBinaryDir);
@@ -722,8 +749,8 @@ bool cmQtAutoGenerators::RunAutogen()
bool cmQtAutoGenerators::MocRequired(const std::string& contentText,
std::string* macroName)
{
- for (unsigned int ii = 0; ii != cmArraySize(this->MacroFilters); ++ii) {
- MacroFilter& filter = this->MacroFilters[ii];
+ for (unsigned int ii = 0; ii != cmArraySize(this->MocMacroFilters); ++ii) {
+ MocMacroFilter& filter = this->MocMacroFilters[ii];
// Run a simple find string operation before the expensive
// regular expression check
if (contentText.find(filter.first) != std::string::npos) {
@@ -751,7 +778,7 @@ void cmQtAutoGenerators::MocFindDepends(
// regular expression check
if (contentText.find(filter.key) != std::string::npos) {
// Run regular expression check loop
- const std::string sourcePath = subDirPrefix(absFilename);
+ const std::string sourcePath = SubDirPrefix(absFilename);
const char* contentChars = contentText.c_str();
while (filter.regExp.find(contentChars)) {
// Evaluate match
@@ -852,9 +879,9 @@ void cmQtAutoGenerators::UicParseContent(
const char* contentChars = contentText.c_str();
if (strstr(contentChars, "ui_") != CM_NULLPTR) {
- while (this->RegExpUicInclude.find(contentChars)) {
- uisIncluded[absFilename].push_back(this->RegExpUicInclude.match(1));
- contentChars += this->RegExpUicInclude.end();
+ while (this->UicRegExpInclude.find(contentChars)) {
+ uisIncluded[absFilename].push_back(this->UicRegExpInclude.match(1));
+ contentChars += this->UicRegExpInclude.end();
}
}
}
@@ -871,7 +898,7 @@ bool cmQtAutoGenerators::MocParseSourceContent(
this->LogInfo("AutoMoc: Checking " + absFilename);
}
- const std::string scannedFileAbsPath = subDirPrefix(absFilename);
+ const std::string scannedFileAbsPath = SubDirPrefix(absFilename);
const std::string scannedFileBasename =
cmsys::SystemTools::GetFilenameWithoutLastExtension(absFilename);
@@ -887,10 +914,10 @@ bool cmQtAutoGenerators::MocParseSourceContent(
const char* contentChars = contentText.c_str();
if (strstr(contentChars, "moc") != CM_NULLPTR) {
// Iterate over all included moc files
- while (this->RegExpMocInclude.find(contentChars)) {
- const std::string incString = this->RegExpMocInclude.match(1);
+ while (this->MocRegExpInclude.find(contentChars)) {
+ const std::string incString = this->MocRegExpInclude.match(1);
// Basename of the moc include
- const std::string incSubDir(subDirPrefix(incString));
+ const std::string incSubDir(SubDirPrefix(incString));
const std::string incBasename =
cmsys::SystemTools::GetFilenameWithoutLastExtension(incString);
@@ -1008,7 +1035,7 @@ bool cmQtAutoGenerators::MocParseSourceContent(
}
}
// Forward content pointer
- contentChars += this->RegExpMocInclude.end();
+ contentChars += this->MocRegExpInclude.end();
}
}
@@ -1076,7 +1103,7 @@ void cmQtAutoGenerators::SearchHeadersForSourceFile(
{
std::string basepaths[2];
{
- std::string bpath = subDirPrefix(absFilename);
+ std::string bpath = SubDirPrefix(absFilename);
bpath += cmsys::SystemTools::GetFilenameWithoutLastExtension(absFilename);
// search for default header files and private header files
basepaths[0] = bpath;
@@ -1150,54 +1177,7 @@ bool cmQtAutoGenerators::MocGenerateAll(
return true;
}
- // Generate moc_predefs
- if (!this->MocPredefsCmd.empty()) {
- if (!this->MakeParentDirectory(this->MocPredefsFileAbs)) {
- this->LogError("AutoMoc: Error creating directory for " +
- this->MocPredefsFileRel);
- return false;
- }
- this->LogBold("Generating MOC predefs " + this->MocPredefsFileRel);
-
- std::vector<std::string> cmd = this->MocPredefsCmd;
- cmd.insert(cmd.end(), this->MocIncludes.begin(), this->MocIncludes.end());
- for (std::vector<std::string>::const_iterator it =
- this->MocDefinitions.begin();
- it != this->MocDefinitions.end(); ++it) {
- cmd.push_back("-D" + (*it));
- }
- cmd.insert(cmd.end(), this->MocOptions.begin(), this->MocOptions.end());
-
- std::string output;
- bool moc_predefsGenerated = this->RunCommand(cmd, output, false);
- if (!moc_predefsGenerated) {
- return false;
- }
-
- // actually write the file
- cmsys::ofstream outfile;
- outfile.open(this->MocPredefsFileAbs.c_str(), std::ios::trunc);
- if (!outfile) {
- moc_predefsGenerated = false;
- this->LogError("AutoMoc: Error opening " + this->MocPredefsFileRel);
- } else {
- outfile << output;
- // Check for write errors
- if (!outfile.good()) {
- moc_predefsGenerated = false;
- this->LogError("AutoMoc: Error writing " + this->MocPredefsFileRel);
- }
- }
-
- if (!moc_predefsGenerated) {
- return false;
- }
- }
-
- bool mocCompFileGenerated = false;
- bool mocCompChanged = false;
-
- // look for name collisions
+ // Look for name collisions
{
std::multimap<std::string, std::string> collisions;
// Test merged map of included and notIncluded
@@ -1215,6 +1195,55 @@ bool cmQtAutoGenerators::MocGenerateAll(
return false;
}
}
+
+ // Generate moc_predefs
+ if (!this->MocPredefsCmd.empty()) {
+ if (this->MocSettingsChanged ||
+ FileAbsentOrOlder(this->MocPredefsFileAbs, this->SettingsFile)) {
+ this->LogBold("Generating MOC predefs " + this->MocPredefsFileRel);
+
+ std::string output;
+ {
+ // Compose command
+ std::vector<std::string> cmd = this->MocPredefsCmd;
+ // Add includes
+ cmd.insert(cmd.end(), this->MocIncludes.begin(),
+ this->MocIncludes.end());
+ // Add definitions
+ for (std::vector<std::string>::const_iterator it =
+ this->MocDefinitions.begin();
+ it != this->MocDefinitions.end(); ++it) {
+ cmd.push_back("-D" + (*it));
+#ifdef _WIN32
+ cmd.push_back("-DWIN32");
+#endif
+ }
+ // Add options
+ cmd.insert(cmd.end(), this->MocOptions.begin(),
+ this->MocOptions.end());
+ // Execute command
+ if (!this->RunCommand(cmd, output, false)) {
+ {
+ std::ostringstream ost;
+ ost << "AutoMoc: Error: moc predefs generation command failed\n";
+ ost << "AutoMoc: Command:\n" << QuotedCommand(cmd) << "\n";
+ ost << "AutoMoc: Command output:\n" << output << "\n";
+ this->LogError(ost.str());
+ }
+ return false;
+ }
+ }
+ // (Re)write predefs file only on demand
+ if (this->FileDiffers(this->MocPredefsFileAbs, output)) {
+ if (this->FileWrite("AutoMoc", this->MocPredefsFileAbs, output)) {
+ this->MocPredefsChanged = true;
+ } else {
+ return false;
+ }
+ }
+ }
+ }
+
// Generate moc files that are included by source files.
{
const std::string subDir = "include/";
@@ -1222,13 +1251,15 @@ bool cmQtAutoGenerators::MocGenerateAll(
mocsIncluded.begin();
it != mocsIncluded.end(); ++it) {
if (!this->MocGenerateFile(it->first, it->second, subDir, mocDepends)) {
- if (this->RunMocFailed) {
+ if (this->MocRunFailed) {
return false;
}
}
}
}
+
// Generate moc files that are _not_ included by source files.
+ bool mocCompFileGenerated = false;
{
const std::string subDir;
for (std::map<std::string, std::string>::const_iterator it =
@@ -1237,7 +1268,7 @@ bool cmQtAutoGenerators::MocGenerateAll(
if (this->MocGenerateFile(it->first, it->second, subDir, mocDepends)) {
mocCompFileGenerated = true;
} else {
- if (this->RunMocFailed) {
+ if (this->MocRunFailed) {
return false;
}
}
@@ -1263,37 +1294,11 @@ bool cmQtAutoGenerators::MocGenerateAll(
automocSource = ost.str();
}
- // Check if the content of moc_compilation.cpp changed
- {
- std::string oldContents;
- if (ReadAll(oldContents, this->MocCppFilenameAbs)) {
- mocCompChanged = (oldContents != automocSource);
- } else {
- mocCompChanged = true;
- }
- }
-
- bool success = true;
- if (mocCompChanged) {
+ if (this->FileDiffers(this->MocCppFilenameAbs, automocSource)) {
// Actually write moc_compilation.cpp
this->LogBold("Generating MOC compilation " + this->MocCppFilenameRel);
-
- // Make sure the parent directory exists
- success = this->MakeParentDirectory(this->MocCppFilenameAbs);
- if (success) {
- cmsys::ofstream outfile;
- outfile.open(this->MocCppFilenameAbs.c_str(), std::ios::trunc);
- if (!outfile) {
- success = false;
- this->LogError("AutoMoc: Error opening " + this->MocCppFilenameAbs);
- } else {
- outfile << automocSource;
- // Check for write errors
- if (!outfile.good()) {
- success = false;
- this->LogError("AutoMoc: Error writing " + this->MocCppFilenameAbs);
- }
- }
+ if (!this->FileWrite("AutoMoc", this->MocCppFilenameAbs, automocSource)) {
+ return false;
}
} else if (mocCompFileGenerated) {
// Only touch moc_compilation.cpp
@@ -1303,7 +1308,7 @@ bool cmQtAutoGenerators::MocGenerateAll(
cmSystemTools::Touch(this->MocCppFilenameAbs, false);
}
- return success;
+ return true;
}
/**
@@ -1315,7 +1320,7 @@ bool cmQtAutoGenerators::MocGenerateFile(
const std::map<std::string, std::set<std::string> >& mocDepends)
{
bool mocGenerated = false;
- bool generateMoc = this->GenerateAllMoc;
+ bool generateMoc = this->MocSettingsChanged || this->MocPredefsChanged;
const std::string mocFileRel =
this->AutogenBuildSubDir + subDir + mocFileName;
@@ -1344,10 +1349,11 @@ bool cmQtAutoGenerators::MocGenerateFile(
this->LogBold("Generating MOC source " + mocFileRel);
// Make sure the parent directory exists
- if (this->MakeParentDirectory(mocFileAbs)) {
+ if (this->MakeParentDirectory("AutoMoc", mocFileAbs)) {
// Compose moc command
std::vector<std::string> cmd;
cmd.push_back(this->MocExecutable);
+ // Add includes
cmd.insert(cmd.end(), this->MocIncludes.begin(),
this->MocIncludes.end());
// Add definitions
@@ -1356,14 +1362,16 @@ bool cmQtAutoGenerators::MocGenerateFile(
it != this->MocDefinitions.end(); ++it) {
cmd.push_back("-D" + (*it));
}
+#ifdef _WIN32
+ cmd.push_back("-DWIN32");
+#endif
+ // Add options
cmd.insert(cmd.end(), this->MocOptions.begin(), this->MocOptions.end());
+ // Add predefs include
if (!this->MocPredefsFileAbs.empty()) {
cmd.push_back("--include");
cmd.push_back(this->MocPredefsFileAbs);
}
-#ifdef _WIN32
- cmd.push_back("-DWIN32");
-#endif
cmd.push_back("-o");
cmd.push_back(mocFileAbs);
cmd.push_back(sourceFile);
@@ -1379,16 +1387,16 @@ bool cmQtAutoGenerators::MocGenerateFile(
std::ostringstream ost;
ost << "AutoMoc: Error: moc process failed for\n";
ost << Quoted(mocFileRel) << "\n";
- ost << "AutoMoc: Command:\n" << cmJoin(cmd, " ") << "\n";
+ ost << "AutoMoc: Command:\n" << QuotedCommand(cmd) << "\n";
ost << "AutoMoc: Command output:\n" << output << "\n";
this->LogError(ost.str());
}
cmSystemTools::RemoveFile(mocFileAbs);
- this->RunMocFailed = true;
+ this->MocRunFailed = true;
}
} else {
// Parent directory creation failed
- this->RunMocFailed = true;
+ this->MocRunFailed = true;
}
}
return mocGenerated;
@@ -1401,7 +1409,7 @@ bool cmQtAutoGenerators::UicFindIncludedFile(std::string& absFile,
bool success = false;
// Search in vicinity of the source
{
- std::string testPath = subDirPrefix(sourceFile);
+ std::string testPath = SubDirPrefix(sourceFile);
testPath += includeString;
if (cmsys::SystemTools::FileExists(testPath.c_str())) {
absFile = cmsys::SystemTools::GetRealPath(testPath);
@@ -1447,7 +1455,7 @@ bool cmQtAutoGenerators::UicGenerateAll(
for (std::vector<std::string>::const_iterator uit = sourceIncs.begin();
uit != sourceIncs.end(); ++uit) {
// Remove ui_ from the begin filename by substr()
- const std::string uiBasePath = subDirPrefix(*uit);
+ const std::string uiBasePath = SubDirPrefix(*uit);
const std::string uiBaseName =
cmsys::SystemTools::GetFilenameWithoutLastExtension(*uit).substr(3);
const std::string searchFileName = uiBasePath + uiBaseName + ".ui";
@@ -1487,7 +1495,7 @@ bool cmQtAutoGenerators::UicGenerateAll(
it->second.begin();
sit != it->second.end(); ++sit) {
if (!this->UicGenerateFile(it->first, sit->first, sit->second)) {
- if (this->RunUicFailed) {
+ if (this->UicRunFailed) {
return false;
}
}
@@ -1505,7 +1513,7 @@ bool cmQtAutoGenerators::UicGenerateFile(const std::string& realName,
const std::string& uiOutputFile)
{
bool uicGenerated = false;
- bool generateUic = this->GenerateAllUic;
+ bool generateUic = this->UicSettingsChanged;
const std::string uicFileRel =
this->AutogenBuildSubDir + "include/" + uiOutputFile;
@@ -1520,7 +1528,7 @@ bool cmQtAutoGenerators::UicGenerateFile(const std::string& realName,
this->LogBold("Generating UIC header " + uicFileRel);
// Make sure the parent directory exists
- if (this->MakeParentDirectory(uicFileAbs)) {
+ if (this->MakeParentDirectory("AutoUic", uicFileAbs)) {
// Compose uic command
std::vector<std::string> cmd;
cmd.push_back(this->UicExecutable);
@@ -1550,16 +1558,16 @@ bool cmQtAutoGenerators::UicGenerateFile(const std::string& realName,
ost << "AutoUic: Error: uic process failed for\n";
ost << Quoted(uicFileRel) << " needed by\n";
ost << Quoted(realName) << "\n";
- ost << "AutoUic: Command:\n" << cmJoin(cmd, " ") << "\n";
+ ost << "AutoUic: Command:\n" << QuotedCommand(cmd) << "\n";
ost << "AutoUic: Command output:\n" << output << "\n";
this->LogError(ost.str());
}
cmSystemTools::RemoveFile(uicFileAbs);
- this->RunUicFailed = true;
+ this->UicRunFailed = true;
}
} else {
// Parent directory creation failed
- this->RunUicFailed = true;
+ this->UicRunFailed = true;
}
}
return uicGenerated;
@@ -1601,7 +1609,7 @@ bool cmQtAutoGenerators::RccGenerateAll()
si != qrcGenMap.end(); ++si) {
bool unique = FileNameIsUnique(si->first, qrcGenMap);
if (!this->RccGenerateFile(si->first, si->second, unique)) {
- if (this->RunRccFailed) {
+ if (this->RccRunFailed) {
return false;
}
}
@@ -1617,7 +1625,7 @@ bool cmQtAutoGenerators::RccGenerateFile(const std::string& rccInputFile,
bool unique_n)
{
bool rccGenerated = false;
- bool generateRcc = this->GenerateAllRcc;
+ bool generateRcc = this->RccSettingsChanged;
const std::string rccBuildFile = this->CurrentBinaryDir + rccOutputFile;
@@ -1638,7 +1646,7 @@ bool cmQtAutoGenerators::RccGenerateFile(const std::string& rccInputFile,
} else {
files = CM_NULLPTR;
this->LogError(error);
- this->RunRccFailed = true;
+ this->RccRunFailed = true;
}
}
// Test if any input file is newer than the build file
@@ -1658,13 +1666,13 @@ bool cmQtAutoGenerators::RccGenerateFile(const std::string& rccInputFile,
this->LogBold("Generating RCC source " + rccOutputFile);
// Make sure the parent directory exists
- if (this->MakeParentDirectory(rccBuildFile)) {
+ if (this->MakeParentDirectory("AutoRcc", rccBuildFile)) {
// Compose symbol name
std::string symbolName =
cmsys::SystemTools::GetFilenameWithoutLastExtension(rccInputFile);
if (!unique_n) {
symbolName += "_";
- symbolName += fpathCheckSum.getPart(rccInputFile);
+ symbolName += FPathChecksum.getPart(rccInputFile);
}
// Replace '-' with '_'. The former is valid for
// file names but not for symbol names.
@@ -1696,16 +1704,16 @@ bool cmQtAutoGenerators::RccGenerateFile(const std::string& rccInputFile,
std::ostringstream ost;
ost << "AutoRcc: Error: rcc process failed for\n";
ost << Quoted(rccOutputFile) << "\n";
- ost << "AutoRcc: Command:\n" << cmJoin(cmd, " ") << "\n";
+ ost << "AutoRcc: Command:\n" << QuotedCommand(cmd) << "\n";
ost << "AutoRcc: Command output:\n" << output << "\n";
this->LogError(ost.str());
}
cmSystemTools::RemoveFile(rccBuildFile);
- this->RunRccFailed = true;
+ this->RccRunFailed = true;
}
} else {
// Parent directory creation failed
- this->RunRccFailed = true;
+ this->RccRunFailed = true;
}
}
return rccGenerated;
@@ -1776,23 +1784,6 @@ void cmQtAutoGenerators::LogError(const std::string& message) const
}
}
-void cmQtAutoGenerators::LogCommand(
- const std::vector<std::string>& command) const
-{
- std::vector<std::string> cmdEscaped;
- typedef std::vector<std::string>::const_iterator Iter;
- for (Iter cit = command.begin(); cit != command.end(); ++cit) {
- const std::string cesc = Quoted(*cit);
- if ((cesc.size() > (cit->size() + 2)) ||
- (cesc.find(' ') != std::string::npos)) {
- cmdEscaped.push_back(cesc);
- } else {
- cmdEscaped.push_back(*cit);
- }
- }
- this->LogInfo(cmJoin(cmdEscaped, " "));
-}
-
/**
* @brief Collects name collisions as output/input pairs
* @return True if there were collisions
@@ -1831,7 +1822,7 @@ std::string cmQtAutoGenerators::ChecksumedPath(const std::string& sourceFile,
const char* basePrefix,
const char* baseSuffix) const
{
- std::string res = fpathCheckSum.getPart(sourceFile);
+ std::string res = FPathChecksum.getPart(sourceFile);
res += "/";
res += basePrefix;
res += cmsys::SystemTools::GetFilenameWithoutLastExtension(sourceFile);
@@ -1843,19 +1834,66 @@ std::string cmQtAutoGenerators::ChecksumedPath(const std::string& sourceFile,
* @brief Generates the parent directory of the given file on demand
* @return True on success
*/
-bool cmQtAutoGenerators::MakeParentDirectory(const std::string& filename) const
+bool cmQtAutoGenerators::MakeParentDirectory(const char* logPrefix,
+ const std::string& filename) const
{
bool success = true;
const std::string dirName = cmSystemTools::GetFilenamePath(filename);
if (!dirName.empty()) {
success = cmsys::SystemTools::MakeDirectory(dirName);
if (!success) {
- this->LogError("AutoGen: Error: Directory creation failed: " + dirName);
+ std::string error = logPrefix;
+ error += ": Error: Parent directory creation failed for ";
+ error += Quoted(filename);
+ this->LogError(error);
}
}
return success;
}
+bool cmQtAutoGenerators::FileDiffers(const std::string& filename,
+ const std::string& content)
+{
+ bool differs = true;
+ {
+ std::string oldContents;
+ if (ReadAll(oldContents, filename)) {
+ differs = (oldContents != content);
+ }
+ }
+ return differs;
+}
+
+bool cmQtAutoGenerators::FileWrite(const char* logPrefix,
+ const std::string& filename,
+ const std::string& content)
+{
+ std::string error;
+ // Make sure the parent directory exists
+ if (this->MakeParentDirectory(logPrefix, filename)) {
+ cmsys::ofstream outfile;
+ outfile.open(filename.c_str(), std::ios::trunc);
+ if (outfile) {
+ outfile << content;
+ // Check for write errors
+ if (!outfile.good()) {
+ error = logPrefix;
+ error += ": Error writing ";
+ error += Quoted(filename);
+ }
+ } else {
+ error = logPrefix;
+ error = ": Error opening ";
+ error += Quoted(filename);
+ }
+ }
+ if (!error.empty()) {
+ this->LogError(error);
+ return false;
+ }
+ return true;
+}
+
/**
* @brief Runs a command and returns true on success
* @return True on success
@@ -1865,7 +1903,7 @@ bool cmQtAutoGenerators::RunCommand(const std::vector<std::string>& command,
{
// Log command
if (this->Verbose) {
- this->LogCommand(command);
+ this->LogInfo(QuotedCommand(command));
}
// Execute command
int retVal = 0;
diff --git a/Source/cmQtAutoGenerators.h b/Source/cmQtAutoGenerators.h
index 24c0a33..987110f 100644
--- a/Source/cmQtAutoGenerators.h
+++ b/Source/cmQtAutoGenerators.h
@@ -23,7 +23,7 @@ public:
bool Run(const std::string& targetDirectory, const std::string& config);
private:
- // - Types
+ // -- Types
/// @brief Used to extract additional dependencies from content text
struct MocDependFilter
@@ -31,9 +31,9 @@ private:
std::string key;
cmsys::RegularExpression regExp;
};
- typedef std::pair<std::string, cmsys::RegularExpression> MacroFilter;
+ typedef std::pair<std::string, cmsys::RegularExpression> MocMacroFilter;
- // - Configuration
+ // -- Configuration
bool MocDependFilterPush(const std::string& key, const std::string& regExp);
bool ReadAutogenInfoFile(cmMakefile* makefile,
const std::string& targetDirectory,
@@ -43,22 +43,21 @@ private:
bool UicEnabled() const { return !this->UicExecutable.empty(); }
bool RccEnabled() const { return !this->RccExecutable.empty(); }
- // - Settings file
- void SettingsFileRead(cmMakefile* makefile,
- const std::string& targetDirectory);
- bool SettingsFileWrite(const std::string& targetDirectory);
+ // -- Settings file
+ void SettingsFileRead(cmMakefile* makefile);
+ bool SettingsFileWrite();
- bool GenerateAllAny() const
+ bool AnySettingsChanged() const
{
- return (this->GenerateAllMoc || this->GenerateAllRcc ||
- this->GenerateAllUic);
+ return (this->MocSettingsChanged || this->RccSettingsChanged ||
+ this->UicSettingsChanged);
}
- // - Init and run
+ // -- Init and run
void Init(cmMakefile* makefile);
bool RunAutogen();
- // - Content analysis
+ // -- Content analysis
bool MocRequired(const std::string& contentText,
std::string* macroName = CM_NULLPTR);
void MocFindDepends(
@@ -101,7 +100,7 @@ private:
std::map<std::string, std::string>& mocsNotIncluded,
std::map<std::string, std::set<std::string> >& mocDepends);
- // - Moc file generation
+ // -- Moc file generation
bool MocGenerateAll(
const std::map<std::string, std::string>& mocsIncluded,
const std::map<std::string, std::string>& mocsNotIncluded,
@@ -111,7 +110,7 @@ private:
const std::string& subDir,
const std::map<std::string, std::set<std::string> >& mocDepends);
- // - Uic file generation
+ // -- Uic file generation
bool UicFindIncludedFile(std::string& absFile, const std::string& sourceFile,
const std::string& includeString);
bool UicGenerateAll(
@@ -120,12 +119,12 @@ private:
const std::string& uiInputFile,
const std::string& uiOutputFile);
- // - Rcc file generation
+ // -- Rcc file generation
bool RccGenerateAll();
bool RccGenerateFile(const std::string& qrcInputFile,
const std::string& qrcOutputFile, bool unique_n);
- // - Logging
+ // -- Logging
void LogErrorNameCollision(
const std::string& message,
const std::multimap<std::string, std::string>& collisions) const;
@@ -135,14 +134,19 @@ private:
void LogError(const std::string& message) const;
void LogCommand(const std::vector<std::string>& command) const;
- // - Utility
+ // -- Utility
bool NameCollisionTest(
const std::map<std::string, std::string>& genFiles,
std::multimap<std::string, std::string>& collisions) const;
std::string ChecksumedPath(const std::string& sourceFile,
const char* basePrefix,
const char* baseSuffix) const;
- bool MakeParentDirectory(const std::string& filename) const;
+ bool MakeParentDirectory(const char* logPrefix,
+ const std::string& filename) const;
+ bool FileDiffers(const std::string& filename, const std::string& content);
+ bool FileWrite(const char* logPrefix, const std::string& filename,
+ const std::string& content);
+
bool RunCommand(const std::vector<std::string>& command, std::string& output,
bool verbose = true) const;
@@ -153,28 +157,38 @@ private:
bool MocFindIncludedFile(std::string& absFile, const std::string& sourceFile,
const std::string& includeString) const;
- // - Target names
+ // -- Target names
std::string OriginTargetName;
std::string AutogenTargetName;
- // - Directories
+ // -- Directories
std::string ProjectSourceDir;
std::string ProjectBinaryDir;
std::string CurrentSourceDir;
std::string CurrentBinaryDir;
std::string AutogenBuildSubDir;
- // - Qt environment
+ // -- Qt environment
std::string QtMajorVersion;
std::string MocExecutable;
std::string UicExecutable;
std::string RccExecutable;
- // - File lists
+ // -- File lists
std::vector<std::string> Sources;
std::vector<std::string> Headers;
- // - Settings
+ std::vector<std::string> HeaderExtensions;
+ cmFilePathChecksum FPathChecksum;
+ // -- Settings
+ bool IncludeProjectDirsBefore;
+ bool Verbose;
+ bool ColorOutput;
+ std::string SettingsFile;
std::string SettingsStringMoc;
std::string SettingsStringUic;
std::string SettingsStringRcc;
- // - Moc
+ // -- Moc
+ bool MocSettingsChanged;
+ bool MocPredefsChanged;
+ bool MocRelaxedMode;
+ bool MocRunFailed;
std::string MocCppFilenameRel;
std::string MocCppFilenameAbs;
std::string MocPredefsFileRel;
@@ -184,35 +198,24 @@ private:
std::vector<std::string> MocIncludes;
std::vector<std::string> MocDefinitions;
std::vector<std::string> MocOptions;
+ std::vector<std::string> MocPredefsCmd;
std::vector<MocDependFilter> MocDependFilters;
- // - Uic
+ MocMacroFilter MocMacroFilters[2];
+ cmsys::RegularExpression MocRegExpInclude;
+ // -- Uic
+ bool UicSettingsChanged;
+ bool UicRunFailed;
std::vector<std::string> UicSkipList;
std::vector<std::string> UicTargetOptions;
std::map<std::string, std::string> UicOptions;
std::vector<std::string> UicSearchPaths;
- // - Rcc
+ cmsys::RegularExpression UicRegExpInclude;
+ // -- Rcc
+ bool RccSettingsChanged;
+ bool RccRunFailed;
std::vector<std::string> RccSources;
std::map<std::string, std::string> RccOptions;
std::map<std::string, std::vector<std::string> > RccInputs;
- // - Utility
- cmFilePathChecksum fpathCheckSum;
- std::vector<std::string> HeaderExtensions;
- MacroFilter MacroFilters[2];
- cmsys::RegularExpression RegExpMocInclude;
- cmsys::RegularExpression RegExpUicInclude;
- // - moc_predefs
- std::vector<std::string> MocPredefsCmd;
- // - Flags
- bool IncludeProjectDirsBefore;
- bool Verbose;
- bool ColorOutput;
- bool RunMocFailed;
- bool RunUicFailed;
- bool RunRccFailed;
- bool GenerateAllMoc;
- bool GenerateAllUic;
- bool GenerateAllRcc;
- bool MocRelaxedMode;
};
#endif
diff --git a/Source/cmRST.cxx b/Source/cmRST.cxx
index 70ffc7d..938cad9 100644
--- a/Source/cmRST.cxx
+++ b/Source/cmRST.cxx
@@ -96,14 +96,14 @@ void cmRST::ProcessModule(std::istream& is)
if (line == "#") {
this->ProcessLine("");
continue;
- } else if (line.substr(0, 2) == "# ") {
+ }
+ if (line.substr(0, 2) == "# ") {
this->ProcessLine(line.substr(2, line.npos));
continue;
- } else {
- rst = "";
- this->Reset();
- this->OutputLinePending = true;
}
+ rst = "";
+ this->Reset();
+ this->OutputLinePending = true;
}
if (line == "#.rst:") {
rst = "#";
diff --git a/Source/cmScriptGenerator.cxx b/Source/cmScriptGenerator.cxx
index 2a2dd40..753a1ba 100644
--- a/Source/cmScriptGenerator.cxx
+++ b/Source/cmScriptGenerator.cxx
@@ -4,8 +4,6 @@
#include "cmSystemTools.h"
-#include "cmConfigure.h"
-
cmScriptGenerator::cmScriptGenerator(
const std::string& config_var,
std::vector<std::string> const& configurations)
@@ -90,8 +88,7 @@ void cmScriptGenerator::GenerateScript(std::ostream& os)
this->GenerateScriptConfigs(os, indent);
}
-void cmScriptGenerator::GenerateScriptConfigs(std::ostream& os,
- Indent const& indent)
+void cmScriptGenerator::GenerateScriptConfigs(std::ostream& os, Indent indent)
{
if (this->ActionsPerConfig) {
this->GenerateScriptActionsPerConfig(os, indent);
@@ -100,8 +97,7 @@ void cmScriptGenerator::GenerateScriptConfigs(std::ostream& os,
}
}
-void cmScriptGenerator::GenerateScriptActions(std::ostream& os,
- Indent const& indent)
+void cmScriptGenerator::GenerateScriptActions(std::ostream& os, Indent indent)
{
if (this->ActionsPerConfig) {
// This is reached for single-configuration build generators in a
@@ -112,7 +108,7 @@ void cmScriptGenerator::GenerateScriptActions(std::ostream& os,
void cmScriptGenerator::GenerateScriptForConfig(std::ostream& /*unused*/,
const std::string& /*unused*/,
- Indent const& /*unused*/)
+ Indent /*unused*/)
{
// No actions for this generator.
}
@@ -138,7 +134,7 @@ bool cmScriptGenerator::GeneratesForConfig(const std::string& config)
}
void cmScriptGenerator::GenerateScriptActionsOnce(std::ostream& os,
- Indent const& indent)
+ Indent indent)
{
if (this->Configurations.empty()) {
// This rule is for all configurations.
@@ -153,7 +149,7 @@ void cmScriptGenerator::GenerateScriptActionsOnce(std::ostream& os,
}
void cmScriptGenerator::GenerateScriptActionsPerConfig(std::ostream& os,
- Indent const& indent)
+ Indent indent)
{
if (this->ConfigurationTypes->empty()) {
// In a single-configuration generator there is only one action
diff --git a/Source/cmScriptGenerator.h b/Source/cmScriptGenerator.h
index 0e98b27..d0879c6 100644
--- a/Source/cmScriptGenerator.h
+++ b/Source/cmScriptGenerator.h
@@ -3,7 +3,7 @@
#ifndef cmScriptGenerator_h
#define cmScriptGenerator_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include <ostream>
#include <string>
@@ -35,7 +35,7 @@ private:
int Level;
};
inline std::ostream& operator<<(std::ostream& os,
- cmScriptGeneratorIndent const& indent)
+ cmScriptGeneratorIndent indent)
{
indent.Write(os);
return os;
@@ -47,6 +47,8 @@ inline std::ostream& operator<<(std::ostream& os,
*/
class cmScriptGenerator
{
+ CM_DISABLE_COPY(cmScriptGenerator)
+
public:
cmScriptGenerator(const std::string& config_var,
std::vector<std::string> const& configurations);
@@ -58,12 +60,12 @@ public:
protected:
typedef cmScriptGeneratorIndent Indent;
virtual void GenerateScript(std::ostream& os);
- virtual void GenerateScriptConfigs(std::ostream& os, Indent const& indent);
- virtual void GenerateScriptActions(std::ostream& os, Indent const& indent);
+ virtual void GenerateScriptConfigs(std::ostream& os, Indent indent);
+ virtual void GenerateScriptActions(std::ostream& os, Indent indent);
virtual void GenerateScriptForConfig(std::ostream& os,
const std::string& config,
- Indent const& indent);
- virtual void GenerateScriptNoConfig(std::ostream&, Indent const&) {}
+ Indent indent);
+ virtual void GenerateScriptNoConfig(std::ostream&, Indent) {}
virtual bool NeedsScriptNoConfig() const { return false; }
// Test if this generator does something for a given configuration.
@@ -87,8 +89,8 @@ protected:
bool ActionsPerConfig;
private:
- void GenerateScriptActionsOnce(std::ostream& os, Indent const& indent);
- void GenerateScriptActionsPerConfig(std::ostream& os, Indent const& indent);
+ void GenerateScriptActionsOnce(std::ostream& os, Indent indent);
+ void GenerateScriptActionsPerConfig(std::ostream& os, Indent indent);
};
#endif
diff --git a/Source/cmSetTargetPropertiesCommand.cxx b/Source/cmSetTargetPropertiesCommand.cxx
index da26972..6425913 100644
--- a/Source/cmSetTargetPropertiesCommand.cxx
+++ b/Source/cmSetTargetPropertiesCommand.cxx
@@ -32,9 +32,8 @@ bool cmSetTargetPropertiesCommand::InitialPass(
}
propertyPairs.insert(propertyPairs.end(), j, args.end());
break;
- } else {
- numFiles++;
}
+ numFiles++;
}
if (propertyPairs.empty()) {
this->SetError("called with illegal arguments, maybe missing "
diff --git a/Source/cmSetTestsPropertiesCommand.cxx b/Source/cmSetTestsPropertiesCommand.cxx
index 4fd379f..e27c675 100644
--- a/Source/cmSetTestsPropertiesCommand.cxx
+++ b/Source/cmSetTestsPropertiesCommand.cxx
@@ -32,9 +32,8 @@ bool cmSetTestsPropertiesCommand::InitialPass(
}
propertyPairs.insert(propertyPairs.end(), j, args.end());
break;
- } else {
- numFiles++;
}
+ numFiles++;
}
if (propertyPairs.empty()) {
this->SetError("called with illegal arguments, maybe "
diff --git a/Source/cmSourceGroupCommand.cxx b/Source/cmSourceGroupCommand.cxx
index 631f2a6..f54d777 100644
--- a/Source/cmSourceGroupCommand.cxx
+++ b/Source/cmSourceGroupCommand.cxx
@@ -2,6 +2,8 @@
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmSourceGroupCommand.h"
+#include <algorithm>
+#include <iterator>
#include <set>
#include <sstream>
#include <stddef.h>
@@ -36,21 +38,31 @@ std::string getFullFilePath(const std::string& currentPath,
}
std::set<std::string> getSourceGroupFilesPaths(
- const std::string& currentPath, const std::string& root,
- const std::vector<std::string>& files)
+ const std::string& root, const std::vector<std::string>& files)
{
std::set<std::string> ret;
const std::string::size_type rootLength = root.length();
for (size_t i = 0; i < files.size(); ++i) {
- const std::string fullPath = getFullFilePath(currentPath, files[i]);
-
- ret.insert(fullPath.substr(rootLength + 1)); // +1 to also omnit last '/'
+ ret.insert(files[i].substr(rootLength + 1)); // +1 to also omnit last '/'
}
return ret;
}
+bool rootIsPrefix(const std::string& root,
+ const std::vector<std::string>& files, std::string& error)
+{
+ for (size_t i = 0; i < files.size(); ++i) {
+ if (!cmSystemTools::StringStartsWith(files[i], root.c_str())) {
+ error = "ROOT: " + root + " is not a prefix of file: " + files[i];
+ return false;
+ }
+ }
+
+ return true;
+}
+
cmSourceGroup* addSourceGroup(const std::vector<std::string>& tokenizedPath,
cmMakefile& makefile)
{
@@ -68,7 +80,22 @@ cmSourceGroup* addSourceGroup(const std::vector<std::string>& tokenizedPath,
return sg;
}
-bool addFilesToItsSourceGroups(const std::set<std::string>& sgFilesPaths,
+std::string prepareFilePathForTree(const std::string& path)
+{
+ return cmSystemTools::CollapseFullPath(path);
+}
+
+std::vector<std::string> prepareFilesPathsForTree(
+ std::vector<std::string>::const_iterator begin,
+ std::vector<std::string>::const_iterator end)
+{
+ std::vector<std::string> prepared(std::distance(begin, end));
+ std::transform(begin, end, prepared.begin(), prepareFilePathForTree);
+ return prepared;
+}
+
+bool addFilesToItsSourceGroups(const std::string& root,
+ const std::set<std::string>& sgFilesPaths,
const std::string& prefix, cmMakefile& makefile,
std::string& errorMsg)
{
@@ -93,8 +120,7 @@ bool addFilesToItsSourceGroups(const std::set<std::string>& sgFilesPaths,
errorMsg = "Could not create source group for file: " + *it;
return false;
}
- const std::string fullPath =
- getFullFilePath(makefile.GetCurrentSourceDirectory(), *it);
+ const std::string fullPath = getFullFilePath(root, *it);
sg->AddGroupFile(fullPath);
}
}
@@ -233,17 +259,18 @@ bool cmSourceGroupCommand::processTree(const std::vector<std::string>& args,
filesBegin = FilesWithPrefixKeywordIndex + 1;
}
- const std::vector<std::string> filesVector(args.begin() + filesBegin,
- args.end());
+ const std::vector<std::string> filesVector =
+ prepareFilesPathsForTree(args.begin() + filesBegin, args.end());
- std::set<std::string> sourceGroupPaths = getSourceGroupFilesPaths(
- this->Makefile->GetCurrentSourceDirectory(), root, filesVector);
+ if (!rootIsPrefix(root, filesVector, errorMsg)) {
+ return false;
+ }
- addFilesToItsSourceGroups(sourceGroupPaths, prefix, *(this->Makefile),
- errorMsg);
+ std::set<std::string> sourceGroupPaths =
+ getSourceGroupFilesPaths(root, filesVector);
- if (!errorMsg.empty()) {
- this->SetError(errorMsg);
+ if (!addFilesToItsSourceGroups(root, sourceGroupPaths, prefix,
+ *(this->Makefile), errorMsg)) {
return false;
}
diff --git a/Source/cmStatePrivate.h b/Source/cmStatePrivate.h
index b2c6a7c..f36ee37 100644
--- a/Source/cmStatePrivate.h
+++ b/Source/cmStatePrivate.h
@@ -57,11 +57,6 @@ struct cmStateDetail::PolicyStackEntry : public cmPolicies::PolicyMap
, Weak(w)
{
}
- PolicyStackEntry(PolicyStackEntry const& r)
- : derived(r)
- , Weak(r.Weak)
- {
- }
bool Weak;
};
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index 39625ae..6d620d9 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -1707,7 +1707,8 @@ int cmSystemTools::WaitForLine(cmsysProcess* process, std::string& line,
for (; outiter != out.end(); ++outiter) {
if ((*outiter == '\r') && ((outiter + 1) == out.end())) {
break;
- } else if (*outiter == '\n' || *outiter == '\0') {
+ }
+ if (*outiter == '\n' || *outiter == '\0') {
std::vector<char>::size_type length = outiter - out.begin();
if (length > 1 && *(outiter - 1) == '\r') {
--length;
@@ -1724,7 +1725,8 @@ int cmSystemTools::WaitForLine(cmsysProcess* process, std::string& line,
for (; erriter != err.end(); ++erriter) {
if ((*erriter == '\r') && ((erriter + 1) == err.end())) {
break;
- } else if (*erriter == '\n' || *erriter == '\0') {
+ }
+ if (*erriter == '\n' || *erriter == '\0') {
std::vector<char>::size_type length = erriter - err.begin();
if (length > 1 && *(erriter - 1) == '\r') {
--length;
@@ -2623,29 +2625,28 @@ bool cmSystemTools::RemoveRPath(std::string const& file, std::string* emsg,
it = dentries.erase(it);
entriesErased++;
continue;
- } else {
- if (cmELF::TagMipsRldMapRel != 0 &&
- it->first == cmELF::TagMipsRldMapRel) {
- // Background: debuggers need to know the "linker map" which contains
- // the addresses each dynamic object is loaded at. Most arches use
- // the DT_DEBUG tag which the dynamic linker writes to (directly) and
- // contain the location of the linker map, however on MIPS the
- // .dynamic section is always read-only so this is not possible. MIPS
- // objects instead contain a DT_MIPS_RLD_MAP tag which contains the
- // address where the dyanmic linker will write to (an indirect
- // version of DT_DEBUG). Since this doesn't work when using PIE, a
- // relative equivalent was created - DT_MIPS_RLD_MAP_REL. Since this
- // version contains a relative offset, moving it changes the
- // calculated address. This may cause the dyanmic linker to write
- // into memory it should not be changing.
- //
- // To fix this, we adjust the value of DT_MIPS_RLD_MAP_REL here. If
- // we move it up by n bytes, we add n bytes to the value of this tag.
- it->second += entriesErased * sizeof_dentry;
- }
-
- it++;
}
+ if (cmELF::TagMipsRldMapRel != 0 &&
+ it->first == cmELF::TagMipsRldMapRel) {
+ // Background: debuggers need to know the "linker map" which contains
+ // the addresses each dynamic object is loaded at. Most arches use
+ // the DT_DEBUG tag which the dynamic linker writes to (directly) and
+ // contain the location of the linker map, however on MIPS the
+ // .dynamic section is always read-only so this is not possible. MIPS
+ // objects instead contain a DT_MIPS_RLD_MAP tag which contains the
+ // address where the dyanmic linker will write to (an indirect
+ // version of DT_DEBUG). Since this doesn't work when using PIE, a
+ // relative equivalent was created - DT_MIPS_RLD_MAP_REL. Since this
+ // version contains a relative offset, moving it changes the
+ // calculated address. This may cause the dyanmic linker to write
+ // into memory it should not be changing.
+ //
+ // To fix this, we adjust the value of DT_MIPS_RLD_MAP_REL here. If
+ // we move it up by n bytes, we add n bytes to the value of this tag.
+ it->second += entriesErased * sizeof_dentry;
+ }
+
+ it++;
}
// Encode new entries list
diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h
index a8a9995..d0902b1 100644
--- a/Source/cmSystemTools.h
+++ b/Source/cmSystemTools.h
@@ -3,7 +3,7 @@
#ifndef cmSystemTools_h
#define cmSystemTools_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include "cmProcessOutput.h"
#include "cmsys/Process.h"
@@ -379,9 +379,10 @@ public:
original environment. */
class SaveRestoreEnvironment
{
+ CM_DISABLE_COPY(SaveRestoreEnvironment)
public:
SaveRestoreEnvironment();
- virtual ~SaveRestoreEnvironment();
+ ~SaveRestoreEnvironment();
private:
std::vector<std::string> Env;
diff --git a/Source/cmTargetDepend.h b/Source/cmTargetDepend.h
index 1839923..daa902e 100644
--- a/Source/cmTargetDepend.h
+++ b/Source/cmTargetDepend.h
@@ -30,7 +30,7 @@ public:
operator cmGeneratorTarget const*() const { return this->Target; }
cmGeneratorTarget const* operator->() const { return this->Target; }
cmGeneratorTarget const& operator*() const { return *this->Target; }
- friend bool operator<(cmTargetDepend const& l, cmTargetDepend const& r)
+ friend bool operator<(cmTargetDepend l, cmTargetDepend r)
{
return l.Target < r.Target;
}
diff --git a/Source/cmTestGenerator.cxx b/Source/cmTestGenerator.cxx
index 4164f3a..be4b378 100644
--- a/Source/cmTestGenerator.cxx
+++ b/Source/cmTestGenerator.cxx
@@ -35,15 +35,13 @@ void cmTestGenerator::Compute(cmLocalGenerator* lg)
this->LG = lg;
}
-void cmTestGenerator::GenerateScriptConfigs(std::ostream& os,
- Indent const& indent)
+void cmTestGenerator::GenerateScriptConfigs(std::ostream& os, Indent indent)
{
// Create the tests.
this->cmScriptGenerator::GenerateScriptConfigs(os, indent);
}
-void cmTestGenerator::GenerateScriptActions(std::ostream& os,
- Indent const& indent)
+void cmTestGenerator::GenerateScriptActions(std::ostream& os, Indent indent)
{
if (this->ActionsPerConfig) {
// This is the per-config generation in a single-configuration
@@ -59,7 +57,7 @@ void cmTestGenerator::GenerateScriptActions(std::ostream& os,
void cmTestGenerator::GenerateScriptForConfig(std::ostream& os,
const std::string& config,
- Indent const& indent)
+ Indent indent)
{
this->TestGenerated = true;
@@ -125,8 +123,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os,
}
}
-void cmTestGenerator::GenerateScriptNoConfig(std::ostream& os,
- Indent const& indent)
+void cmTestGenerator::GenerateScriptNoConfig(std::ostream& os, Indent indent)
{
os << indent << "add_test(" << this->Test->GetName() << " NOT_AVAILABLE)\n";
}
@@ -139,8 +136,7 @@ bool cmTestGenerator::NeedsScriptNoConfig() const
!this->ConfigurationTypes->empty()); // config-dependent command
}
-void cmTestGenerator::GenerateOldStyle(std::ostream& fout,
- Indent const& indent)
+void cmTestGenerator::GenerateOldStyle(std::ostream& fout, Indent indent)
{
this->TestGenerated = true;
diff --git a/Source/cmTestGenerator.h b/Source/cmTestGenerator.h
index 7214375..b227305 100644
--- a/Source/cmTestGenerator.h
+++ b/Source/cmTestGenerator.h
@@ -3,7 +3,7 @@
#ifndef cmTestGenerator_h
#define cmTestGenerator_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include "cmScriptGenerator.h"
@@ -20,6 +20,8 @@ class cmTest;
*/
class cmTestGenerator : public cmScriptGenerator
{
+ CM_DISABLE_COPY(cmTestGenerator)
+
public:
cmTestGenerator(cmTest* test,
std::vector<std::string> const& configurations =
@@ -29,16 +31,13 @@ public:
void Compute(cmLocalGenerator* lg);
protected:
- void GenerateScriptConfigs(std::ostream& os,
- Indent const& indent) CM_OVERRIDE;
- void GenerateScriptActions(std::ostream& os,
- Indent const& indent) CM_OVERRIDE;
+ void GenerateScriptConfigs(std::ostream& os, Indent indent) CM_OVERRIDE;
+ void GenerateScriptActions(std::ostream& os, Indent indent) CM_OVERRIDE;
void GenerateScriptForConfig(std::ostream& os, const std::string& config,
- Indent const& indent) CM_OVERRIDE;
- void GenerateScriptNoConfig(std::ostream& os,
- Indent const& indent) CM_OVERRIDE;
+ Indent indent) CM_OVERRIDE;
+ void GenerateScriptNoConfig(std::ostream& os, Indent indent) CM_OVERRIDE;
bool NeedsScriptNoConfig() const CM_OVERRIDE;
- void GenerateOldStyle(std::ostream& os, Indent const& indent);
+ void GenerateOldStyle(std::ostream& os, Indent indent);
cmLocalGenerator* LG;
cmTest* Test;
diff --git a/Source/cmXMLWriter.h b/Source/cmXMLWriter.h
index 14c82b1..ed76a88 100644
--- a/Source/cmXMLWriter.h
+++ b/Source/cmXMLWriter.h
@@ -3,7 +3,7 @@
#ifndef cmXMLWiter_h
#define cmXMLWiter_h
-#include "cmConfigure.h" // IWYU pragma: keep
+#include "cmConfigure.h"
#include "cmXMLSafe.h"
@@ -14,6 +14,8 @@
class cmXMLWriter
{
+ CM_DISABLE_COPY(cmXMLWriter)
+
public:
cmXMLWriter(std::ostream& output, std::size_t level = 0);
~cmXMLWriter();
@@ -63,9 +65,6 @@ public:
void SetIndentationElement(std::string const& element);
private:
- cmXMLWriter(const cmXMLWriter&);
- cmXMLWriter& operator=(const cmXMLWriter&);
-
void ConditionalLineBreak(bool condition, std::size_t indent);
void PreAttribute();
diff --git a/Source/cmake.h b/Source/cmake.h
index 4c292f0..16a2830 100644
--- a/Source/cmake.h
+++ b/Source/cmake.h
@@ -55,6 +55,8 @@ struct cmDocumentationEntry;
class cmake
{
+ CM_DISABLE_COPY(cmake)
+
public:
enum MessageType
{
@@ -409,7 +411,7 @@ public:
void WatchUnusedCli(const std::string& var);
cmState* GetState() const { return this->State; }
- void SetCurrentSnapshot(cmStateSnapshot snapshot)
+ void SetCurrentSnapshot(cmStateSnapshot const& snapshot)
{
this->CurrentSnapshot = snapshot;
}
@@ -460,8 +462,6 @@ protected:
cmVariableWatch* VariableWatch;
private:
- cmake(const cmake&); // Not implemented.
- void operator=(const cmake&); // Not implemented.
ProgressCallbackType ProgressCallback;
void* ProgressCallbackClientData;
bool InTryCompile;
diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx
index 974dd5f..cc954e6 100644
--- a/Source/cmcmd.cxx
+++ b/Source/cmcmd.cxx
@@ -1450,7 +1450,8 @@ bool cmVSLink::Parse(std::vector<std::string>::const_iterator argBeg,
if (*arg == "--") {
++arg;
break;
- } else if (*arg == "--manifests") {
+ }
+ if (*arg == "--manifests") {
for (++arg; arg != argEnd && !cmHasLiteralPrefix(*arg, "-"); ++arg) {
this->UserManifests.push_back(*arg);
}