diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4d0fb0e869c7f1029717e44145ba0fa97096f268..8b5befc5f3fcae8fa14b5934159e42c964fd703c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,6 +14,11 @@ IF(NOT CMAKE_HAS_ANSI_STRING_STREAM)
   SET(CMAKE_NO_ANSI_STRING_STREAM 1)
 ENDIF(NOT CMAKE_HAS_ANSI_STRING_STREAM)
 
+IF(KWSYS_FORCE_OLD_STREAMS)
+  SET(CMAKE_NO_ANSI_STREAM_HEADERS 1)
+  SET(CMAKE_NO_ANSI_STRING_STREAM 1)
+ENDIF(KWSYS_FORCE_OLD_STREAMS)
+
 SET(KWSYS_NO_STD_NAMESPACE ${CMAKE_NO_STD_NAMESPACE})
 SET(KWSYS_NO_ANSI_STREAM_HEADERS ${CMAKE_NO_ANSI_STREAM_HEADERS})
 SET(KWSYS_NO_ANSI_STRING_STREAM ${CMAKE_NO_ANSI_STRING_STREAM})
diff --git a/Configure.hxx.in b/Configure.hxx.in
index cd45170f4f730bce5492a2297949f8518f066292..d656abc173d2135e88f5873941907cda3d2d1234 100644
--- a/Configure.hxx.in
+++ b/Configure.hxx.in
@@ -23,6 +23,10 @@
 #cmakedefine KWSYS_NO_ANSI_STRING_STREAM
 #cmakedefine KWSYS_NO_ANSI_FOR_SCOPE
 
+#if defined(__GNUC__) && (__GNUC__ < 3)
+# define KWSYS_FAKE_STD_NAMESPACE
+#endif
+
 #if defined(KWSYS_NO_STD_NAMESPACE)
 # define kwsys_std
 #else
diff --git a/kwsys_std_fstream.h.in b/kwsys_std_fstream.h.in
index 82e6b7cc6839a79b9cbfbbe91c4c9cbf0bc6b7fc..6988f6a8bf8a97d3fce65dd5949f86a2d8f61179 100644
--- a/kwsys_std_fstream.h.in
+++ b/kwsys_std_fstream.h.in
@@ -28,8 +28,7 @@
 # include <fstream>
 #else
 # include <fstream.h>
-# if !defined(KWSYS_NO_STD_NAMESPACE)
-
+# if !defined(KWSYS_NO_STD_NAMESPACE) && !defined(KWSYS_FAKE_STD_NAMESPACE)
 namespace std
 {
   using ::ostream;
@@ -40,7 +39,6 @@ namespace std
   using ::endl;
   using ::flush;
 }
-
 # endif
 #endif
 
diff --git a/kwsys_std_iosfwd.h.in b/kwsys_std_iosfwd.h.in
index 0758135de19fb55cc4ed906c89e142e9cba810a3..a0bd917bbbdfe02f8f5e04e11a18a8f53d1a3c08 100644
--- a/kwsys_std_iosfwd.h.in
+++ b/kwsys_std_iosfwd.h.in
@@ -33,7 +33,7 @@ class ios;
 class istream;
 class ofstream;
 class ostream;
-# if !defined(KWSYS_NO_STD_NAMESPACE)
+# if !defined(KWSYS_NO_STD_NAMESPACE) && !defined(KWSYS_FAKE_STD_NAMESPACE)
 namespace std
 {
   using ::fstream;
diff --git a/kwsys_std_iostream.h.in b/kwsys_std_iostream.h.in
index 40a41c69ebd564ff01ee7aa4b21bebf9b03f9625..c5d7b5ef7a2af3c1400f5fca21ffb4e9918953e2 100644
--- a/kwsys_std_iostream.h.in
+++ b/kwsys_std_iostream.h.in
@@ -28,8 +28,7 @@
 # include <iostream>
 #else
 # include <iostream.h>
-# if !defined(KWSYS_NO_STD_NAMESPACE)
-
+# if !defined(KWSYS_NO_STD_NAMESPACE) && !defined(KWSYS_FAKE_STD_NAMESPACE)
 namespace std
 {
   using ::ostream;
@@ -41,7 +40,6 @@ namespace std
   using ::endl;
   using ::flush;
 }
-
 # endif
 #endif
 
diff --git a/kwsys_std_sstream.h.in b/kwsys_std_sstream.h.in
index 2f0a976f91e5312d90c6dc0d02e53d1df794edc4..a9838da459171b58e0839d56fbec4eeff50cf6e5 100644
--- a/kwsys_std_sstream.h.in
+++ b/kwsys_std_sstream.h.in
@@ -37,8 +37,7 @@
 #  include <strstream>
 # else
 #  include <strstream.h>
-#  if !defined(KWSYS_NO_STD_NAMESPACE)
-
+#  if !defined(KWSYS_NO_STD_NAMESPACE) && !defined(KWSYS_FAKE_STD_NAMESPACE)
 namespace std
 {
   using ::ostream;
@@ -50,7 +49,6 @@ namespace std
   using ::ends;
   using ::flush;
 }
-
 #  endif
 # endif
 # ifdef _MSC_VER