forked from deepin-community/opensp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.h
315 lines (269 loc) · 7.6 KB
/
config.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
// Copyright (c) 1994, 1995, 1996 James Clark
// See the file COPYING for copying permission.
#ifndef config_INCLUDED
#define config_INCLUDED 1
#define SP_INCLUDE_UNISTD_H
#define SP_POSIX_FILENAMES
#ifdef __GNUG__
// Ideally, this should be set in configure.in, I think
// It's not missing, but it pulls in libg++
#define SP_NEW_H_MISSING
// set_new_handler() has to be declared extern "C"
#define SP_SET_NEW_HANDLER_EXTERN_C
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
#define SP_ANSI_FOR_SCOPE
#endif
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)
#define SP_ANSI_LIB
#define SP_NO_STD_NAMESPACE
#undef SP_NEW_H_MISSING
#endif
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 9)
#undef SP_NO_STD_NAMESPACE
#endif
#endif /* __GNUG__ */
#if defined(sun) || defined(__sun)
// struct stat has st_blksize member
#define SP_STAT_BLKSIZE
#endif
#if (defined __MACH__) && (! defined __GNU__)
#define SP_MUTEX_MACH
#endif
#ifdef __EMX__
// EMX 0.9a for OS/2
#undef SP_POSIX_FILENAMES
#define SP_MSDOS_FILENAMES
#endif
#ifdef _MSC_VER
// Microsoft Visual C++ 4.0
#undef SP_INCLUDE_UNISTD_H
#define SP_INCLUDE_IO_H
#ifndef SP_ANSI_CLASS_INST
#define SP_ANSI_CLASS_INST
#endif
#undef SP_POSIX_FILENAMES
#define SP_MSDOS_FILENAMES
#define SP_SHORT_HEADERS
#pragma warning ( disable : 4660 ) // already instantiated
#pragma warning ( disable : 4661 ) // missing def for decl member
#pragma warning ( disable : 4786 ) // debug symbol truncated (>255 chars)
#pragma warning ( disable : 4018 ) // signed/unsigned mismatch
#pragma warning ( disable : 4251 ) // __declspec(dllexport)
#pragma warning ( disable : 4275 )
#pragma warning ( disable : 4237 ) // future reserved keyword
#define huge verybig
#if _MSC_VER == 900
#define SP_DECLARE_PLACEMENT_OPERATOR_NEW
#endif
#define set_new_handler _set_new_handler
// Function passed to set_new_handler() returns int and takes size_t argument.
#define SP_FANCY_NEW_HANDLER
#if _MSC_VER >= 1100
// Visual C++ 5.0
#define SP_HAVE_BOOL
#define SP_SIZEOF_BOOL_1
#pragma warning ( disable : 4800 ) // forcing value to bool 'true' or
// 'false' (performance warning)
#endif
#if _MSC_VER >= 1200
// Visual C++ 6.0
#define SP_HAVE_PLACEMENT_OPERATOR_DELETE
#define SP_HAVE_TYPENAME
#endif
#define SP_HAVE_SETMODE
#define SP_DLLEXPORT __declspec(dllexport)
#define SP_DLLIMPORT __declspec(dllimport)
#if defined(_DLL) || defined(_USRDLL) || defined(_MT)
#define SP_USE_DLL
#endif
#ifdef SP_USE_DLL
#ifndef BUILD_LIBSP
// It's not possible to export templates using __declspec(dllexport),
// so instead we include the template definitions in the headers,
// which allows Visual C++ to instantiate any needed templates
// in the client.
#define SP_DEFINE_TEMPLATES
#endif
#endif /* SP_USE_DLL */
#ifndef SP_MANUAL_INST
#ifndef SP_DEFINE_TEMPLATES
#define SP_MANUAL_INST
#endif
#endif /* not SP_MANUAL_INST */
// SP_WIDE_SYSTEM builds will not compile due to missing overloads
// OutputCharStream &operator<<(wchar_t) and
// OutputCharStream &operator<<(unsigned short*)
// which are required by onsgmls; osx has probably similar issues.
// Once these issues are addressed, the following lines should be
// re-activated.
// #ifdef SP_MULTI_BYTE
// #define SP_WIDE_SYSTEM
// #endif
// wchar_t's base type is an unsigned short
#define SP_WCHAR_T_USHORT
// Enable precompiled header support.
#define SP_PCH
// Don't compile in message text.
#define SP_NO_MESSAGE_TEXT
#ifdef _MT
// Use Win32 critical section facilities
#define SP_MUTEX_WIN32
// Use the new Standard C++ library
#define SP_ANSI_LIB
#if _MSC_VER < 1100
// Versions prior to 5.0 don't use the std namespace
#define SP_NO_STD_NAMESPACE
#endif
#endif /* _MT */
#endif /* _MSC_VER */
#ifdef __WATCOMC__
// Watcom C++ 10.0a
#define SP_MANUAL_INST
#undef SP_POSIX_FILENAMES
#define SP_MSDOS_FILENAMES
#undef SP_INCLUDE_UNISTD_H
#define SP_INCLUDE_IO_H
#pragma warning 004 9
#undef huge
// Cannot handle T::~T in template.
#define SP_QUAL_TEMPLATE_DTOR_BROKEN
#define SP_HAVE_SETMODE
#define _setmode setmode
#if __WATCOMC__ < 1050
#define _O_BINARY O_BINARY
#endif
#define SP_WCHAR_T_USHORT
#if __WATCOMC__ >= 1100
#define SP_HAVE_BOOL
// #define SP_SIZEOF_BOOL_1
#endif
#endif /* __WATCOMC__ */
#ifdef __BORLANDC__
// Borland C++ 5.0
#define SP_ANSI_FOR_SCOPE
#define SP_HAVE_RTTI
#define SP_HAVE_SETMODE
#undef SP_INCLUDE_UNISTD_H
#define SP_INCLUDE_IO_H
#undef SP_POSIX_FILENAMES
#define SP_MSDOS_FILENAMES
#define SP_HAVE_BOOL
#define SP_SHORT_HEADERS
#define _O_BINARY O_BINARY
#define _setmode setmode
#define SP_ANSI_CLASS_INST
#define SP_MANUAL_INST
// Building as a DLL doesn't work with Borland C++ yet.
#define SP_DLLEXPORT __declspec(dllexport)
#define SP_DLLIMPORT __declspec(dllimport)
#ifdef SP_USE_DLL
#ifndef BUILD_LIBSP
#define SP_DEFINE_TEMPLATES
#endif
#endif /* SP_USE_DLL */
#define SP_WCHAR_T_USHORT
#endif /* __BORLANDC__ */
#ifdef __IBMCPP__
// IBM CSet++ 2.1 from Horst Szillat <[email protected]>.
#undef SP_POSIX_FILENAMES
#define SP_MANUAL_INST
#define SP_SHORT_HEADERS
#define SP_MSDOS_FILENAMES
#undef SP_INCLUDE_UNISTD_H
#define SP_INCLUDE_IO_H
#define S_IFMT (S_IFDIR|S_IFCHR|S_IFREG)
#endif
#ifdef __xlC__
// IBM CSet++ 3.1 on AIX 4.1.
// Use CXX=xlC and CC=xlC in the Makefile.
// Note that -g creates massive executables and that -O
// takes ages to compile and creates core dumping executables!
// I havn't tried the socket stuff.
// <[email protected]>
#define SP_MANUAL_INST
#define SP_HAVE_LOCALE
#define SP_STAT_BLKSIZE
#endif /* __xlC__ */
#ifdef macintosh
// Apple MacOS. Tested only with Metrowerks CW10.
// From Ashley Colin Yakeley <[email protected]>
#undef SP_POSIX_FILENAMES
#define SP_MAC_FILENAMES
#define SP_LINE_TERM1 '\r'
#ifdef __MWERKS__
// Metrowerks for some platform (MacOS in this case)
#pragma mpwc_newline off
#define SP_DEFINE_TEMPLATES
// #define SP_USE_DLL -- __declspec doesn't work with classes (yet)
#ifdef SP_USE_DLL
#define SP_DLLEXPORT __declspec(export)
#define SP_DLLIMPORT __declspec(import)
#endif // SP_USE_DLL
#if __MWERKS__ >= 0x1000
// bool option only defined for CW10 and later (note __MWERKS__ is BCD)
#if __option(bool)
#define SP_HAVE_BOOL
#endif // __option(bool)
#endif // __MWERKS__ >= 0x1000
#endif // __MWERKS__
#if ('\n' != 10) || ('\r' != 13)
#error "newlines incorrect"
#endif
#endif /* macintosh */
#ifdef SP_HAVE_SETMODE
#ifndef SP_LINE_TERM1
#define SP_LINE_TERM1 '\r'
#define SP_LINE_TERM2 '\n'
#endif
#endif /* not SP_HAVE_SETMODE */
#ifndef SP_LINE_TERM1
#define SP_LINE_TERM1 '\n'
#endif
#ifndef SP_ANSI_FOR_SCOPE
// This simulates the new ANSI "for" scope rules
#define for if (0); else for
#endif
#ifndef SP_HAVE_TYPENAME
#define typename /* as nothing */
#endif
#ifndef SP_DLLEXPORT
#define SP_DLLEXPORT /* as nothing */
#endif
#ifndef SP_DLLIMPORT
#define SP_DLLIMPORT /* as nothing */
#endif
#ifdef SP_USE_DLL
#ifdef BUILD_LIBSP
#define SP_API SP_DLLEXPORT
#else
#define SP_API SP_DLLIMPORT
#endif
#else /* not SP_USE_DLL */
#define SP_API /* as nothing */
#endif /* not SP_USE_DLL */
// SP_WIDE_SYSTEM says that your OS provides wide character interfaces
// SP_WIDE_SYSTEM currently works only with Visual C++ and Windows NT/95
// SP_WIDE_SYSTEM implies SP_MULTI_BYTE
#ifdef SP_WIDE_SYSTEM
#ifndef SP_MULTI_BYTE
#define SP_MULTI_BYTE
#endif
#endif
#ifdef SP_NAMESPACE
#define SP_NAMESPACE_SCOPE SP_NAMESPACE::
#else
#define SP_NAMESPACE_SCOPE
#endif
#ifdef SP_MSDOS_FILENAMES
#define PATH_SEPARATOR ';'
#else
#define PATH_SEPARATOR ':'
#endif
/* new stuff */
#ifndef HAVE_MUTABLE
#define mutable
#endif
// NOTE: This is processed as a Makefile, not as a header by autoconf.
#define SP_PACKAGE "OpenSP"
#define SP_VERSION "1.5.2"
#endif /* not config_INCLUDED */