From 0a1ed443f85ba1ffec47a18e19386294b9cb86dc Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 30 Mar 2000 05:29:21 +0000 Subject: [PATCH] Add configure checks to see if 'using namespace std' and '#include ' work in the local C++ compiler. --- src/Makefile.global.in | 4 ++-- src/configure.in | 27 +++++++++++++++++++++++++-- src/include/config.h.in | 9 ++++++++- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 658a2b1d89..e721282f1a 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -7,7 +7,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.67 2000/03/08 01:58:15 momjian Exp $ +# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.68 2000/03/30 05:29:20 tgl Exp $ # # NOTES # Essentially all Postgres make files include this file and use the @@ -105,7 +105,7 @@ ODBCINST= $(POSTGRESDIR) # (that is, prepend '#', don't set it to "0" or "no"). # Compile libpq++ -@HAVECXX@ +HAVE_Cplusplus=@HAVECXX@ # Comment out ENFORCE_ALIGNMENT if you do NOT want unaligned access to # multi-byte types to generate a bus error. diff --git a/src/configure.in b/src/configure.in index 2eb07db88c..9139b8da96 100644 --- a/src/configure.in +++ b/src/configure.in @@ -488,7 +488,7 @@ AC_SUBST(USE_ODBC) AC_SUBST(MULTIBYTE) dnl Check for C++ support (allow override if needed) -HAVECXX='HAVE_Cplusplus=true' +HAVECXX='true' AC_ARG_WITH(CXX, [ --with-CXX=compiler use specific C++ compiler --without-CXX prevent building C++ code ], @@ -498,7 +498,7 @@ AC_ARG_WITH(CXX, AC_MSG_ERROR([*** You must supply an argument to the --with-CC option.]) ;; n | no) - HAVECXX='HAVE_Cplusplus=false' + HAVECXX='false' ;; esac CXX="$withval" @@ -506,6 +506,29 @@ AC_ARG_WITH(CXX, [ AC_PROG_CXX]) AC_SUBST(HAVECXX) +if test "$HAVECXX" = 'true' ; then + AC_LANG_CPLUSPLUS + + dnl check whether "using namespace std" works on this C++ compiler + AC_MSG_CHECKING([for namespace std in C++]) + AC_TRY_COMPILE([#include +#include +using namespace std; +], [], + [AC_DEFINE(HAVE_NAMESPACE_STD) AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) + + dnl check whether "#include " works on this C++ compiler + AC_MSG_CHECKING([for include in C++]) + AC_TRY_COMPILE([#include +#include +#include +], [], + [AC_DEFINE(HAVE_CXX_STRING_HEADER) AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no)]) + +fi + dnl make sure we revert to C compiler, not C++, for subsequent tests AC_LANG_C diff --git a/src/include/config.h.in b/src/include/config.h.in index b7a95be0ed..028acf8128 100644 --- a/src/include/config.h.in +++ b/src/include/config.h.in @@ -8,7 +8,7 @@ * or in config.h afterwards. Of course, if you edit config.h, then your * changes will be overwritten the next time you run configure. * - * $Id: config.h.in,v 1.110 2000/03/17 05:29:06 tgl Exp $ + * $Id: config.h.in,v 1.111 2000/03/30 05:29:21 tgl Exp $ */ #ifndef CONFIG_H @@ -529,6 +529,13 @@ extern void srandom(unsigned int seed); /* Define if POSIX signal interface is available */ #undef USE_POSIX_SIGNALS +/* Define if C++ compiler accepts "using namespace std" */ +#undef HAVE_NAMESPACE_STD + +/* Define if C++ compiler accepts "#include " */ +#undef HAVE_CXX_STRING_HEADER + + /* * Pull in OS-specific declarations (using link created by configure) */