libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: HEAD: make tagdemo use new-style headers and namespaces if possible


From: Ralf Wildenhues
Subject: Re: HEAD: make tagdemo use new-style headers and namespaces if possible
Date: Mon, 12 Sep 2005 18:24:40 +0200
User-agent: Mutt/1.4.1i

Hi Gary, Bob,

* Gary V. Vaughan wrote on Sat, Sep 10, 2005 at 05:04:45PM CEST:
> Ralf Wildenhues wrote:
> > I'd like this question clarified before I start
> > reimplementing:
> > 
> > * Ralf Wildenhues wrote on Thu, Sep 08, 2005 at 06:25:14PM CEST:
> > 
> >>What should we do with the C++ tests in the new-style test suite?
> >>(ordered in my decreasing order of my personal preference)
> >>- remove use of iostream
*snip*

> >>If nobody objects, I'll do the first.
> 
> The first seems perfectly reasonable.  Please go right ahead!

I have applied this patch to HEAD, after testing it on Solaris.  :)
tagdemo has a straightforward reimplementation of the tests now.

Thanks guys,
Ralf

        Make tagdemo work smoothly with both pre- and ISO C++ compilers,
        and remove all use of libstdc from other tests.

        * tests/tagdemo/configure.ac (HAVE_NAMESPACES, HAVE_IOSTREAM):
        New tests for ISO C++ features.  Reimplementation of similar
        macros from the autoconf archive.
        * tests/tagdemo/foo.cpp, tests/tagdemo/main.cpp: Adjusted.
        * tests/am-subdir.at, tests/template.at: Do not use iostream.

Index: tests/am-subdir.at
===================================================================
RCS file: /cvsroot/libtool/libtool/tests/am-subdir.at,v
retrieving revision 1.5
diff -u -r1.5 am-subdir.at
--- tests/am-subdir.at  27 Apr 2005 18:18:10 -0000      1.5
+++ tests/am-subdir.at  12 Sep 2005 15:44:29 -0000
@@ -129,37 +129,27 @@
 test -d subdir || { rm -f subdir && mkdir subdir; }
 
 AT_DATA([[subdir/sub.hxx]],
-[[class libsub { public: void sub (void); };
+[[class libsub { public: int sub (void); };
 ]])
 
 AT_DATA([[subdir/main.cxx]],
-[[#include <iostream.h>
-#include "sub.hxx"
+[[#include "sub.hxx"
 
 int main (int, char *[])
 {
   libsub SUB;
-
-  cout << "Welcome to GNU Libtool subdir-objects C++ test!" << endl;
-  SUB.sub();
-  return 0;
+  return SUB.sub() != 27;
 }
 ]])
 
 AT_DATA([[subdir/sub.cxx]],
-[[#include <iostream.h>
-#include "sub.hxx"
-
-void libsub::sub (void) { cout << "** This is libsub::sub **" << endl; }
-]])
+[[#include "sub.hxx"
 
-AT_DATA(expout,
-[[Welcome to GNU Libtool subdir-objects C++ test!
-** This is libsub::sub **
+int libsub::sub (void) { return 27; }
 ]])
 
 LT_AT_BOOTSTRAP
 "${MAKE-make}"
-LT_AT_EXEC_CHECK([subdir/subdemo], 0, expout)
+LT_AT_EXEC_CHECK([subdir/subdemo], 0)
 
 AT_CLEANUP
Index: tests/template.at
===================================================================
RCS file: /cvsroot/libtool/libtool/tests/template.at,v
retrieving revision 1.7
diff -u -r1.7 template.at
--- tests/template.at   26 Aug 2005 13:48:27 -0000      1.7
+++ tests/template.at   12 Sep 2005 15:44:29 -0000
@@ -62,18 +62,12 @@
 ]])
 
 AT_DATA(prog.cpp,
-[[#include <iostream>
-#include "alib.h"
+[[#include "alib.h"
 #include "aclib.h"
 
-using namespace std;
-
 int main()
 {
-  cout << "a sample prog" << endl;
-  cout << "f(3) = " << f(3) << endl;
-  cout << "cf(3) = " << cf(3) << endl;
-  return (f(3) + 3 - cf(3) != 0);
+  return f(3) + 3 - cf(3) != 0;
 }
 ]])
 
Index: tests/tagdemo/configure.ac
===================================================================
RCS file: /cvsroot/libtool/libtool/tests/tagdemo/configure.ac,v
retrieving revision 1.12
diff -u -r1.12 configure.ac
--- tests/tagdemo/configure.ac  23 Aug 2005 01:49:37 -0000      1.12
+++ tests/tagdemo/configure.ac  12 Sep 2005 15:44:29 -0000
@@ -45,6 +45,30 @@
 AC_PROG_CXX
 AC_PROG_CXXCPP
 
+# Check for namespace support and new-style headers
+AC_LANG_PUSH([C++])
+AC_MSG_CHECKING([whether the compiler implements namespaces])
+AC_COMPILE_IFELSE(
+    [AC_LANG_PROGRAM([[namespace A { namespace B { int i = 0; }}]],
+                    [[using namespace A::B; return i;]])],
+    [AC_MSG_RESULT([yes])
+     AC_DEFINE([HAVE_NAMESPACES],[1],
+              [define if the compiler implements namespaces])],
+    [AC_MSG_RESULT([no])])
+
+AC_MSG_CHECKING([whether the compiler has ISO C++ iostream])
+AC_COMPILE_IFELSE(
+    [AC_LANG_PROGRAM([[#include <iostream>
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif ]], [[cout << "bingo\n"; return 0;]])],
+    [AC_MSG_RESULT([yes])
+     AC_DEFINE([HAVE_IOSTREAM],[1],
+              [define if the compiler has ISO C++ iostream])],
+    [AC_MSG_RESULT([no])])
+AC_LANG_POP([C++])
+
+
 # As of the writing of this demo, GNU Autoconf's AC_OBJEXT and
 # AC_EXEEXT macros only works for C compilers!
 # Libtool's setup macro calls AC_OBJEXT and AC_EXEEXT without setting
Index: tests/tagdemo/foo.cpp
===================================================================
RCS file: /cvsroot/libtool/libtool/tests/tagdemo/foo.cpp,v
retrieving revision 1.2
diff -u -r1.2 foo.cpp
--- tests/tagdemo/foo.cpp       22 Apr 2005 10:10:31 -0000      1.2
+++ tests/tagdemo/foo.cpp       12 Sep 2005 15:44:29 -0000
@@ -20,7 +20,14 @@
 // USA.
 
 #include "foo.h"
-#include <iostream.h>
+#ifdef HAVE_IOSTREAM
+# include <iostream>
+#else
+# include <iostream.h>
+#endif
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif
 
 #ifdef HAVE_MATH_H
 #include <math.h>
Index: tests/tagdemo/main.cpp
===================================================================
RCS file: /cvsroot/libtool/libtool/tests/tagdemo/main.cpp,v
retrieving revision 1.3
diff -u -r1.3 main.cpp
--- tests/tagdemo/main.cpp      22 Apr 2005 10:10:31 -0000      1.3
+++ tests/tagdemo/main.cpp      12 Sep 2005 15:44:29 -0000
@@ -23,7 +23,14 @@
 #include "foo.h"
 #include "baz.h"
 #include "conv.h"
-#include <iostream.h>
+#ifdef HAVE_IOSTREAM
+# include <iostream>
+#else
+# include <iostream.h>
+#endif
+#ifdef HAVE_NAMESPACES
+using namespace std;
+#endif
 
 
 int




reply via email to

[Prev in Thread] Current Thread [Next in Thread]