Fix compiliation with Compaq cxx 6.3 and above.

Document a compilation HOWTO in INSTALL.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH-1_2_X@4407 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Angus Leeming 2002-06-17 10:25:27 +00:00
parent d5b4ad899e
commit 495a79fea6
52 changed files with 342 additions and 94 deletions

View File

@ -1,3 +1,7 @@
2002-06-14 Angus Leeming <leeming@lyx.org>
* INSTALL: how to compile with Compaq cxx on Tru64 Unix.
2002-06-07 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr>
* configure.in: do the checking for xforms outside of the

103
INSTALL
View File

@ -335,56 +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
Jean-Marc.Lasgouttes@inria.fr 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 <leeming@lyx.org> for details.
Angus 22 March, 2002.
o Some systems lack functions that LyX needs. To fix this, configure
tries to link against the -liberty library, if it is available.
If you experience problems with missing symbols at link time, you
could try to install libiberty.a, which comes with several GNU
packages (in particular libg++). In any case, please report your
problems to lyx-devel@lists.lyx.org.
The option --without-liberty disable the detection of -liberty. It
is meant for debugging purpose only.
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 <David_Sundqvist@vd.volvo.se>, some
changes are needed to compile with aCC on HP-UX 10.20. These are the
@ -395,6 +347,55 @@ 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 can be compiled on Tru64 Unix with either GNU's gcc or the default
Compaq cxx compiler.
There are no Alpha-specific problems with gcc.
The following notes all refer to compilation with the Compaq cxx compiler.
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 that will break compilation in FormPreferences.C.
Compaq are investigating, but a patch that works /now/ is:
--- /usr/include/cxx/deque_safe Mon Mar 4 21:09:50 2002
+++ /usr/include/cxx/deque Mon Mar 4 21:09:00 2002
@@ -570,9 +570,11 @@
{
if (size() >= x.size())
erase(copy(x.begin(), x.end(), begin()), end());
- else
- copy(x.begin() + size(), x.end(),
- inserter(*this,copy(x.begin(),x.begin()+size(),begin())));
+ else {
+ const_iterator mid = x.begin() + difference_type(size());
+ copy(x.begin(), mid, begin());
+ insert(end(), mid, x.end());
+ }
}
return *this;
}
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.

View File

@ -75,6 +75,14 @@
extern string current_layout;
#ifndef CXX_GLOBAL_CSTD
using std::tm;
using std::localtime;
using std::time;
using std::setlocale;
using std::strftime;
#endif
using std::vector;
using std::find_if;
using std::find;

View File

@ -1,8 +1,49 @@
2002-06-13 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.3.
* BufferView_pimpl.C:
* ColorHandler.C
* DepTable.C:
* LaTeX.C:
* buffer.C:
* converter.C:
* encoding.C:
* lyx_gui.C:
* lyx_main.C:
* lyxtextclasslist.C:
* minibuffer.C:
* sp_spell.[Ch]:
* tabular_funcs.C:
* vc-backend.C:
* vspace.C:
all c-library variables have been moved into namespace std. Wrap
using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
* XFormsView.C:
* lyxlength.C:
* tabular-old.C:
* tabular.C:
Add a using std::abs declaration.
* kbmap.h (modifier_pair):
* paragraph.h (InsetTable, InsetList):
* lyxfont.h (FontBits):
type definition made public.
* bufferlist.C (emergencyWriteAll): the compiler complains that
there is more than one possible lyx::class_fun template to choose from.
I re-named the void specialisation as lyx::void_class_fun.
* lyxfont.C (FontBits' operator==, operator!=): taken out of class.
* tabular_funcs.[Ch]: move the #include of lstrings.h into the header
file for the templatised write_attribute method.
2002-06-14 Allan Rae <rae@lyx.org>
* paragraph.C (InsetIterator): fix #432 by fixing iterator selection.
2002-06-12 "Andrew Zabolotny" <zap@cobra.ru>
2002-06-12 Andrew Zabolotny <zap@cobra.ru>
* kbmap.C (getiso): add support for cyrillic and greek

View File

@ -22,6 +22,10 @@
#include <cmath>
#ifndef CXX_GLOBAL_CSTD
using std::pow;
#endif
using std::endl;

View File

@ -32,6 +32,10 @@
#include <fstream>
#include <ctime>
#ifndef CXX_GLOBAL_CSTD
using std::time;
#endif
using std::make_pair;
using std::ofstream;
using std::ifstream;

View File

@ -34,6 +34,10 @@
#include "support/path.h"
#include <cstdio> // sscanf
#ifndef CXX_GLOBAL_CSTD
using std::sscanf;
#endif
using std::ifstream;
using std::getline;
using std::endl;

View File

@ -31,6 +31,7 @@
#include "lyxfunc.h"
#include "BufferView.h"
using std::abs;
using std::endl;
//extern void AutoSave(BufferView *);

View File

@ -110,6 +110,9 @@
#include <locale>
#endif
#ifndef CXX_GLOBAL_CSTD
using std::pow;
#endif
using std::ostream;
using std::ofstream;

View File

@ -294,7 +294,7 @@ void BufferList::updateIncludedTeXfiles(string const & mastertmpdir)
void BufferList::emergencyWriteAll()
{
for_each(bstore.begin(), bstore.end(),
lyx::class_fun(*this, &BufferList::emergencyWrite));
lyx::void_class_fun(*this, &BufferList::emergencyWrite));
}

