mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-26 06:15:16 +00:00
146 lines
3.7 KiB
Plaintext
146 lines
3.7 KiB
Plaintext
|
|
||
|
The following things are required for Libsigc++.
|
||
|
|
||
|
A good compiler with the following features
|
||
|
- capable of handling numerous templates (>200)
|
||
|
- proper template specialization
|
||
|
- proper partial specialization
|
||
|
|
||
|
It works better with (but does not require)
|
||
|
- template friend specialization
|
||
|
- namespaces
|
||
|
- void returns
|
||
|
|
||
|
M4 to parse the header files if you wish to rebuild the headers from
|
||
|
macro source.
|
||
|
|
||
|
==================================================
|
||
|
|
||
|
Platform Issues:
|
||
|
|
||
|
A number of platforms do not support global C++ objects
|
||
|
in shared libraries. Although not required by this
|
||
|
library, it may result in problems when building C++
|
||
|
libraries on those platforms. The work arround is
|
||
|
to use statics in functions or pointers which must
|
||
|
be initialized.
|
||
|
|
||
|
Platforms known to have this bug include
|
||
|
NetBSD, HP-UX 9, HP-UX 10, Solaris without patch.
|
||
|
|
||
|
==================================================
|
||
|
|
||
|
Compiler Issues:
|
||
|
|
||
|
Cfront-based compilers: Fails
|
||
|
-----
|
||
|
Forget it, get a modern c++ compiler.
|
||
|
|
||
|
|
||
|
GNU G++ 2.7.2: Fails
|
||
|
-----
|
||
|
Upgrade, new versions of GNU G++ are easily and freely available:
|
||
|
GNU G++ 2.8.X or EGCS 1.1.2. A port to this compiler is possible
|
||
|
with effort.
|
||
|
|
||
|
|
||
|
GNU G++ 2.8: Works (Marginal)
|
||
|
namespaces: no
|
||
|
partial specialization: yes
|
||
|
void returns: yes
|
||
|
-----
|
||
|
Is known to work correctly, but some performance may be subpar.
|
||
|
Recommend upgrading to egcs 1.1.
|
||
|
|
||
|
|
||
|
GNU egcs 1.0: Works (Marginal)
|
||
|
namespaces: no
|
||
|
partial specialization: yes
|
||
|
void returns: yes
|
||
|
-----
|
||
|
Is known to work correctly, but some performance may be subpar.
|
||
|
Recommend upgrading to egcs 1.1.
|
||
|
|
||
|
|
||
|
GNU egcs 1.1: Works
|
||
|
namespaces: yes
|
||
|
partial specialization: yes
|
||
|
void returns: yes
|
||
|
-----
|
||
|
This is the development platform, so all functionality correct.
|
||
|
|
||
|
HP C++: Fails
|
||
|
-----
|
||
|
This is a cfront compiler. No where close.
|
||
|
Get a modern c++ compiler.
|
||
|
|
||
|
|
||
|
HP aC++ A.01.22: Works
|
||
|
namespaces: yes
|
||
|
partial specialization: yes
|
||
|
void returns: yes (only most recent version)
|
||
|
-----
|
||
|
HP improved template support thus allowing compilation.
|
||
|
Earlier compilers lacked support for void returns and proper
|
||
|
templates.
|
||
|
|
||
|
Missing <iostream> - use one below
|
||
|
|
||
|
|
||
|
MipsPro 7.3 Compler on Irix: Works (Marginal)
|
||
|
namespaces: yes
|
||
|
partial specialization: yes
|
||
|
void returns: no
|
||
|
-----
|
||
|
This compiler is barely within the range of usable compilers.
|
||
|
Requires compiling a specialization for all types in library
|
||
|
due to non-standard return behavior. Should be usable.
|
||
|
|
||
|
Requires a switch to get templates right.
|
||
|
Use
|
||
|
CC=cc CXX=CC CPPFLAGS="-ptused" ./configure
|
||
|
|
||
|
Missing <iostream> - use one below
|
||
|
|
||
|
|
||
|
SunPro C++ 4.1: Unknown
|
||
|
namespaces: no
|
||
|
partial specialization: no
|
||
|
-----
|
||
|
Unlikely considering lack of partial specialization.
|
||
|
Need more info.
|
||
|
|
||
|
|
||
|
SunPro C++ 5.0: Unknown
|
||
|
namespaces: yes
|
||
|
partial specialization: yes
|
||
|
-----
|
||
|
Need more info.
|
||
|
|
||
|
|
||
|
Visual C++ 5.0: Works (needs special distribution)
|
||
|
namespaces: yes
|
||
|
partial specialization: no
|
||
|
void returns: no
|
||
|
-----
|
||
|
Although not quite up to par, a port was completed and should
|
||
|
be the basis for porting back to other earlier compilers.
|
||
|
VC++ lacks the ablity to use optional class arguments so
|
||
|
marshallers must be explicitly declared. (see doc/win32)
|
||
|
|
||
|
==================================================
|
||
|
|
||
|
Some compilers have not yet fully adopted the standard header
|
||
|
files. (Usually because they lack some compiler feature
|
||
|
required for the standard header.) For those compilers a
|
||
|
kludge is necessary to make the same code compile on both
|
||
|
standard and non-standard headers. Add the following file
|
||
|
to the standard include path.
|
||
|
|
||
|
#ifndef IOSTREAM_KLUDGE
|
||
|
#define IOSTREAM_KLUDGE
|
||
|
#include <iostream.h>
|
||
|
namespace std { void iostream_kludge(); };
|
||
|
#endif
|
||
|
|