summaryrefslogtreecommitdiff
path: root/ACE/ace/config-WinCE.h
blob: e4140135599e857a14aacc2be741e74c832063a4 (plain)
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
// $Id$

// Note: For WinCE build, simply use: #include "ace/config-win32.h"
//       It is same as config.h for Windows NT/2k so that you can
//       share same files and directories for both WinCE and NT/2k
//       builds, unless you add additional definition(s) for each
//       specific build or change the output directory.

#ifndef ACE_CONFIG_WINCE_H
#define ACE_CONFIG_WINCE_H

#include /**/ "ace/pre.h"

#ifndef ACE_CONFIG_WIN32_H
# error Use config-win32.h in config.h instead of this header
#endif  // ACE_CONFIG_WIN32_H

#if !defined (UNDER_CE)
# error Define UNDER_CE to version (i.e. 300 = 3.0)
#endif  // UNDER_CE

#if (UNDER_CE < 300)
# error ACE requires Windows CE 3.0 and later.
#endif  // UNDER_CE

#if (UNDER_CE < 400)
// CE 3 doesn't have Winsock 2, but CE 4 does.
# if !defined (ACE_HAS_WINSOCK2)
#  define ACE_HAS_WINSOCK2 0
# endif
# define ACE_LACKS_ASSERT_H
# define ACE_LACKS_SEARCH_H
# define ACE_LACKS_WCHAR_H
# define ACE_LACKS_WCTYPE_H
# define ACE_LACKS_STDDEF_H
# define ACE_LACKS_PTRDIFF_T
#endif /* UNDER_CE < 400 */

#if !defined (ACE_HAS_WINCE)
# define ACE_HAS_WINCE 1
#endif

#if defined (_MSC_VER) && (_MSC_VER < 1400)
// WinCE prior to Visual Studio 2005 integration doesn't have most of
// the standard C library time functions. It also doesn't define struct tm.
// SYSTEMTIME has pretty much the same info though, so we can map it when
// needed. Define struct tm here and use it when needed. This is taken
// from the standard C library.
# define ACE_LACKS_STRUCT_TM
#endif

// We need these libraries to build:
#pragma comment(lib,"corelibc.lib")
#pragma comment(linker, "/nodefaultlib:oldnames.lib")

// Only DLL version is supported on CE.
//#if defined (ACE_HAS_DLL)
//# undef ACE_HAS_DLL
//#endif  // ACE_HAS_DLL
//#define ACE_HAS_DLL 1

// Need to define LD search path explicitly on CE because
// CE doesn't have environment variables and we can't get
// the information using getenv.
#define ACE_DEFAULT_LD_SEARCH_PATH ACE_TEXT (".\\;\\windows")

#define ACE_LACKS_FCNTL_H
#define ACE_LACKS_SYS_TYPES_H
#define ACE_LACKS_GETCWD
#define ACE_LACKS_ASCTIME
#define ACE_LACKS_ASCTIME_R
#define ACE_LACKS_GMTIME
#define ACE_LACKS_GMTIME_R
#define ACE_LACKS_LOCALTIME
#define ACE_LACKS_PERROR
#define ACE_LACKS_STRFTIME
#define ACE_LACKS_WIN32_SETFILEPOINTEREX
#define ACE_LACKS_WIN32_SERVICES
#define ACE_LACKS_WIN32_SECURITY_DESCRIPTORS
#define ACE_LACKS_GETPROCESSTIMES
#define ACE_LACKS_PDH_H
#define ACE_LACKS_PDHMSG_H
#define ACE_LACKS_TIME
#define ACE_LACKS_TZSET
#define ACE_LACKS_RAISE

#define ACE_HAS_POSITION_INDEPENDENT_POINTERS 1

#define ACE_LACKS_MSG_WFMO
#define ACE_LACKS_UMASK
#define ACE_HAS_TYPES_H
#define ACE_LACKS_DEV_T

#define ACE_ISCTYPE_EQUIVALENT ::_isctype

// WinCE only supports the UNICODE API
#if !defined (ACE_USES_WCHAR)
# define ACE_USES_WCHAR
#endif /* ACE_USES_WCHAR */

#if (_WIN32_WCE < 0x600)
#define ACE_USES_WINCE_SEMA_SIMULATION
#endif

#define ACE_HAS_NONSTATIC_OBJECT_MANAGER 1

#if ! defined(ACE_DEFAULT_THREAD_KEYS)
# define ACE_DEFAULT_THREAD_KEYS TLS_MINIMUM_AVAILABLE
#endif // ! defined(ACE_DEFAULT_THREAD_KEYS)

// FILE stuff isn't always defined in CE
#if (_MSC_VER < 1400) && !defined (_FILE_DEFINED)
  typedef void FILE;
# define _FILE_DEFINED
#endif  /* _MSC_VER < 1400 && !_FILE_DEFINED */

// This was defined in previous versions of CE, but not 2.11
#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION

#define ACE_MAIN WINAPI WinMain

