浏览代码

Tru64: Place cmOStringStream vtable uniquely (#10541)

GCC places the vtable in the object implementing the first non-pure,
non-inline virtual method.  Since the symbol is not weak on Tru64, make
the location unique by putting the destructor in a single object file.
Brad King 15 年之前
父节点
当前提交
f20d091a2c
共有 4 个文件被更改,包括 20 次插入1 次删除
  1. 1 0
      Source/CMakeLists.txt
  2. 16 0
      Source/cmStandardIncludes.cxx
  3. 2 1
      Source/cmStandardIncludes.h
  4. 1 0
      bootstrap

+ 1 - 0
Source/CMakeLists.txt

@@ -111,6 +111,7 @@ ENDIF(CMAKE_USE_ELF_PARSER)
 # Sources for CMakeLib
 #
 SET(SRCS
+  cmStandardIncludes.cxx
   cmBootstrapCommands.cxx
   cmCacheManager.cxx
   cmCacheManager.h

+ 16 - 0
Source/cmStandardIncludes.cxx

@@ -0,0 +1,16 @@
+/*============================================================================
+  CMake - Cross Platform Makefile Generator
+  Copyright 2000-2010 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 "cmStandardIncludes.h"
+#if !defined(CMAKE_NO_ANSI_STRING_STREAM)
+cmOStringStream::cmOStringStream() {}
+cmOStringStream::~cmOStringStream() {}
+#endif

+ 2 - 1
Source/cmStandardIncludes.h

@@ -241,7 +241,8 @@ typedef cmsys::String cmStdString;
 class cmOStringStream: public std::ostringstream
 {
 public:
-  cmOStringStream() {}
+  cmOStringStream();
+  ~cmOStringStream();
 private:
   cmOStringStream(const cmOStringStream&);
   void operator=(const cmOStringStream&);

+ 1 - 0
bootstrap

@@ -166,6 +166,7 @@ CMAKE_UNUSED_SOURCES="\
 "
 
 CMAKE_CXX_SOURCES="\
+  cmStandardIncludes \
   cmake  \
   cmakemain \
   cmakewizard  \