diff options
author | Brad King <brad.king@kitware.com> | 2006-07-18 17:02:40 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2006-07-18 17:02:40 (GMT) |
commit | 475c37b6a51fc28db2af42a9a14881d2a5051dd2 (patch) | |
tree | 2edc325899134472a6d6fd25c0f2a79a76813cb1 /Source | |
parent | dd8247e324ba4c97ffc2f4649d52b1a57c74aceb (diff) | |
download | CMake-475c37b6a51fc28db2af42a9a14881d2a5051dd2.zip CMake-475c37b6a51fc28db2af42a9a14881d2a5051dd2.tar.gz CMake-475c37b6a51fc28db2af42a9a14881d2a5051dd2.tar.bz2 |
COMP: Fix references to cin, cout, cerr, and clog in case of HP aCC compiler with -mt flag.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/kwsys/kwsys_ios_iostream.h.in | 56 |
1 files changed, 53 insertions, 3 deletions
diff --git a/Source/kwsys/kwsys_ios_iostream.h.in b/Source/kwsys/kwsys_ios_iostream.h.in index c00596f..2cc4b06 100644 --- a/Source/kwsys/kwsys_ios_iostream.h.in +++ b/Source/kwsys/kwsys_ios_iostream.h.in @@ -28,17 +28,67 @@ # include <iostream.h> #endif +// The HP implementation of iostream defines cin, cout, cerr, and clog +// as macros in order to do thread-private streams. +// See /opt/aCC/include/iostream/iostream.h for details. +// This block redefines the macros in a safe way that is also compatible +// with the HP definitions and the using declarations below. + +#if !@KWSYS_NAMESPACE@_IOS_USE_SSTREAM +# if defined(__HP_aCC) && (defined(HP_THREAD_SAFE) || defined(_THREAD_SAFE)) +# if defined(cin) && !defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CIN) +# define @KWSYS_NAMESPACE@_IOS_HP_HACK_CIN +# undef cin +# define cin __tcin.ref() +# endif +# if defined(cout) && !defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_COUT) +# define @KWSYS_NAMESPACE@_IOS_HP_HACK_COUT +# undef cout +# define cout __tcout.ref() +# endif +# if defined(cerr) && !defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CERR) +# define @KWSYS_NAMESPACE@_IOS_HP_HACK_CERR +# undef cerr +# define cerr __tcerr.ref() +# endif +# if defined(clog) && !defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CLOG) +# define @KWSYS_NAMESPACE@_IOS_HP_HACK_CLOG +# undef clog +# define clog __tclog.ref() +# endif +# endif +#endif + +// If using our own sstream emulation code, put the standard +// streams in the same namespace. #if !@KWSYS_NAMESPACE@_IOS_USE_SSTREAM namespace @KWSYS_NAMESPACE@_ios { using @KWSYS_NAMESPACE@_ios_namespace::ostream; using @KWSYS_NAMESPACE@_ios_namespace::istream; using @KWSYS_NAMESPACE@_ios_namespace::ios; - using @KWSYS_NAMESPACE@_ios_namespace::cout; - using @KWSYS_NAMESPACE@_ios_namespace::cerr; - using @KWSYS_NAMESPACE@_ios_namespace::cin; using @KWSYS_NAMESPACE@_ios_namespace::endl; using @KWSYS_NAMESPACE@_ios_namespace::flush; +# if defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CIN) + using @KWSYS_NAMESPACE@_ios_namespace::__tcin; +# else + using @KWSYS_NAMESPACE@_ios_namespace::cin; +# endif +# if defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_COUT) + using @KWSYS_NAMESPACE@_ios_namespace::__tcout; +# else + using @KWSYS_NAMESPACE@_ios_namespace::cout; +# endif +# if defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CERR) + using @KWSYS_NAMESPACE@_ios_namespace::__tcerr; +# else + using @KWSYS_NAMESPACE@_ios_namespace::cerr; +# endif +# if defined(@KWSYS_NAMESPACE@_IOS_HP_HACK_CLOG) + using @KWSYS_NAMESPACE@_ios_namespace::__tclog; +# else + using @KWSYS_NAMESPACE@_ios_namespace::clog; +# endif } #endif |