On Thursday 13 June 2002 6:13 pm, Angus Leeming wrote:
> 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."

They got back to me:
------------------------------------------------------
When you compile in strict_ansi mode, only identifiers defined in the
C++ standard for a particular cname header are exposed by the header.
In general, they are the identifiers defined in "International Standard
ISO/IEC 9899:1990(E) Programming Languages - C" (so called C89) and, as
is the case for <cerrno>, in ISO C Amendment 1 also.

pid_t datatype, and the kill() function are not defined by any C or C++
standard. As for errno, the only errno macros defined by the C standard
are: EDOM, EILSEQ and ERANGE (EILSEQ comes from ISO C Amendment 1).

You can still get a clean compilation in strict_ansi mode if you
compile with -nopure_cname switch.
------------------------------------------------------

I have therefore reflected this in INSTALL (attached). The only remaining bug 
with cxx V6.3 is the one in deque operator=(deque const &).

Ok to commit this to cvs head and to 1_2_X?

Incidentally, Jean-Marc, my patch to 1_2_X is still valid.

Angus
Index: ChangeLog
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/ChangeLog,v
retrieving revision 1.865
diff -u -p -r1.865 ChangeLog
--- ChangeLog	13 Jun 2002 13:43:47 -0000	1.865
+++ ChangeLog	13 Jun 2002 19:19:49 -0000
@@ -1,3 +1,7 @@
+2002-06-13  Angus Leeming  <[EMAIL PROTECTED]>
+
+	* INSTALL: how to compile with Compaq cxx on Tru64 Unix.
+
 2002-06-12  Angus Leeming  <[EMAIL PROTECTED]>
 
 	* configure.in: add xforms/forms/*.lo to the xforms version of
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 19:19:50 -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,29 @@ 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 is 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='-nopure_cname -nocleanup -ptr /tmp/lyx_cxx_repository -O2'
+	CC='cc -std1'
+    The -nopure_cname flag is needed for compilers V6.3 and above because
+    LyX makes use of functions like popen, pclose that are defined in the
+    c version of <stdio.h> but are not formally part of any c/c++ standard.
+    They are not, therefore, included in the <cstdio> header file.

Reply via email to