]> git.lyx.org Git - lyx.git/blob - sigc++/doc/requirements
more FILMagain stuff
[lyx.git] / sigc++ / doc / requirements
1
2 The following things are required for Libsigc++.
3
4 A good compiler with the following features
5  - capable of handling numerous templates (>200)
6  - proper template specialization
7  - proper partial specialization
8
9 It works better with (but does not require)
10  - template friend specialization 
11  - namespaces
12  - void returns
13
14 M4 to parse the header files if you wish to rebuild the headers from 
15 macro source.
16
17 ==================================================
18
19 Platform Issues:
20
21 A number of platforms do not support global C++ objects
22 in shared libraries.  Although not required by this 
23 library, it may result in problems when building C++ 
24 libraries on those platforms.  The work arround is
25 to use statics in functions or pointers which must
26 be initialized. 
27
28 Platforms known to have this bug include
29 NetBSD, HP-UX 9, HP-UX 10, Solaris without patch.
30
31 ==================================================
32
33 Compiler Issues:
34
35  Cfront-based compilers: Fails
36    -----
37    Forget it, get a modern c++ compiler.
38
39
40  GNU G++ 2.7.2: Fails
41    -----
42    Upgrade, new versions of GNU G++ are easily and freely available:
43    GNU G++ 2.8.X or EGCS 1.1.2.  A port to this compiler is possible
44    with effort.
45
46
47  GNU G++ 2.8: Works (Marginal)
48    namespaces: no
49    partial specialization: yes 
50    void returns: yes 
51    -----
52    Is known to work correctly, but some performance may be subpar.
53    Recommend upgrading to egcs 1.1.
54
55
56  GNU egcs 1.0: Works (Marginal)
57    namespaces: no
58    partial specialization: yes
59    void returns: yes 
60    -----
61    Is known to work correctly, but some performance may be subpar.
62    Recommend upgrading to egcs 1.1.
63
64
65  GNU egcs 1.1: Works
66    namespaces: yes
67    partial specialization: yes
68    void returns: yes 
69    -----
70    This is the development platform, so all functionality correct.
71
72  HP C++: Fails
73    -----
74    This is a cfront compiler.  No where close.
75    Get a modern c++ compiler.
76
77
78  HP aC++ A.01.22: Works
79    namespaces: yes
80    partial specialization: yes
81    void returns: yes (only most recent version)
82    -----
83    HP improved template support thus allowing compilation.
84    Earlier compilers lacked support for void returns and proper
85    templates.
86
87    Missing <iostream> - use one below
88
89
90  MipsPro 7.3 Compler on Irix: Works (Marginal)
91    namespaces: yes
92    partial specialization: yes
93    void returns: no
94    -----
95    This compiler is barely within the range of usable compilers.
96    Requires compiling a specialization for all types in library
97    due to non-standard return behavior.  Should be usable.
98
99    Requires a switch to get templates right.  
100    Use 
101      CC=cc CXX=CC CPPFLAGS="-ptused" ./configure
102
103    Missing <iostream> - use one below
104
105    
106  SunPro C++ 4.1: Unknown
107    namespaces: no
108    partial specialization: no
109    -----
110    Unlikely considering lack of partial specialization.
111    Need more info.
112
113
114  SunPro C++ 5.0: Unknown
115    namespaces: yes 
116    partial specialization: yes
117    -----
118    Need more info.
119
120
121  Visual C++ 5.0: Works (needs special distribution)
122    namespaces: yes
123    partial specialization: no
124    void returns: no 
125    -----
126    Although not quite up to par, a port was completed and should
127    be the basis for porting back to other earlier compilers.  
128    VC++ lacks the ablity to use optional class arguments so
129    marshallers must be explicitly declared.  (see doc/win32)
130
131 ==================================================
132
133 Some compilers have not yet fully adopted the standard header
134 files.  (Usually because they lack some compiler feature
135 required for the standard header.)  For those compilers a
136 kludge is necessary to make the same code compile on both
137 standard and non-standard headers.  Add the following file
138 to the standard include path.
139
140 #ifndef IOSTREAM_KLUDGE
141 #define IOSTREAM_KLUDGE
142 #include <iostream.h>
143 namespace std { void iostream_kludge(); };
144 #endif
145