aspell-devel
[Top][All Lists]
Advanced

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

[aspell-devel] aspell-0.50.5 on Tru64, config.cpp compile error + patch


From: Tim Mooney
Subject: [aspell-devel] aspell-0.50.5 on Tru64, config.cpp compile error + patch
Date: Wed, 31 Mar 2004 18:15:45 -0600 (CST)

[I'm not subscribed to the aspell-devel list, so please Cc: me on any
responses]

I've run into a compile error when using the Tru64 C++ compiler with the
last few versions of aspell I've tried (up to and including 0.50.5), and
today I finally spent some time to try figure out what the problem is.
(I'm pretty weak in C++, so I get easily discouraged by error messages
like the ones from this problem... ;-) ).

System: Tru64 UNIX 5.1b
Compiler: vendor cxx

        Compaq C++ V6.5-039 for Compaq Tru64 UNIX V5.1B (Rev. 2650)
        Compiler Driver V6.5-039 (cxx) cxx Driver

CXXFLAGS: include at least

        -std gnu -D__USE_STD_IOSTREAM


(without those, there are additional problems)


Problem:  config.cpp fails with errors like these:

cxx: Error: config.cpp, line 413: more than one user-defined conversion from
          "acommon::PosibErr<acommon::String>" to "acommon::String" applies:
            function "acommon::PosibErr<Ret>::operator const Ret &() const
                      [with Ret=acommon::String]"
            function "acommon::String::String(const
                      acommon::PosibErr<acommon::String> &)"
            String s1 = retrieve(replace);
------------------------^
cxx: Error: config.cpp, line 414: more than one user-defined conversion from
          "acommon::PosibErr<acommon::String>" to "acommon::String" applies:
            function "acommon::PosibErr<Ret>::operator const Ret &() const
                      [with Ret=acommon::String]"
            function "acommon::String::String(const
                      acommon::PosibErr<acommon::String> &)"
            String s2 = retrieve(second);
------------------------^


and similar errors from lines 417, 420, 426, 427, and 775.

Doing some Googling, I turned up:

        http://www.mail-archive.com/address@hidden/msg00109.html

which seemed really close, but Kevin's patch was already included in the
source, so something else was needed.

It turns out that the #ifdef for __SUNPRO_CC is also the right move for
Tru64's C++ compiler.  With the following patch, all of the source files
compile.  I'm running into a weird linking error that I think may be a
libtool problem (it's not even attempting to create the libaspell.so.15.0.3,
but it is creating the symlinks that point to it), so I haven't yet been
able to test anything.

There are also several warnings (most of them pretty harmless but easy to
fix, the remainder worth looking at), and I'll send along patches for the
ones I know how to fix when I have time (next week).

Thanks!

Tim


diff -ur aspell-0.50.5.orig/common/posib_err.hpp 
aspell-0.50.5/common/posib_err.hpp
--- aspell-0.50.5.orig/common/posib_err.hpp     2004-01-30 18:58:52.000000000 
-0600
+++ aspell-0.50.5/common/posib_err.hpp  2004-03-31 17:29:32.000000000 -0600
@@ -201,7 +201,9 @@
   //
   //
   //
-#ifndef __SUNPRO_CC
+#if !defined(__SUNPRO_CC) && !defined(__DECCXX)
+  // This causes a conflict with the copy constructor for both the
+  // Sun and Tru64 C++ compilers
   inline String::String(const PosibErr<String> & other)
     : std::string(other.data) {}
 #endif
diff -ur aspell-0.50.5.orig/common/string.hpp aspell-0.50.5/common/string.hpp
--- aspell-0.50.5.orig/common/string.hpp        2004-01-30 18:59:45.000000000 
-0600
+++ aspell-0.50.5/common/string.hpp     2004-03-31 17:28:35.000000000 -0600
@@ -28,8 +28,9 @@
     String(ParmString s) : std::string(s) {}
     String(const std::string & s) : std::string(s) {}
     String(const String & other) : std::string(other) {}
-#ifndef __SUNPRO_CC
-    // This causes a conflict with the copy constructor on Suns comp
+#if !defined(__SUNPRO_CC) && !defined(__DECCXX)
+    // This causes a conflict with the copy constructor for both the
+    // Sun and Tru64 C++ compilers
     inline String(const PosibErr<String> & other);
 #endif
     String & operator= (const char * s) {

-- 
Tim Mooney                              address@hidden
Information Technology Services         (701) 231-1076 (Voice)
Room 242-J6, IACC Building              (701) 231-8541 (Fax)
North Dakota State University, Fargo, ND 58105-5164




reply via email to

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