diff options
author | Brad King <brad.king@kitware.com> | 2008-02-14 21:42:29 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2008-02-14 21:42:29 (GMT) |
commit | 1c0595c73fe1fa88b67691794eef8ee10edfc257 (patch) | |
tree | fd453a6e799d7d5f4ee6e1f01096a40cb8aadb1d /Source/cmGlobalGenerator.cxx | |
parent | 67f8c0fd104fe6ec1b6c1df2ebce6fdb9b2c811f (diff) | |
download | CMake-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.cxx | 27 |
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; |