Browse Source

Add VisualStudio 9 and 10 generators for Itanium platform

Matej Hribernik 14 years ago
parent
commit
aed92ccea6

+ 1 - 1
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")

+ 2 - 2
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)

+ 4 - 0
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

+ 51 - 0
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);
+}

+ 40 - 0
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

+ 48 - 0
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");
+}

+ 50 - 0
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

+ 6 - 0
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()] =