diff --git a/Source/cmGeneratedFileStream.cxx b/Source/cmGeneratedFileStream.cxx
index d0f2cc0b4f0558e5abbdd8e6b76f5693ff4e3f5d..63a0384aaf683e5e82c9df5a2b28ad31d9efeb65 100644
--- a/Source/cmGeneratedFileStream.cxx
+++ b/Source/cmGeneratedFileStream.cxx
@@ -107,13 +107,20 @@ void cmGeneratedFileStream::SetCompression(bool compression)
   m_Compress = compression;
 }
 
+//----------------------------------------------------------------------------
+void cmGeneratedFileStream::SetCompressionExtraExtension(bool ext)
+{
+  m_CompressExtraExtension = ext;
+}
+
 //----------------------------------------------------------------------------
 cmGeneratedFileStreamBase::cmGeneratedFileStreamBase():
   m_Name(),
   m_TempName(),
   m_CopyIfDifferent(false),
   m_Okay(false),
-  m_Compress(false)
+  m_Compress(false),
+  m_CompressExtraExtension(true)
 {
 }
 
@@ -123,7 +130,8 @@ cmGeneratedFileStreamBase::cmGeneratedFileStreamBase(const char* name):
   m_TempName(),
   m_CopyIfDifferent(false),
   m_Okay(false),
-  m_Compress(false)
+  m_Compress(false),
+  m_CompressExtraExtension(true)
 {
   this->Open(name);
 }
@@ -155,7 +163,7 @@ void cmGeneratedFileStreamBase::Open(const char* name)
 void cmGeneratedFileStreamBase::Close()
 {
   std::string resname = m_Name;
-  if ( m_Compress )
+  if ( m_CompressExtraExtension )
     {
     resname += ".gz";
     }
diff --git a/Source/cmGeneratedFileStream.h b/Source/cmGeneratedFileStream.h
index cb81d1d145bdc1c3916818abf2a13a26c2b42ef2..6d0637c0b256135bba5d17d102d312e09d0623d5 100644
--- a/Source/cmGeneratedFileStream.h
+++ b/Source/cmGeneratedFileStream.h
@@ -66,6 +66,9 @@ protected:
 
   // Whether the destionation file is compressed
   bool m_Compress;
+
+  // Whether the destionation file is compressed
+  bool m_CompressExtraExtension;
 };
 
 /** \class cmGeneratedFileStream
@@ -131,6 +134,11 @@ public:
    */
   void SetCompression(bool compression);
 
+  /**
+   * Set whether compression has extra extension
+   */
+  void SetCompressionExtraExtension(bool ext);
+
   /**
    * Set name of the file that will hold the actual output. This method allows
    * the output file to be changed during the use of cmGeneratedFileStream.