Having discovered bugs in not only the header files that come with cxx 6.5 
but with the compiler itself (witness those changes I had to make to the 
templatised classes in frontends/controllers), I decided to uninstall this 
compiler and install cxx V6.3-020 instead; the latest "stable" version of the 
compiler.

I find that this compiler does /not/ suffer from the bugs apparent in 6.5 and 
that the resulting binary is far less bloated. My source tree is, therefore, 
identical to that in cvs for the first time since 1 June 2001 when lyxsum.C 
v1.19 was committed!

Having said that, the bugs present in the header files in 6.5 are also 
present in the header files of 6.3. Specificly:

deque operator=(deque const &) is broken.
the wrapper files for the c-library header files are missing lots of stuff. 
It appears that they forgot about much stuff that didn't get moved into 
namespace std.

I have submitted formal bug reports, together with test cases and possible 
fixes to [EMAIL PROTECTED] and await some response other than 

"Your problem report has been received by the Compaq C/C++ email bug
reporting system."

If, in the meantime, anyone else wants my patches to these header files, then 
you know where to find me.

Jean-Marc, I have also patched and compiled branch 1_2_X. Patch attached.

Finally, I have documented my experiences in INSTALL. Patch also attached. Ok 
to apply to cvs?

I hope that this draws a line under all this pain and suffering ;-)

Angus
Index: INSTALL
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/INSTALL,v
retrieving revision 1.38
diff -u -p -r1.38 INSTALL
--- INSTALL	11 Jun 2002 17:53:47 -0000	1.38
+++ INSTALL	13 Jun 2002 16:53:13 -0000
@@ -335,46 +335,8 @@ notify us.
     then you need to upgrade the version of the xforms library you have
     installed.
 
-  o It is possible to compile lyx with Tru64 Unix cxx compiler
-    version 6.2, provided one uses
-	CXX='cxx -std strict_ansi'
-	CXXFLAGS='-ptr /tmp/lyx_cxx_repository -g'
-	CC=cc
-
-    Note that this will not work when compiling directly from the cvs
-    repository, due to the tricks used by automake for dependencies. Ask
-    [EMAIL PROTECTED] for a workaround.
-
-    Or rather, it may well work if you are using automake 1.5 and autoconf 2.5
-    or greater, but you'll have to patch automake's depcomp first. (Depcomp
-    is a little shell script to automagically work out file dependencies
-    and it's broken for automake 1.5 and Tru64 :-(). The patch is to be found
-    in config/depcomp.diff.
-    Angus 22 March, 2002.
-
-  o On Tru64 Unix, you may have to compile with
-    --with-included-string to work around a Tru64 linker limitation
-    (the STL string template creates names which may be too long). We
-    also had reports that it helps with gcc 2.95.2 on solaris 2.6.
-
-    Using Tru64 Unix 4.0e, the std::string is fine.
-    Angus 22 March, 2002.
-
-  o On Tru64 Unix with cxx, you may have a compilation error in
-    lyx_main.C if you have GNU gettext installed. This is due to a bug
-    in gettext. To solve this, you can either (1) configure with
-    --with-included-gettext or (2) add -D__STDC__ to cxx flags.
-
-  o On Tru64 Unix 4.0e, the STL library routine std::count is broken
-    (/usr/include/cxx/algorithm.cc, line 289 on my machine).
-    It calculates "n" but does not return it! The fix is to add "return n;" to
-    the end of the (4-line long) routine.
-    Angus 22 March, 2002.
-
-  o On Tru64 Unix 4.0e, compilation of support/lyxsum.C dies horribly. The
-    work-around is to use the old version, 1.18, of this routine. Ask
-    Angus Leeming <[EMAIL PROTECTED]> for details.
-    Angus 22 March, 2002.
+  o On solaris 2.6, you may have to compile with --with-included-string
+    if compiling with gcc 2.95.2.
 
   o According to David Sundqvist <[EMAIL PROTECTED]>, some
     changes are needed to compile with aCC on HP-UX 10.20. These are the
@@ -385,6 +347,26 @@ notify us.
                              # which currently break.
 
     LIBS = -lforms -lXpm  -lSM -lICE -lc -lm -lX11 -lCsup # must link with Csup
-    LDFLAGS = -L/opt/aCC/lib # perhaps not needed. 
+    LDFLAGS = -L/opt/aCC/lib # perhaps not needed.
 
+  o LyX cannot be compiled on Tru64 Unix 4.0d or 4.0e with the default cxx
+    compiler. You should upgrade to at least cxx V6.2, to be found at
+    ftp::/ftp.compaq.com/pub/products/C-CXX/tru64/cxx/CXX622V40.tar. Users
+    running Tru64 Unix 4.0f and greater should have no real problems compiling
+    LyX.
+
+    cxx V6.2 will compile LyX out of the box.
+    cxx V6.3-020 is also known to work, although there are some minor problems
+    (missing prototypes) with the header files in /usr/include/cxx_cname and a
+    bug in /usr/include/cxx/deque. See Angus Leeming <[EMAIL PROTECTED]> for the
+    patch.
+    At the time of writing, cxx V6.5-026 is the latest cxx compiler. It is
+    /not/ recommended. Not only do the bugs in the system header files still
+    exist, but the compiler itself appears to be both buggy and extremely
+    bloated (trebles the size of the stripped LyX binary).
 
+    In order to compile LyX with the cxx compiler, you should run configure
+    with the following flags:
+	CXX='cxx -std strict_ansi'
+	CXXFLAGS='-nocleanup -ptr /tmp/lyx_cxx_repository -O2'
+	CC='cc -std1'

Attachment: patch.diff.gz
Description: GNU Zip compressed data

Reply via email to