Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 65cedb422b5b18cbc6c81220baa7524d > files > 60

libsigc++-devel-1.2.7-8.fc12.i686.rpm

Copyright 2001 Karl Einar Nelson
------------------------------------------------------------------
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
 - templates with default arguments.

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:

UNIX
----

 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.
   A port to this compiler is possible with effort.


 GNU G++ 2.8: unknown (marginal on 1.0)
   namespaces: no
   partial specialization: yes 
   void returns: yes 
   -----
   Is known to work correctly, but some performance may be subpar.
   Recommend upgrading to latest gcc.


 GNU egcs 1.0: unknown (marginal on 1.0)
   namespaces: no
   partial specialization: yes
   void returns: yes 
   -----
   Is known to work correctly, but some performance may be subpar.
   Recommend upgrading to latest gcc.


 GNU egcs 1.1: unknown (pass on 1.0)
   namespaces: yes
   partial specialization: yes
   void returns: yes 
   -----
   Some issues with multiple inheritance require swapping around
   object declaration orders.  Known problems with dynamic cast 
   in constructors.


 GNU gcc 2.95.2: works
   namspaces: yes
   partial specialization: yes
   void returns: yes
   -----
   Some issues with multiple inheritance require swapping around
   object declaration orders.  Known problems with dynamic cast
   in constructors.  ABI is not compatible with egcs nor 2.96,
   thus do not mix binaries.


 GNU gcc 2.96 (redhat): unknown
   namespaces: yes
   partial specialization: yes
   void returns: yes
   -----
   Compiler is slightly more picky than 2.95.2 thus older code
   may fail without minor corrections.  ABI is not compatible
   with previous versions, do not mix binaries. 


 HP C++: fails
   -----
   This is a cfront compiler.  No where close.
   Get a modern c++ compiler.


 HP aC++ A.01.22: unknown (works on 1.0)
   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: unknown (marginal on 1.0)
   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.
   In effort to cut compile times a void return kludge is used
   in place of partial specialization.

   Requires a switch to get templates right.  
   Use 
     CC=cc CXX=CC CPPFLAGS="-ptused" ./configure

   Missing <iostream> - use one below

   
 SunPro C++ 4.1: fails
   namespaces: no
   partial specialization: no
   void returns: no
   -----
   lacks basic template support.


 SunPro C++ 5.0: fails
   namespaces: yes 
   partial specialization: yes
   void returns: no
   specialize references: no
   member templates: no
   use of traits: no
   -----
   Lack of traits and member templates kill the current 
   formulation.  Port possible but functionality damaged.

 SunPro Forte C++ 6.0: fails
   namespaces: yes
   partial specialization: yes
   void returns: no
   specialize references: no
   member templates: no
   use of traits: no
   -----


NON-UNIX
--------

 Visual C++ 5.0: unknown (special on 1.0)
   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)


 Borland C++ builder 4: unknown (pass on 1.0)
   namespaces: yes
   partial specialization: yes
   void returns: yes
   -----
   This was a clear pass in 1.0, needs testing for 1.1.


 Metrowerks CodwWarrior 6: unknown (pass on 1.0)
   namespaces: yes
   partial specialization: yes
   void returns: yes
   -----
   1.0 required mild alterations, needs testing for 1.1.
  

==================================================

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