From aed92ccea6321d0323a84d9001c489ef5d05d350 Mon Sep 17 00:00:00 2001 From: Matej Hribernik Date: Sun, 19 Jun 2011 20:42:42 +0200 Subject: [PATCH] Add VisualStudio 9 and 10 generators for Itanium platform --- Modules/CMakeGenericSystem.cmake | 2 +- Modules/Platform/Windows-cl.cmake | 4 +- Source/CMakeLists.txt | 4 ++ .../cmGlobalVisualStudio10IA64Generator.cxx | 51 +++++++++++++++++++ Source/cmGlobalVisualStudio10IA64Generator.h | 40 +++++++++++++++ Source/cmGlobalVisualStudio9IA64Generator.cxx | 48 +++++++++++++++++ Source/cmGlobalVisualStudio9IA64Generator.h | 50 ++++++++++++++++++ Source/cmake.cxx | 6 +++ 8 files changed, 202 insertions(+), 3 deletions(-) create mode 100644 Source/cmGlobalVisualStudio10IA64Generator.cxx create mode 100644 Source/cmGlobalVisualStudio10IA64Generator.h create mode 100644 Source/cmGlobalVisualStudio9IA64Generator.cxx create mode 100644 Source/cmGlobalVisualStudio9IA64Generator.h diff --git a/Modules/CMakeGenericSystem.cmake b/Modules/CMakeGenericSystem.cmake index 6615849b2..6cd8fe6a4 100644 --- a/Modules/CMakeGenericSystem.cmake +++ b/Modules/CMakeGenericSystem.cmake @@ -73,7 +73,7 @@ function(GetDefaultWindowsPrefixBase var) # the architecture of the targets being built to choose the right # default value for CMAKE_INSTALL_PREFIX. # - if("${CMAKE_GENERATOR}" MATCHES "Win64") + if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)") set(arch_hint "x64") elseif("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") set(arch_hint "x64") diff --git a/Modules/Platform/Windows-cl.cmake b/Modules/Platform/Windows-cl.cmake index 56582ff5d..ccccbc926 100644 --- a/Modules/Platform/Windows-cl.cmake +++ b/Modules/Platform/Windows-cl.cmake @@ -132,9 +132,9 @@ IF(MSVC_C_ARCHITECTURE_ID MATCHES 64) ELSE(MSVC_C_ARCHITECTURE_ID MATCHES 64) SET(CMAKE_CL_64 0) ENDIF(MSVC_C_ARCHITECTURE_ID MATCHES 64) -IF(CMAKE_FORCE_WIN64) +IF(CMAKE_FORCE_WIN64 OR CMAKE_FORCE_IA64) SET(CMAKE_CL_64 1) -ENDIF(CMAKE_FORCE_WIN64) +ENDIF(CMAKE_FORCE_WIN64 OR CMAKE_FORCE_IA64) IF("${MSVC_VERSION}" GREATER 1599) SET(MSVC_INCREMENTAL_DEFAULT ON) diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index ca063d54c..1c942ba4b 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/cmGlobalVisualStudio10IA64Generator.cxx b/Source/cmGlobalVisualStudio10IA64Generator.cxx new file mode 100644 index 000000000..5f70f6bba --- /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 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 000000000..a088272ef --- /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::vectorconst& languages, + cmMakefile *, bool optional); +}; +#endif diff --git a/Source/cmGlobalVisualStudio9IA64Generator.cxx b/Source/cmGlobalVisualStudio9IA64Generator.cxx new file mode 100644 index 000000000..d49739b9e --- /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 000000000..e33ee1550 --- /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/cmake.cxx b/Source/cmake.cxx index 45927cb04..cc798b721 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()] =