// SH3 cross-compiler can't handle inline functions correctly
// (along with other bugs.)
#if defined (SH3)
# define ACE_LACKS_INLINE_FUNCTIONS
#endif  // SH3 && _DEBUG

#ifndef ACE_DEFAULT_SERVER_HOST
# define ACE_DEFAULT_SERVER_HOST ACE_TEXT("localhost")
#endif  // ACE_DEFAULT_SERVER_HOST

// @@ Need to remap every function that uses any of these flags to
//    Win32 API.  These are for ANSI styled function and are not
//    available on WinCE.

#define _O_RDONLY       0x0000  // open for reading only
#define _O_WRONLY       0x0001  // open for writing only
#define _O_RDWR         0x0002  // open for reading and writing
#define _O_APPEND       0x0008  // writes done at eof

#define _O_CREAT        0x0100  // create and open file
#define _O_TRUNC        0x0200  // open and truncate
#define _O_EXCL         0x0400  // open only if file doesn't already exist

// O_TEXT files have <cr><lf> sequences translated to <lf> on read()'s,
// and <lf> sequences translated to <cr><lf> on write()'s
#define _O_TEXT         0x4000  // file mode is text (translated)
#define _O_BINARY       0x8000  // file mode is binary (untranslated)

// macro to translate the C 2.0 name used to force binary mode for files
//#define _O_RAW  _O_BINARY

// Open handle inherit bit
//#define _O_NOINHERIT    0x0080  // child process doesn't inherit file

// Temporary file bit - file is deleted when last handle is closed
#define _O_TEMPORARY    0x0040  // temporary file bit

// temporary access hint
//#define _O_SHORT_LIVED  0x1000  // temporary storage file, try not to flush

// sequential/random access hints
//#define _O_SEQUENTIAL   0x0020  // file access is primarily sequential
//#define _O_RANDOM       0x0010  // file access is primarily random


// Non-ANSI names
#define O_RDONLY        _O_RDONLY
#define O_WRONLY        _O_WRONLY
#define O_RDWR          _O_RDWR
#define O_APPEND        _O_APPEND
#define O_CREAT         _O_CREAT
#define O_TRUNC         _O_TRUNC
#define O_EXCL          _O_EXCL
#define O_TEXT          _O_TEXT
#define O_BINARY        _O_BINARY
#define O_TEMPORARY     _O_TEMPORARY
//#define O_RAW           _O_BINARY
//#define O_NOINHERIT     _O_NOINHERIT
//#define O_SEQUENTIAL    _O_SEQUENTIAL
//#define O_RANDOM        _O_RANDOM


// @@ NSIG value.  This is definitely not correct.
#define NSIG 23


// @@ For some reason, WinCE forgot to define this.
//    Need to find out what it is. (Used in MapViewOfFile ().)
#define FILE_MAP_COPY 0

#define ACE_LACKS_ACCESS
#define ACE_LACKS__WACCESS
#define ACE_HAS_ACCESS_EMULATION
#if (_WIN32_WCE < 0x500)
# define ACE_LACKS_FILELOCKS
#endif
#define ACE_LACKS_EXEC
#define ACE_LACKS_MKTEMP
#define ACE_LACKS_ISATTY
#define ACE_LACKS_STRERROR
#define ACE_LACKS_SYSTEM
#define ACE_LACKS_PIPE

#define ACE_LACKS_CHDIR
#define ACE_LACKS_ENV
#define ACE_LACKS_REALPATH
#define ACE_LACKS_SWAB
#define ACE_LACKS_TEMPNAM

#if defined (_WIN32_WCE_EMULATION)
// @@ For some reason, qsort isn't defined correctly (_stdcall vs _cdecl)
// under emulation.  So for right now, exclude it.
# define ACE_LACKS_QSORT
#endif  // _WIN32_WCE_EMULATION

#if !defined (BUFSIZ)
#  define BUFSIZ 1024
#endif

typedef void (__cdecl * __sighandler_t)(int); // keep Signal compilation happy
typedef long off_t;

#define ACE_LACKS_MALLOC_H      // We do have malloc.h, but don't use it.

#define ACE_HAS_WINCE_BROKEN_ERRNO

#define ACE_HAS_STRDUP_EMULATION

#if !defined (MAXSYMLINKS)
#define MAXSYMLINKS 0
#endif

// WinCE can't do fixed addresses for memory-mapped files.
#if defined (ACE_DEFAULT_BASE_ADDR)
#  undef ACE_DEFAULT_BASE_ADDR
#endif
#define ACE_DEFAULT_BASE_ADDR 0

#if (_WIN32_WCE < 0x600)
#define ACE_HAS_TSS_EMULATION
#endif  // WinCE version < 6.0

// CE doesn't support FILE_SHARE_DELETE like regular windows
#if !defined (ACE_DEFAULT_FILE_PERMS)
#define ACE_DEFAULT_FILE_PERMS (FILE_SHARE_READ | FILE_SHARE_WRITE)
#endif

#define ACE_LACKS_SIGNAL_H
#define ACE_LACKS_SYS_STAT_H

#include /**/ "ace/post.h"

#endif  // ACE_CONFIG_WINCE_H