View File

@ -34,6 +34,10 @@
#include "support/path.h"
#include "support/systemcall.h"
#ifndef CXX_GLOBAL_CSTD
using std::isdigit;
#endif
using std::vector;
using std::queue;
using std::endl;

View File

@ -17,6 +17,10 @@
#include "encoding.h"
#include "debug.h"
#ifndef CXX_GLOBAL_CSTD
using std::strtol;
#endif
using std::endl;
Encodings encodings;

View File

@ -17,6 +17,10 @@
#include <cerrno>
#ifndef CXX_GLOBAL_CSTD
using std::strerror;
#endif
using std::endl;
using std::pair;
using std::make_pair;

View File

@ -1,3 +1,11 @@
2002-06-13 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.3.
* Alert.C: all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
* Toolbar.h (Pimpl): type definition made public.
2002-04-08 Lars Gullik Bjønnes <larsbj@birdstep.com>
* Makefile.am (DIST_SUBDIRS): use this instead of EXTRA_DIST

View File

@ -62,8 +62,9 @@ public:
/// Erase the layout list
void clearLayoutList();
private:
/// Compaq cxx 6.5 requires this to be public
struct Pimpl;
private:
///
friend struct Toolbar::Pimpl;
///

View File

@ -1,3 +1,8 @@
2002-06-13 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.3.
* ControlInset.tmpl: #include a couple of headers.
2002-05-21 Angus Leeming <a.leeming@ic.ac.uk>
* frnt_lang.C (getLanguageData): change a couple of N_() to _().

View File

@ -11,8 +11,12 @@
*/
#include "ControlInset.h"
#include "support/LAssert.h"
#include "ButtonControllerBase.h"
#include "ViewBase.h"
#include "buffer.h"
#include "debug.h"
#include "LyXView.h"
#include "support/LAssert.h"
template <class Inset, class Params>

View File

@ -1,3 +1,12 @@
2002-06-13 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.3.
* Color.C:
* DropDown.C:
* FormThesaurus.C:
all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
2002-06-12 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr>
* xformsGImage.h: do not rely on FLIMAGE_H_LOCATION anymore

View File

@ -17,6 +17,10 @@
#include <cmath> // floor
#include FORMS_H_LOCATION
#ifndef CXX_GLOBAL_CSTD
using std::floor;
#endif
using std::max;
using std::min;

View File

@ -19,6 +19,10 @@
#include <cctype>
#ifndef CXX_GLOBAL_CSTD
using std::isprint;
#endif
using std::vector;

View File

@ -21,6 +21,10 @@
#include "form_thesaurus.h"
#include "debug.h"
#ifndef CXX_GLOBAL_CSTD
using std::isupper;
using std::islower;
#endif
using std::vector;

View File

@ -1,3 +1,12 @@
2002-06-13 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.3.
* GraphicsConverter.h: forward declare class ConvProcess.
* GraphicsImageXPM.C:
all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
2002-06-10 Herbert Voss <voss@lyx.org>
* GraphicsImageXPM.C (convertTo7chars): get another special color

View File

