From f20d091a2c5b61eeedfd604530f4554518d80d3f Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 10 Jun 2010 15:18:21 -0400 Subject: [PATCH] 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. --- Source/CMakeLists.txt | 1 + Source/cmStandardIncludes.cxx | 16 ++++++++++++++++ Source/cmStandardIncludes.h | 3 ++- bootstrap | 1 + 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 Source/cmStandardIncludes.cxx diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index dc73cecd2..dbbb558ea 100644 --- a/Source/CMakeLists.txt +++ b/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 diff --git a/Source/cmStandardIncludes.cxx b/Source/cmStandardIncludes.cxx new file mode 100644 index 000000000..a4bdb2e32 --- /dev/null +++ b/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 diff --git a/Source/cmStandardIncludes.h b/Source/cmStandardIncludes.h index 9b9cb3b3a..e8decbb96 100644 --- a/Source/cmStandardIncludes.h +++ b/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&); diff --git a/bootstrap b/bootstrap index c018b3c75..16877766b 100755 --- a/bootstrap +++ b/bootstrap @@ -166,6 +166,7 @@ CMAKE_UNUSED_SOURCES="\ " CMAKE_CXX_SOURCES="\ + cmStandardIncludes \ cmake \ cmakemain \ cmakewizard \