summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2008-02-14 21:42:29 (GMT)
committerBrad King <brad.king@kitware.com>2008-02-14 21:42:29 (GMT)
commit1c0595c73fe1fa88b67691794eef8ee10edfc257 (patch)
treefd453a6e799d7d5f4ee6e1f01096a40cb8aadb1d /Source/cmGlobalGenerator.cxx
parent67f8c0fd104fe6ec1b6c1df2ebce6fdb9b2c811f (diff)
downloadCMake-1c0595c73fe1fa88b67691794eef8ee10edfc257.zip
CMake-1c0595c73fe1fa88b67691794eef8ee10edfc257.tar.gz
CMake-1c0595c73fe1fa88b67691794eef8ee10edfc257.tar.bz2
ENH: Add global property ALLOW_DUPLICATE_CUSTOM_TARGETS to help existing projects that depend on having duplicate custom targets. It is allowed only for Makefile generators. See bug#6348.
Diffstat (limited to 'Source/cmGlobalGenerator.cxx')
-rw-r--r--Source/cmGlobalGenerator.cxx27
1 files changed, 27 insertions, 0 deletions
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 25d1bef..003788e 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -733,12 +733,39 @@ void cmGlobalGenerator::Configure()
}
}
+bool cmGlobalGenerator::CheckALLOW_DUPLICATE_CUSTOM_TARGETS()
+{
+ // If the property is not enabled then okay.
+ if(!this->CMakeInstance
+ ->GetPropertyAsBool("ALLOW_DUPLICATE_CUSTOM_TARGETS"))
+ {
+ return true;
+ }
+
+ // This generator does not support duplicate custom targets.
+ cmOStringStream e;
+ e << "This project has enabled the ALLOW_DUPLICATE_CUSTOM_TARGETS "
+ << "global property. "
+ << "The \"" << this->GetName() << "\" generator does not support "
+ << "duplicate custom targets. "
+ << "Consider using a Makefiles generator or fix the project to not "
+ << "use duplicat target names.";
+ cmSystemTools::Error(e.str().c_str());
+ return false;
+}
+
void cmGlobalGenerator::Generate()
{
// Some generators track files replaced during the Generate.
// Start with an empty vector:
this->FilesReplacedDuringGenerate.clear();
+ // Check whether this generator is allowed to run.
+ if(!this->CheckALLOW_DUPLICATE_CUSTOM_TARGETS())
+ {
+ return;
+ }
+
// For each existing cmLocalGenerator
unsigned int i;