diff options
Diffstat (limited to 'Source')
35 files changed, 343 insertions, 104 deletions
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index ca063d5..1c942ba 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -308,6 +308,8 @@ IF (WIN32) cmGlobalVisualStudio8Win64Generator.h cmGlobalVisualStudio9Win64Generator.cxx cmGlobalVisualStudio9Win64Generator.h + cmGlobalVisualStudio9IA64Generator.cxx + cmGlobalVisualStudio9IA64Generator.h cmVisualStudioGeneratorOptions.h cmVisualStudioGeneratorOptions.cxx cmVisualStudio10TargetGenerator.h @@ -318,6 +320,8 @@ IF (WIN32) cmGlobalVisualStudio10Generator.cxx cmGlobalVisualStudio10Win64Generator.h cmGlobalVisualStudio10Win64Generator.cxx + cmGlobalVisualStudio10IA64Generator.h + cmGlobalVisualStudio10IA64Generator.cxx cmGlobalVisualStudioGenerator.cxx cmGlobalVisualStudioGenerator.h cmGlobalWatcomWMakeGenerator.cxx diff --git a/Source/cmAddCustomCommandCommand.h b/Source/cmAddCustomCommandCommand.h index 47b542c..05e7dc2 100644 --- a/Source/cmAddCustomCommandCommand.h +++ b/Source/cmAddCustomCommandCommand.h @@ -75,6 +75,10 @@ public: "A target created in the same directory (CMakeLists.txt file) that " "specifies any output of the custom command as a source file is given " "a rule to generate the file using the command at build time. " + "Do not list the output in more than one independent target that may " + "build in parallel or the two instances of the rule may conflict " + "(instead use add_custom_target to drive the command and make the " + "other targets depend on that one). " "If an output name is a relative path it will be interpreted " "relative to the build tree directory corresponding to the current " "source directory. " diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index c8374db..ab0bb79 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -849,7 +849,8 @@ void cmCacheManager::CacheEntry::SetProperty(const char* prop, //---------------------------------------------------------------------------- void cmCacheManager::CacheEntry::AppendProperty(const char* prop, - const char* value) + const char* value, + bool asString) { if(strcmp(prop, "TYPE") == 0) { @@ -859,7 +860,7 @@ void cmCacheManager::CacheEntry::AppendProperty(const char* prop, { if(value) { - if(!this->Value.empty() && *value) + if(!this->Value.empty() && *value && !asString) { this->Value += ";"; } @@ -868,7 +869,7 @@ void cmCacheManager::CacheEntry::AppendProperty(const char* prop, } else { - this->Properties.AppendProperty(prop, value, cmProperty::CACHE); + this->Properties.AppendProperty(prop, value, cmProperty::CACHE, asString); } } @@ -893,11 +894,12 @@ void cmCacheManager::CacheIterator::SetProperty(const char* p, const char* v) //---------------------------------------------------------------------------- void cmCacheManager::CacheIterator::AppendProperty(const char* p, - const char* v) + const char* v, + bool asString) { if(!this->IsAtEnd()) { - this->GetEntry().AppendProperty(p, v); + this->GetEntry().AppendProperty(p, v, asString); } } diff --git a/Source/cmCacheManager.h b/Source/cmCacheManager.h index 314017b..9c94d21 100644 --- a/Source/cmCacheManager.h +++ b/Source/cmCacheManager.h @@ -41,7 +41,8 @@ private: cmPropertyMap Properties; const char* GetProperty(const char*) const; void SetProperty(const char* property, const char* value); - void AppendProperty(const char* property, const char* value); + void AppendProperty(const char* property, const char* value, + bool asString=false); bool Initialized; CacheEntry() : Value(""), Type(UNINITIALIZED), Initialized(false) {} @@ -61,7 +62,8 @@ public: bool GetPropertyAsBool(const char*) const ; bool PropertyExists(const char*) const; void SetProperty(const char* property, const char* value); - void AppendProperty(const char* property, const char* value); + void AppendProperty(const char* property, const char* value, + bool asString=false); void SetProperty(const char* property, bool value); const char* GetValue() const { return this->GetEntry().Value.c_str(); } bool GetValueAsBool() const; diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx index ea25e60..4e75f9c 100644 --- a/Source/cmDocumentVariables.cxx +++ b/Source/cmDocumentVariables.cxx @@ -719,6 +719,20 @@ void cmDocumentVariables::DefineVariables(cmake* cm) "Variables That Change Behavior"); cm->DefineProperty + ("CMAKE_DISABLE_FIND_PACKAGE_<PackageName>", cmProperty::VARIABLE, + "Variable for disabling find_package() calls.", + "Every non-REQUIRED find_package() call in a project can be disabled " + "by setting the variable CMAKE_DISABLE_FIND_PACKAGE_<PackageName> to " + "TRUE. This can be used to build a project without an optional package, " + "although that package is installed.\n" + "This switch should be used during the initial CMake run. Otherwise if " + "the package has already been found in a previous CMake run, the " + "variables which have been stored in the cache will still be there. " + "In the case it is recommended to remove the cache variables for " + "this package from the cache using the cache editor or cmake -U", false, + "Variables That Change Behavior"); + + cm->DefineProperty ("CMAKE_USER_MAKE_RULES_OVERRIDE", cmProperty::VARIABLE, "Specify a CMake file that overrides platform information.", "CMake loads the specified file while enabling support for each " diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 5f106bc..9d1c220 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -335,6 +335,10 @@ void cmFindPackageCommand::GenerateDocumentation() this->CommandDocumentation += this->GenericDocumentationPathsOrder; this->CommandDocumentation += "\n" + "Every non-REQUIRED find_package() call can be disabled by setting the " + "variable CMAKE_DISABLE_FIND_PACKAGE_<package> to TRUE. See the " + "documentation for the CMAKE_DISABLE_FIND_PACKAGE_<package> variable for " + "more information.\n" "See the cmake_policy() command documentation for discussion of the " "NO_POLICY_SCOPE option." ; @@ -607,6 +611,24 @@ bool cmFindPackageCommand } } + std::string disableFindPackageVar = "CMAKE_DISABLE_FIND_PACKAGE_"; + disableFindPackageVar += this->Name; + if(this->Makefile->IsOn(disableFindPackageVar.c_str())) + { + if (this->Required) + { + cmOStringStream e; + e << "for module " << this->Name << " called with REQUIRED, but " + << disableFindPackageVar + << " is enabled. A REQUIRED package cannot be disabled."; + this->SetError(e.str().c_str()); + return false; + } + + return true; + } + + this->SetModuleVariables(components); // See if there is a Find<package>.cmake module. diff --git a/Source/cmGlobalMinGWMakefileGenerator.cxx b/Source/cmGlobalMinGWMakefileGenerator.cxx index 2f558dc..a9e7798 100644 --- a/Source/cmGlobalMinGWMakefileGenerator.cxx +++ b/Source/cmGlobalMinGWMakefileGenerator.cxx @@ -66,18 +66,6 @@ cmLocalGenerator *cmGlobalMinGWMakefileGenerator::CreateLocalGenerator() lg->SetPassMakeflags(false); lg->SetUnixCD(true); lg->SetMinGWMake(true); - - // mingw32-make has trouble running code like - // - // @echo message with spaces - // - // If quotes are added - // - // @echo "message with spaces" - // - // it runs but the quotes are displayed. Instead just use cmake to - // echo. - lg->SetNativeEchoCommand("@$(CMAKE_COMMAND) -E echo ", false); return lg; } diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index 328a3da..ec8f4a5 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -175,3 +175,39 @@ std::string cmGlobalVisualStudio10Generator } return makeCommand; } + +//---------------------------------------------------------------------------- +bool cmGlobalVisualStudio10Generator::Find64BitTools(cmMakefile* mf) +{ + if(!this->PlatformToolset.empty()) + { + return true; + } + // This edition does not come with 64-bit tools. Look for them. + // + // TODO: Detect available tools? x64\v100 exists but does not work? + // KHLM\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\4.0;VCTargetsPath + // c:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0/Platforms/ + // {Itanium,Win32,x64}/PlatformToolsets/{v100,v90,Windows7.1SDK} + std::string winSDK_7_1; + if(cmSystemTools::ReadRegistryValue( + "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\" + "Windows\\v7.1;InstallationFolder", winSDK_7_1)) + { + cmOStringStream m; + m << "Found Windows SDK v7.1: " << winSDK_7_1; + mf->DisplayStatus(m.str().c_str(), -1); + this->PlatformToolset = "Windows7.1SDK"; + return true; + } + else + { + cmOStringStream e; + e << "Cannot enable 64-bit tools with Visual Studio 2010 Express.\n" + << "Install the Microsoft Windows SDK v7.1 to get 64-bit tools:\n" + << " http://msdn.microsoft.com/en-us/windows/bb980924.aspx"; + mf->IssueMessage(cmake::FATAL_ERROR, e.str().c_str()); + cmSystemTools::SetFatalErrorOccured(); + return false; + } +} diff --git a/Source/cmGlobalVisualStudio10Generator.h b/Source/cmGlobalVisualStudio10Generator.h index bef5642..8573670 100644 --- a/Source/cmGlobalVisualStudio10Generator.h +++ b/Source/cmGlobalVisualStudio10Generator.h @@ -74,6 +74,7 @@ public: virtual std::string GetUserMacrosRegKeyBase(); virtual const char* GetCMakeCFGInitDirectory() { return "$(Configuration)";} + bool Find64BitTools(cmMakefile* mf); protected: virtual const char* GetIDEVersion() { return "10.0"; } diff --git a/Source/cmGlobalVisualStudio10IA64Generator.cxx b/Source/cmGlobalVisualStudio10IA64Generator.cxx new file mode 100644 index 0000000..5f70f6b --- /dev/null +++ b/Source/cmGlobalVisualStudio10IA64Generator.cxx @@ -0,0 +1,51 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmGlobalVisualStudio10IA64Generator.h" +#include "cmMakefile.h" +#include "cmake.h" + +//---------------------------------------------------------------------------- +cmGlobalVisualStudio10IA64Generator::cmGlobalVisualStudio10IA64Generator() +{ +} + +//---------------------------------------------------------------------------- +void cmGlobalVisualStudio10IA64Generator +::GetDocumentation(cmDocumentationEntry& entry) const +{ + entry.Name = this->GetName(); + entry.Brief = "Generates Visual Studio 10 Itanium project files."; + entry.Full = ""; +} + +//---------------------------------------------------------------------------- +void cmGlobalVisualStudio10IA64Generator +::AddPlatformDefinitions(cmMakefile* mf) +{ + this->cmGlobalVisualStudio10Generator::AddPlatformDefinitions(mf); + mf->AddDefinition("CMAKE_FORCE_IA64", "TRUE"); + mf->AddDefinition("MSVC_C_ARCHITECTURE_ID", "x64"); + mf->AddDefinition("MSVC_CXX_ARCHITECTURE_ID", "x64"); +} + +//---------------------------------------------------------------------------- +void cmGlobalVisualStudio10IA64Generator +::EnableLanguage(std::vector<std::string> const& languages, + cmMakefile* mf, bool optional) +{ + if(this->IsExpressEdition() && !this->Find64BitTools(mf)) + { + return; + } + this->cmGlobalVisualStudio10Generator + ::EnableLanguage(languages, mf, optional); +} diff --git a/Source/cmGlobalVisualStudio10IA64Generator.h b/Source/cmGlobalVisualStudio10IA64Generator.h new file mode 100644 index 0000000..a088272 --- /dev/null +++ b/Source/cmGlobalVisualStudio10IA64Generator.h @@ -0,0 +1,40 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmGlobalVisualStudio10IA64Generator_h +#define cmGlobalVisualStudio10IA64Generator_h + +#include "cmGlobalVisualStudio10Generator.h" + +class cmGlobalVisualStudio10IA64Generator : + public cmGlobalVisualStudio10Generator +{ +public: + cmGlobalVisualStudio10IA64Generator(); + static cmGlobalGenerator* New() { + return new cmGlobalVisualStudio10IA64Generator; } + + ///! Get the name for the generator. + virtual const char* GetName() const { + return cmGlobalVisualStudio10IA64Generator::GetActualName();} + static const char* GetActualName() {return "Visual Studio 10 IA64";} + + virtual const char* GetPlatformName() const {return "Itanium";} + + /** Get the documentation entry for this generator. */ + virtual void GetDocumentation(cmDocumentationEntry& entry) const; + + virtual void AddPlatformDefinitions(cmMakefile* mf); + + virtual void EnableLanguage(std::vector<std::string>const& languages, + cmMakefile *, bool optional); +}; +#endif diff --git a/Source/cmGlobalVisualStudio10Win64Generator.cxx b/Source/cmGlobalVisualStudio10Win64Generator.cxx index 8600777..49dc473 100644 --- a/Source/cmGlobalVisualStudio10Win64Generator.cxx +++ b/Source/cmGlobalVisualStudio10Win64Generator.cxx @@ -38,42 +38,6 @@ void cmGlobalVisualStudio10Win64Generator } //---------------------------------------------------------------------------- -bool cmGlobalVisualStudio10Win64Generator::Find64BitTools(cmMakefile* mf) -{ - if(!this->PlatformToolset.empty()) - { - return true; - } - // This edition does not come with 64-bit tools. Look for them. - // - // TODO: Detect available tools? x64\v100 exists but does not work? - // KHLM\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\4.0;VCTargetsPath - // c:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0/Platforms/ - // {Itanium,Win32,x64}/PlatformToolsets/{v100,v90,Windows7.1SDK} - std::string winSDK_7_1; - if(cmSystemTools::ReadRegistryValue( - "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\" - "Windows\\v7.1;InstallationFolder", winSDK_7_1)) - { - cmOStringStream m; - m << "Found Windows SDK v7.1: " << winSDK_7_1; - mf->DisplayStatus(m.str().c_str(), -1); - this->PlatformToolset = "Windows7.1SDK"; - return true; - } - else - { - cmOStringStream e; - e << "Cannot enable 64-bit tools with Visual Studio 2010 Express.\n" - << "Install the Microsoft Windows SDK v7.1 to get 64-bit tools:\n" - << " http://msdn.microsoft.com/en-us/windows/bb980924.aspx"; - mf->IssueMessage(cmake::FATAL_ERROR, e.str().c_str()); - cmSystemTools::SetFatalErrorOccured(); - return false; - } -} - -//---------------------------------------------------------------------------- void cmGlobalVisualStudio10Win64Generator ::EnableLanguage(std::vector<std::string> const& languages, cmMakefile* mf, bool optional) diff --git a/Source/cmGlobalVisualStudio10Win64Generator.h b/Source/cmGlobalVisualStudio10Win64Generator.h index e6d3dc5..8a2de4c 100644 --- a/Source/cmGlobalVisualStudio10Win64Generator.h +++ b/Source/cmGlobalVisualStudio10Win64Generator.h @@ -34,7 +34,6 @@ public: virtual void AddPlatformDefinitions(cmMakefile* mf); - bool Find64BitTools(cmMakefile* mf); virtual void EnableLanguage(std::vector<std::string>const& languages, cmMakefile *, bool optional); }; diff --git a/Source/cmGlobalVisualStudio9IA64Generator.cxx b/Source/cmGlobalVisualStudio9IA64Generator.cxx new file mode 100644 index 0000000..d49739b --- /dev/null +++ b/Source/cmGlobalVisualStudio9IA64Generator.cxx @@ -0,0 +1,48 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#include "cmGlobalVisualStudio9IA64Generator.h" +#include "cmLocalVisualStudio7Generator.h" +#include "cmMakefile.h" + + +cmGlobalVisualStudio9IA64Generator::cmGlobalVisualStudio9IA64Generator() +{ + this->ArchitectureId = "Itanium"; +} + +///! Create a local generator appropriate to this Global Generator +cmLocalGenerator *cmGlobalVisualStudio9IA64Generator::CreateLocalGenerator() +{ + cmLocalVisualStudio7Generator *lg = new cmLocalVisualStudio7Generator; + lg->SetVersion9(); + lg->SetPlatformName(this->GetPlatformName()); + lg->SetExtraFlagTable(this->GetExtraFlagTableVS8()); + lg->SetGlobalGenerator(this); + return lg; +} + +//---------------------------------------------------------------------------- +void cmGlobalVisualStudio9IA64Generator +::GetDocumentation(cmDocumentationEntry& entry) const +{ + entry.Name = this->GetName(); + entry.Brief = "Generates Visual Studio 9 2008 Itanium project files."; + entry.Full = ""; +} + +//---------------------------------------------------------------------------- +void cmGlobalVisualStudio9IA64Generator +::AddPlatformDefinitions(cmMakefile* mf) +{ + cmGlobalVisualStudio9Generator::AddPlatformDefinitions(mf); + mf->AddDefinition("CMAKE_FORCE_IA64", "TRUE"); +} diff --git a/Source/cmGlobalVisualStudio9IA64Generator.h b/Source/cmGlobalVisualStudio9IA64Generator.h new file mode 100644 index 0000000..e33ee15 --- /dev/null +++ b/Source/cmGlobalVisualStudio9IA64Generator.h @@ -0,0 +1,50 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmGlobalVisualStudio9IA64Generator_h +#define cmGlobalVisualStudio9IA64Generator_h + +#include "cmGlobalVisualStudio9Generator.h" + + +/** \class cmGlobalVisualStudio8IA64Generator + * \brief Write a Unix makefiles. + * + * cmGlobalVisualStudio8IA64Generator manages UNIX build process for a tree + */ +class cmGlobalVisualStudio9IA64Generator : + public cmGlobalVisualStudio9Generator +{ +public: + cmGlobalVisualStudio9IA64Generator(); + static cmGlobalGenerator* New() { + return new cmGlobalVisualStudio9IA64Generator; } + + ///! Get the name for the generator. + virtual const char* GetName() const { + return cmGlobalVisualStudio9IA64Generator::GetActualName();} + static const char* GetActualName() {return "Visual Studio 9 2008 IA64";} + + virtual const char* GetPlatformName() const {return "Itanium";} + + /** Get the documentation entry for this generator. */ + virtual void GetDocumentation(cmDocumentationEntry& entry) const; + + ///! create the correct local generator + virtual cmLocalGenerator *CreateLocalGenerator(); + + /** + * Try to determine system infomation such as shared library + * extension, pthreads, byte order etc. + */ + virtual void AddPlatformDefinitions(cmMakefile *); +}; +#endif diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index 5c2cda1..6ab5c2a 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -68,8 +68,6 @@ cmLocalUnixMakefileGenerator3::cmLocalUnixMakefileGenerator3() this->ColorMakefile = false; this->SkipPreprocessedSourceRules = false; this->SkipAssemblySourceRules = false; - this->NativeEchoCommand = "@echo "; - this->NativeEchoWindows = true; this->MakeCommandEscapeTargetTwice = false; this->IsMakefileGenerator = true; this->BorlandMakeCurlyHack = false; @@ -1235,9 +1233,8 @@ cmLocalUnixMakefileGenerator3::AppendEcho(std::vector<std::string>& commands, if(color_name.empty()) { // Use the native echo command. - cmd = this->NativeEchoCommand; - cmd += this->EscapeForShell(line.c_str(), false, - this->NativeEchoWindows); + cmd = "@echo "; + cmd += this->EscapeForShell(line.c_str(), false, true); } else { diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index 9ff6e5e..0994222 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -127,14 +127,6 @@ public: void SetSilentNoColon(bool v) {this->SilentNoColon = v;} /** - * Set the command to use for native make shell echo. The value - * should include all parts of the command up to the beginning of - * the message (including a whitespace separator). - */ - void SetNativeEchoCommand(const char* cmd, bool isWindows) - { this->NativeEchoCommand = cmd; this->NativeEchoWindows = isWindows; } - - /** * Set the string used to include one makefile into another default * is include. */ @@ -365,8 +357,6 @@ private: std::string IncludeDirective; std::string MakeSilentFlag; std::string ConfigurationName; - std::string NativeEchoCommand; - bool NativeEchoWindows; bool DefineWindowsNULL; bool UnixCD; bool PassMakeflags; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 63bf03b..a5cdee4 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1759,6 +1759,10 @@ void cmMakefile::AddDefinition(const char* name, bool value) void cmMakefile::CheckForUnusedVariables() const { + if (!this->WarnUnused) + { + return; + } const cmDefinitions& defs = this->Internal->VarStack.top(); const std::set<cmStdString>& locals = defs.LocalKeys(); std::set<cmStdString>::const_iterator it = locals.begin(); @@ -3332,7 +3336,8 @@ void cmMakefile::SetProperty(const char* prop, const char* value) this->Properties.SetProperty(prop,value,cmProperty::DIRECTORY); } -void cmMakefile::AppendProperty(const char* prop, const char* value) +void cmMakefile::AppendProperty(const char* prop, const char* value, + bool asString) { if (!prop) { @@ -3365,7 +3370,7 @@ void cmMakefile::AppendProperty(const char* prop, const char* value) return; } - this->Properties.AppendProperty(prop,value,cmProperty::DIRECTORY); + this->Properties.AppendProperty(prop,value,cmProperty::DIRECTORY,asString); } const char *cmMakefile::GetPropertyOrDefinition(const char* prop) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 1c1aef3..c01bb5d 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -799,7 +799,7 @@ public: ///! Set/Get a property of this directory void SetProperty(const char *prop, const char *value); - void AppendProperty(const char *prop, const char *value); + void AppendProperty(const char *prop, const char *value,bool asString=false); const char *GetProperty(const char *prop); const char *GetPropertyOrDefinition(const char *prop); const char *GetProperty(const char *prop, cmProperty::ScopeType scope); diff --git a/Source/cmProperty.cxx b/Source/cmProperty.cxx index 166bd00..3b37cf3 100644 --- a/Source/cmProperty.cxx +++ b/Source/cmProperty.cxx @@ -19,10 +19,10 @@ void cmProperty::Set(const char *name, const char *value) this->ValueHasBeenSet = true; } -void cmProperty::Append(const char *name, const char *value) +void cmProperty::Append(const char *name, const char *value, bool asString) { this->Name = name; - if(!this->Value.empty() && *value) + if(!this->Value.empty() && *value && !asString) { this->Value += ";"; } diff --git a/Source/cmProperty.h b/Source/cmProperty.h index 71bd1e7..e0fcd63 100644 --- a/Source/cmProperty.h +++ b/Source/cmProperty.h @@ -24,7 +24,7 @@ public: void Set(const char *name, const char *value); // append to this property - void Append(const char *name, const char *value); + void Append(const char *name, const char *value, bool asString = false); // get the value const char *GetValue() const; diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index 052b811..a4d0bf3 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -59,7 +59,7 @@ void cmPropertyMap::SetProperty(const char *name, const char *value, } void cmPropertyMap::AppendProperty(const char* name, const char* value, - cmProperty::ScopeType scope) + cmProperty::ScopeType scope, bool asString) { // Skip if nothing to append. if(!name || !value || !*value) @@ -81,7 +81,7 @@ void cmPropertyMap::AppendProperty(const char* name, const char* value, #endif cmProperty *prop = this->GetOrCreateProperty(name); - prop->Append(name,value); + prop->Append(name,value,asString); } const char *cmPropertyMap diff --git a/Source/cmPropertyMap.h b/Source/cmPropertyMap.h index 02fb060..94275e2 100644 --- a/Source/cmPropertyMap.h +++ b/Source/cmPropertyMap.h @@ -25,7 +25,7 @@ public: cmProperty::ScopeType scope); void AppendProperty(const char* name, const char* value, - cmProperty::ScopeType scope); + cmProperty::ScopeType scope, bool asString=false); const char *GetPropertyValue(const char *name, cmProperty::ScopeType scope, diff --git a/Source/cmSetPropertyCommand.cxx b/Source/cmSetPropertyCommand.cxx index 3a4773c..cc10840 100644 --- a/Source/cmSetPropertyCommand.cxx +++ b/Source/cmSetPropertyCommand.cxx @@ -20,6 +20,7 @@ cmSetPropertyCommand::cmSetPropertyCommand() { this->AppendMode = false; + this->AppendAsString = false; this->Remove = true; } @@ -83,6 +84,13 @@ bool cmSetPropertyCommand { doing = DoingNone; this->AppendMode = true; + this->AppendAsString = false; + } + else if(*arg == "APPEND_STRING") + { + doing = DoingNone; + this->AppendMode = true; + this->AppendAsString = true; } else if(doing == DoingNames) { @@ -152,7 +160,7 @@ bool cmSetPropertyCommand::HandleGlobalMode() } if(this->AppendMode) { - cm->AppendProperty(name, value); + cm->AppendProperty(name, value, this->AppendAsString); } else { @@ -218,7 +226,7 @@ bool cmSetPropertyCommand::HandleDirectoryMode() } if(this->AppendMode) { - mf->AppendProperty(name, value); + mf->AppendProperty(name, value, this->AppendAsString); } else { @@ -266,7 +274,7 @@ bool cmSetPropertyCommand::HandleTarget(cmTarget* target) } if(this->AppendMode) { - target->AppendProperty(name, value); + target->AppendProperty(name, value, this->AppendAsString); } else { @@ -317,7 +325,7 @@ bool cmSetPropertyCommand::HandleSource(cmSourceFile* sf) if(this->AppendMode) { - sf->AppendProperty(name, value); + sf->AppendProperty(name, value, this->AppendAsString); } else { @@ -377,7 +385,7 @@ bool cmSetPropertyCommand::HandleTest(cmTest* test) } if(this->AppendMode) { - test->AppendProperty(name, value); + test->AppendProperty(name, value, this->AppendAsString); } else { @@ -464,7 +472,7 @@ bool cmSetPropertyCommand::HandleCacheEntry(cmCacheManager::CacheIterator& it) } if(this->AppendMode) { - it.AppendProperty(name, value); + it.AppendProperty(name, value, this->AppendAsString); } else { diff --git a/Source/cmSetPropertyCommand.h b/Source/cmSetPropertyCommand.h index c477bb7..3a0169e 100644 --- a/Source/cmSetPropertyCommand.h +++ b/Source/cmSetPropertyCommand.h @@ -56,7 +56,7 @@ public: " SOURCE [src1 [src2 ...]] |\n" " TEST [test1 [test2 ...]] |\n" " CACHE [entry1 [entry2 ...]]>\n" - " [APPEND]\n" + " [APPEND] [APPEND_STRING]\n" " PROPERTY <name> [value1 [value2 ...]])\n" "Set one property on zero or more objects of a scope. " "The first argument determines the scope in which the property " @@ -77,6 +77,9 @@ public: "list. " "If the APPEND option is given the list is appended to any " "existing property value." + "If the APPEND_STRING option is given the string is append to any " + "existing property value as string, i.e. it results in a longer " + "string and not a list of strings." ; } @@ -93,6 +96,7 @@ private: std::string PropertyValue; bool Remove; bool AppendMode; + bool AppendAsString; // Implementation of each property type. bool HandleGlobalMode(); diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index 42d3f06..dfa2c0b 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -291,13 +291,15 @@ void cmSourceFile::SetProperty(const char* prop, const char* value) } //---------------------------------------------------------------------------- -void cmSourceFile::AppendProperty(const char* prop, const char* value) +void cmSourceFile::AppendProperty(const char* prop, const char* value, + bool asString) { if (!prop) { return; } - this->Properties.AppendProperty(prop, value, cmProperty::SOURCE_FILE); + this->Properties.AppendProperty(prop, value, cmProperty::SOURCE_FILE, + asString); } //---------------------------------------------------------------------------- diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h index 2dc8488..55147e1 100644 --- a/Source/cmSourceFile.h +++ b/Source/cmSourceFile.h @@ -44,7 +44,7 @@ public: ///! Set/Get a property of this source file void SetProperty(const char *prop, const char *value); - void AppendProperty(const char* prop, const char* value); + void AppendProperty(const char* prop, const char* value,bool asString=false); const char *GetProperty(const char *prop) const; bool GetPropertyAsBool(const char *prop) const; diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 2cb3c01..e10ba4a 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -2191,13 +2191,14 @@ void cmTarget::SetProperty(const char* prop, const char* value) } //---------------------------------------------------------------------------- -void cmTarget::AppendProperty(const char* prop, const char* value) +void cmTarget::AppendProperty(const char* prop, const char* value, + bool asString) { if (!prop) { return; } - this->Properties.AppendProperty(prop, value, cmProperty::TARGET); + this->Properties.AppendProperty(prop, value, cmProperty::TARGET, asString); this->MaybeInvalidatePropertyCache(prop); } diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 28652e2..26fcef2 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -224,7 +224,7 @@ public: ///! Set/Get a property of this target file void SetProperty(const char *prop, const char *value); - void AppendProperty(const char* prop, const char* value); + void AppendProperty(const char* prop, const char* value,bool asString=false); const char *GetProperty(const char *prop); const char *GetProperty(const char *prop, cmProperty::ScopeType scope); bool GetPropertyAsBool(const char *prop); diff --git a/Source/cmTest.cxx b/Source/cmTest.cxx index c25a8b6..502c174 100644 --- a/Source/cmTest.cxx +++ b/Source/cmTest.cxx @@ -84,13 +84,13 @@ void cmTest::SetProperty(const char* prop, const char* value) } //---------------------------------------------------------------------------- -void cmTest::AppendProperty(const char* prop, const char* value) +void cmTest::AppendProperty(const char* prop, const char* value, bool asString) { if (!prop) { return; } - this->Properties.AppendProperty(prop, value, cmProperty::TEST); + this->Properties.AppendProperty(prop, value, cmProperty::TEST, asString); } //---------------------------------------------------------------------------- diff --git a/Source/cmTest.h b/Source/cmTest.h index e27a24e..6223a01 100644 --- a/Source/cmTest.h +++ b/Source/cmTest.h @@ -47,7 +47,7 @@ public: ///! Set/Get a property of this source file void SetProperty(const char *prop, const char *value); - void AppendProperty(const char* prop, const char* value); + void AppendProperty(const char* prop, const char* value,bool asString=false); const char *GetProperty(const char *prop) const; bool GetPropertyAsBool(const char *prop) const; cmPropertyMap &GetProperties() { return this->Properties; }; diff --git a/Source/cmTryCompileCommand.h b/Source/cmTryCompileCommand.h index 9923d03..0d57633 100644 --- a/Source/cmTryCompileCommand.h +++ b/Source/cmTryCompileCommand.h @@ -25,7 +25,7 @@ public: /** * This is a virtual constructor for the command. */ - virtual cmCommand* Clone() + virtual cmCommand* Clone() { return new cmTryCompileCommand; } @@ -45,7 +45,7 @@ public: /** * Succinct documentation. */ - virtual const char* GetTerseDocumentation() + virtual const char* GetTerseDocumentation() { return "Try building some code."; } @@ -102,14 +102,15 @@ public: "In both versions of the command, " "if OUTPUT_VARIABLE is specified, then the " "output from the build process is stored in the given variable. " - "Return the success or failure in " + "The success or failure of the try_compile, i.e. TRUE or FALSE " + "respectively, is returned in " "RESULT_VAR. CMAKE_FLAGS can be used to pass -DVAR:TYPE=VALUE flags " "to the cmake that is run during the build. " "Set variable CMAKE_TRY_COMPILE_CONFIGURATION to choose a build " "configuration." ; } - + cmTypeMacro(cmTryCompileCommand, cmCoreTryCompile); }; diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 45927cb..ec87ab6 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -62,8 +62,10 @@ # include "cmGlobalVisualStudio71Generator.h" # include "cmGlobalVisualStudio8Generator.h" # include "cmGlobalVisualStudio9Generator.h" +# include "cmGlobalVisualStudio9IA64Generator.h" # include "cmGlobalVisualStudio9Win64Generator.h" # include "cmGlobalVisualStudio10Generator.h" +# include "cmGlobalVisualStudio10IA64Generator.h" # include "cmGlobalVisualStudio10Win64Generator.h" # include "cmGlobalVisualStudio8Win64Generator.h" # include "cmGlobalBorlandMakefileGenerator.h" @@ -2440,6 +2442,8 @@ void cmake::AddDefaultGenerators() &cmGlobalVisualStudio7Generator::New; this->Generators[cmGlobalVisualStudio10Generator::GetActualName()] = &cmGlobalVisualStudio10Generator::New; + this->Generators[cmGlobalVisualStudio10IA64Generator::GetActualName()] = + &cmGlobalVisualStudio10IA64Generator::New; this->Generators[cmGlobalVisualStudio10Win64Generator::GetActualName()] = &cmGlobalVisualStudio10Win64Generator::New; this->Generators[cmGlobalVisualStudio71Generator::GetActualName()] = @@ -2448,6 +2452,8 @@ void cmake::AddDefaultGenerators() &cmGlobalVisualStudio8Generator::New; this->Generators[cmGlobalVisualStudio9Generator::GetActualName()] = &cmGlobalVisualStudio9Generator::New; + this->Generators[cmGlobalVisualStudio9IA64Generator::GetActualName()] = + &cmGlobalVisualStudio9IA64Generator::New; this->Generators[cmGlobalVisualStudio9Win64Generator::GetActualName()] = &cmGlobalVisualStudio9Win64Generator::New; this->Generators[cmGlobalVisualStudio8Win64Generator::GetActualName()] = @@ -3536,7 +3542,7 @@ void cmake::SetProperty(const char* prop, const char* value) this->Properties.SetProperty(prop, value, cmProperty::GLOBAL); } -void cmake::AppendProperty(const char* prop, const char* value) +void cmake::AppendProperty(const char* prop, const char* value, bool asString) { if (!prop) { @@ -3549,7 +3555,7 @@ void cmake::AppendProperty(const char* prop, const char* value) this->DebugConfigs.clear(); } - this->Properties.AppendProperty(prop, value, cmProperty::GLOBAL); + this->Properties.AppendProperty(prop, value, cmProperty::GLOBAL, asString); } const char *cmake::GetProperty(const char* prop) diff --git a/Source/cmake.h b/Source/cmake.h index fac86c1..b791b7c 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -263,7 +263,7 @@ class cmake ///! Set/Get a property of this target file void SetProperty(const char *prop, const char *value); - void AppendProperty(const char *prop, const char *value); + void AppendProperty(const char *prop, const char *value,bool asString=false); const char *GetProperty(const char *prop); const char *GetProperty(const char *prop, cmProperty::ScopeType scope); bool GetPropertyAsBool(const char *prop); diff --git a/Source/kwsys/kwsysDateStamp.cmake b/Source/kwsys/kwsysDateStamp.cmake index 6961f2d..d53ea09 100644 --- a/Source/kwsys/kwsysDateStamp.cmake +++ b/Source/kwsys/kwsysDateStamp.cmake @@ -18,4 +18,4 @@ SET(KWSYS_DATE_STAMP_YEAR 2011) SET(KWSYS_DATE_STAMP_MONTH 07) # KWSys version date day component. Format is DD. -SET(KWSYS_DATE_STAMP_DAY 18) +SET(KWSYS_DATE_STAMP_DAY 26) |