@ -33,6 +33,8 @@
namespace grfx {
class ConvProcess;
class GConverter : boost::noncopyable {
public:

View File

@ -25,6 +25,14 @@
#include <cmath> // cos, sin
#include <cstdlib> // malloc, free
#ifndef CXX_GLOBAL_CSTD
using std::cos;
using std::sin;
using std::malloc;
using std::strcpy;
using std::strlen;
#endif
namespace grfx {
/// Access to this class is through this static method.

View File

@ -1,3 +1,14 @@
2002-06-14 Angus Leeming <leeming@lyx.org>
* inseetexternal.C: remove the using std::difftime declaration.
2002-06-13 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.3.
* insetexternal.C:
all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
2002-06-12 Vitaly Lipatov <LAV@VL3143.spb.edu>
* insetquotes.C (draw): fix drawing of double quotes

View File

@ -42,6 +42,10 @@
#include <cstdlib>
#include <fcntl.h>
#ifndef CXX_GLOBAL_CSTD
using std::exit;
#endif
using std::endl;
extern LyXServer * lyxserver;

View File

@ -51,7 +51,9 @@
using std::endl;
#ifndef CXX_GLOBAL_CSTD
using std::exit;
using std::signal;
using std::system;
#endif
extern void LoadLyXFile(string const &);

View File

@ -139,23 +139,18 @@ LyXFont::FontBits LyXFont::ignore = {
IGNORE };
bool LyXFont::FontBits::operator==(LyXFont::FontBits const & fb1) const
bool operator==(LyXFont::FontBits const & lhs,
LyXFont::FontBits const & rhs)
{
return fb1.family == family &&
fb1.series == series &&
fb1.shape == shape &&
fb1.size == size &&
fb1.color == color &&
fb1.emph == emph &&
fb1.underbar == underbar &&
fb1.noun == noun &&
fb1.number == number;
}
bool LyXFont::FontBits::operator!=(LyXFont::FontBits const & fb1) const
{
return !(fb1 == *this);
return lhs.family == rhs.family &&
lhs.series == rhs.series &&
lhs.shape == rhs.shape &&
lhs.size == rhs.size &&
lhs.color == rhs.color &&
lhs.emph == rhs.emph &&
lhs.underbar == rhs.underbar &&
lhs.noun == rhs.noun &&
lhs.number == rhs.number;
}

View File

@ -326,13 +326,11 @@ public:
/// Converts logical attributes to concrete shape attribute
LyXFont::FONT_SHAPE realShape() const;
private:
///
/** Compaq cxx 6.5 requires that the definition be public so that
it can compile operator==()
*/
struct FontBits {
///
bool operator==(FontBits const & fb1) const;
///
bool operator!=(FontBits const & fb1) const;
///
FONT_FAMILY family;
///
@ -352,6 +350,7 @@ private:
///
FONT_MISC_STATE number;
};
private:
///
FontBits bits;
@ -435,6 +434,14 @@ bool LyXFont::isSymbolFont() const
///
std::ostream & operator<<(std::ostream &, LyXFont::FONT_MISC_STATE);
bool operator==(LyXFont::FontBits const & lhs, LyXFont::FontBits const & rhs);
inline
bool operator!=(LyXFont::FontBits const & lhs, LyXFont::FontBits const & rhs)
{
return !(lhs == rhs);
}
///
inline
bool operator==(LyXFont const & font1, LyXFont const & font2)
@ -449,4 +456,6 @@ bool operator!=(LyXFont const & font1, LyXFont const & font2)
{
return !(font1 == font2);
}
#endif

View File

@ -24,6 +24,7 @@
#include <cstdlib>
using std::abs;
LyXLength::LyXLength()
: val_(0), unit_(LyXLength::PT)

View File

@ -29,6 +29,10 @@
#include <utility>
#ifndef CXX_GLOBAL_CSTD
using std::exit;
#endif
using lyx::textclass_type;
using std::pair;
using std::make_pair;

View File

@ -1,3 +1,10 @@
2002-06-13 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.3.
* math_charinset.C:
all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
2002-05-31 Dekel Tsur <dekelts@tau.ac.il>
* math_hullinset.C (ams): Do a real check.

View File

@ -23,6 +23,7 @@ using std::ostream;
using std::endl;
#ifndef CXX_GLOBAL_CSTD
using std::isalpha;
using std::strchr;
#endif

View File

@ -35,6 +35,10 @@
#include <cctype>
#ifndef CXX_GLOBAL_CSTD
using std::isprint;
#endif
using SigC::slot;
using std::vector;
using std::back_inserter;

View File

@ -342,6 +342,10 @@ public:
private:
///
string layout_;
public:
/** Both these definitions must be made public to keep Compaq cxx 6.5
* happy.
*/
///
struct InsetTable {
///
@ -354,6 +358,7 @@ private:
///
typedef std::vector<InsetTable> InsetList;
private:
///
InsetList insetlist;
public:

View File

@ -7,6 +7,9 @@
class BufferParams;
#ifndef CXX_GLOBAL_CSTD
using std::FILE;
#endif
class ISpell : public SpellBase
{

View File

@ -53,6 +53,13 @@
#include "encoding.h"
#include "sp_ispell.h"
#ifndef CXX_GLOBAL_CSTD
using std::strcpy;
using std::strlen;
using std::strpbrk;
using std::strstr;
#endif
using std::endl;
namespace {

View File

@ -1,3 +1,23 @@
2002-06-13 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.3.
* lyxfunctional.h: rename lyx::class_fun(C & c, void(C::*f)(A)) as
lyx::void_class_fun to avoid compiler problems with Compaq cxx 6.5:
more than one instance of overloaded function "lyx::class_fun" matches
the argument list.
* filetools.C:
* lstrings.C:
* snprintf.h:
* systemcall.C:
* utility.h:
all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
* kill.C: rename signal.h as csignal.
* putenv.C: rename stdlib.h as cstdlib
2002-05-03 Herbert Voss <voss@perce.de>
* filetools.C (getExtFromContents): only print the first 60 chars of

View File

@ -16,21 +16,10 @@
#include <config.h>
#include <cctype>
#include <utility>
#include <fstream>
#include "Lsstream.h"
#ifdef __GNUG__
#pragma implementation "filetools.h"
#endif
#include <cstdlib>
#include <cstdio>
#include <fcntl.h>
#include <cerrno>
#include "debug.h"
#include "support/lstrings.h"
#include "support/systemcall.h"
@ -44,6 +33,18 @@
#include "lyxlib.h"
#include "os.h"
#include "Lsstream.h"
#include <cctype>
#include <cstdlib>
#include <cstdio>
#include <fcntl.h>
#include <cerrno>
#include <utility>
#include <fstream>
// Which part of this is still necessary? (JMarc).
#if HAVE_DIRENT_H
# include <dirent.h>
@ -62,6 +63,12 @@
# endif
#endif
#ifndef CXX_GLOBAL_CSTD
using std::fgetc;
using std::isalpha;
using std::isalnum;
#endif
using std::make_pair;
using std::pair;
using std::endl;

View File

@ -1,7 +1,7 @@
#include <config.h>
#include <sys/types.h>
#include <signal.h>
#include <csignal>
#include "lyxlib.h"

View File

@ -30,9 +30,11 @@ using std::transform;
using std::vector;
#ifndef CXX_GLOBAL_CSTD
using std::atof;
using std::isdigit;
using std::strlen;
using std::tolower;
using std::toupper;
using std::strlen;
#endif

View File

@ -60,7 +60,7 @@ class_fun(C & c, R(C::*f)(A))
template <class C, class A> void_class_fun_t<C, A>
class_fun(C & c, void(C::*f)(A))
void_class_fun(C & c, void(C::*f)(A))
{
return void_class_fun_t<C, A>(c, f);
}

View File

@ -1,6 +1,6 @@
#include <config.h>
#include <stdlib.h>
#include <cstdlib>
#include "lyxlib.h"
int lyx::putenv(char const * str)

View File

@ -8,6 +8,11 @@
extern "C" {
#endif
#ifndef CXX_GLOBAL_CSTD
using std::size_t;
using std::va_list;
#endif
#if defined(HAVE_DECL_SNPRINTF) || defined(HAVE_DECL_VSNPRINTF)
#include <stdio.h>
#endif

View File

@ -27,6 +27,9 @@
#include <cstdlib> //for ::system
#ifndef CXX_GLOBAL_CSTD
using std::system;
#endif
#if 0
Systemcall::Systemcall(Starttype how, string const & what)

View File

@ -30,6 +30,10 @@
//#include <cstddef> // for size_t
//#include <utility> // for std::pair
#ifndef CXX_GLOBAL_CSTD
using std::free;
#endif
namespace lyx
{
// checked_delete() and checked_array_delete() -----------------------------//
@ -41,7 +45,7 @@ namespace lyx
{
BOOST_STATIC_ASSERT( sizeof(T) != 0 ); // assert type complete at point
// of instantiation
free(x);
::free(x);
}
} // namespace boost

View File

@ -19,6 +19,7 @@
#include "support/lstrings.h"
#include "support/textutils.h"
using std::abs;
using std::istream;
using std::getline;
using std::endl;

View File

@ -40,6 +40,7 @@
#include <algorithm>
#include <cstdlib>
using std::abs;
using std::ostream;
using std::istream;
using std::getline;

View File

@ -18,9 +18,12 @@
#include "tabular_funcs.h"
#include "support/lstrings.h"
#include "support/LIstream.h"
#ifndef CXX_GLOBAL_CSTD
using std::strlen;
#endif
using std::istream;
using std::getline;

View File

@ -20,6 +20,7 @@
#include "LString.h"
#include "tabular.h"
#include "support/lstrings.h" // for tostr
#include <iosfwd>

View File

@ -21,6 +21,11 @@
#include <fstream>
#ifndef CXX_GLOBAL_CSTD
using std::asctime;
using std::gmtime;
#endif
using std::endl;
using std::ifstream;
using std::getline;

View File

@ -25,6 +25,9 @@
#include <cstdio>
#ifndef CXX_GLOBAL_CSTD
using std::sscanf;
#endif
namespace {