Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
a8af217c66fbb531920475e8f250a12db5d6dd89
[simgrid.git] / src / win32 / compiler / visualc.h
1 #ifndef __XBT_VISUALC_COMPILER_CONFIG_H__
2 #define __XBT_VISUALC_COMPILER_CONFIG_H__
3
4 /* borland.h - simgrid config for Borland C++ Builder   */
5
6 /* Copyright (c) 2003, 2004 Cherier Malek. All rights reserved.            */
7
8 /* This program is free software; you can redistribute it and/or modify it
9  * under the terms of the license (GNU LGPL) which comes with this package. */
10
11 /*
12  *  Borland C++ compiler configuration
13  */
14
15 #include <win32/platform/select_platform_features.h>
16
17 /* 
18  * include files. 
19  */
20
21 /* No <dlfcn.h> header file. */
22 #if defined(HAVE_DLFCN_H)
23         #undef HAVE_DLFCN_H
24 #endif 
25
26 /* Defined if the compiler has the <errno.h> header file. */
27 #if !defined(HAVE_ERRNO_H)
28         #define HAVE_ERRNO_H            1
29 #endif
30
31 /* No <execinfo.h> header file. */
32 #if defined(HAVE_EXECINFO_H)
33         #undef HAVE_EXECINFO_H
34 #endif
35
36 /* No <inttypes.h> header file. */
37 #if defined(HAVE_INTTYPES_H)
38         #undef HAVE_INTTYPES_H
39 #endif
40
41 /* Defined if compiler has the <memory.h> header file. */
42 #if !defined(HAVE_MEMORY_H)
43         #define HAVE_MEMORY_H           1
44 #endif
45
46 /* No <pthread.h> header file. */
47 #if defined(HAVE_PTHREAD_H)
48         #undef HAVE_PTHREAD_H
49 #endif
50
51
52 /* No <stdint.h> header file. */
53 #if defined(HAVE_STDINT_H)
54         #undef HAVE_STDINT_H
55 #endif
56
57 /* The compiler has the <stdlib.h> header file. */
58 #if !defined(HAVE_STDLIB_H)
59         #define HAVE_STDLIB_H           1
60 #endif
61
62 /* No <strings.h> header file. */
63 #if defined(HAVE_STRINGS_H)
64         #undef HAVE_STRINGS_H
65 #endif
66
67 /* The compiler has the <string.h> header file. */
68 #if !defined(HAVE_STRING_H)
69         #define HAVE_STRING_H           1
70 #endif
71
72 /* No <sys/socket.h> header file. */
73 #if defined(HAVE_SYS_SOCKET_H)
74         #undef HAVE_SYS_SOCKET_H
75 #endif
76
77 /* The compiler has <sys/stat.h> header file. */
78 #if !defined(HAVE_SYS_STAT_H)
79         #define HAVE_SYS_STAT_H         1
80 #endif
81
82 /* No <sys/time.h> header file. */
83 #if defined(HAVE_SYS_TIME_H)
84         #undef HAVE_SYS_TIME_H          1
85 #endif
86
87 /* The compiler has the <sys/types.h> header file. */
88 #if !defined(HAVE_SYS_TYPES_H)
89         #define HAVE_SYS_TYPES_H        1
90 #endif
91
92 /* No <unistd.h> header file. */
93 #if defined(HAVE_UNISTD_H)
94         #undef HAVE_UNISTD_H    
95 #endif
96
97 /* 
98  * The compiler has the <windows.h> header file. 
99  * Process the case of afx.h
100 */
101 #if !defined(HAVE_WINDOWS_H)
102         #define HAVE_WINDOWS_H          1
103 #endif
104
105 /* The compiler has the <winsock2.h> header file. */
106 #if !defined(HAVE_WINSOCK2_H)
107         #define HAVE_WINSOCK2_H
108 #endif
109
110 /*  
111  * The compiler has the <winsock.h> header file.
112  * Trouble if winsock2.h exists ?  
113  */
114 #if !defined(HAVE_WINSOCK_H)
115         #define HAVE_WINSOCK_H  1
116 #endif
117
118 /* The compiler has the <signal.h> header file */
119 #if !defined(HAVE_SIGNAL_H)
120         #define HAVE_SIGNAL_H   1
121 #endif
122
123 /* 
124  * functions.
125  */
126
127 /* No `getcontext' function. */
128 #if defined(HAVE_GETCONTEXT)
129         #undef HAVE_GETCONTEXT
130 #endif
131
132 /* No `getdtablesize' function. */
133 #if defined(HAVE_GETDTABLESIZE)
134         #undef HAVE_GETDTABLESIZE
135 #endif
136
137 /* No `gettimeofday' function. */
138 #if defined(HAVE_GETTIMEOFDAY)
139         #undef HAVE_GETTIMEOFDAY
140 #endif
141
142 /* No `makecontext' function. */
143 #if defined(HAVE_MAKECONTEXT)
144         #undef HAVE_MAKECONTEXT
145 #endif
146
147 /* No 'popen' function. */
148 #if defined(HAVE_POPEN)
149         #undef HAVE_POPEN
150 #endif
151
152 /* No `readv' function. */
153 #if defined(HAVE_READV)
154         #undef HAVE_READV
155 #endif
156
157 /* No `setcontext' function. */
158 #if defined(HAVE_SETCONTEXT)
159         #undef HAVE_SETCONTEXT
160 #endif
161
162 /* No 'signal' function */
163 #if defined(HAVE_SIGNAL)
164         #undef HAVE_SIGNAL
165 #endif
166
167 /* "disable the snprintf replacement ( this function is broken on system v only" */
168
169
170
171 #ifdef PREFER_PORTABLE_SNPRINTF
172 # undef PREFER_PORTABLE_SNPRINTF        1       
173 #endif
174
175
176 /* The compiler has `snprintf' function. */
177 #if _MSC_VER >= 1400 
178 #  ifndef HAVE_SNPRINTF
179 #    define HAVE_SNPRINTF       1
180 #    ifndef PREFER_PORTABLE_SNPRINTF
181 #      define snprintf _snprintf
182 #    endif
183 #  endif
184 #else 
185 #  ifdef HAVE_SNPRINTF
186         #undef HAVE_SNPRINTF
187 #  endif
188 #endif
189
190
191
192 /* No `swapcontext' function. */
193 #if defined(HAVE_SWAPCONTEXT)
194         #undef HAVE_SWAPCONTEXT
195 #endif
196
197 /* No `sysconf' function. */
198 #if defined(HAVE_SYSCONF)
199         #undef HAVE_SYSCONF
200 #endif
201
202 /* No `usleep' function. */
203 #if defined(HAVE_USLEEP)
204         #undef HAVE_USLEEP
205 #endif
206
207 /* The compiler has the `vsnprintf' function. */
208 #ifndef HAVE_VSNPRINTF
209         #define HAVE_VSNPRINTF  1
210 #endif
211
212
213 /* disable the asprintf replacement */
214 #ifndef NEED_ASPRINTF
215         #define NEED_ASPRINTF   
216 #endif
217
218
219 /* disable the vasprintf replacement */
220 #ifndef NEED_VASPRINTF
221         #define NEED_VASPRINTF
222 #endif
223
224 /* The maximal size of any scalar on this arch */
225 #if !defined(SIZEOF_MAX)
226         #define SIZEOF_MAX 8
227 #endif
228
229 /* Define to 1 if you have the ANSI C header files. */
230 #if !defined(STDC_HEADERS)
231         #define STDC_HEADERS 1
232 #endif
233
234 #if defined(TIME_WITH_SYS_TIME)
235         #undef TIME_WITH_SYS_TIME 
236 #endif
237
238 /* 
239  * libraries
240  */
241
242 /* Define to 1 if you have the `pthread' library (-lpthread). */
243 #if defined(HAVE_LIBPTHREAD)
244         #undef HAVE_LIBPTHREAD
245 #endif
246
247 /* 
248  * package informations ?
249  */
250  
251  
252 /* Defined if arrays in struct can straddle struct alignment boundaries. This
253 is like than the structure compaction above, but this time, the argument to
254 be compacted is an array whom each element would be normally compacted.
255 Exemple: struct s { double d; int i; char c[6]; }; Arrays can straddle if c
256 is allowed to come just after i. Note that GRAS only support architecture
257 presenting this caracteristic so far. */
258
259 #if defined(GRAS_ARRAY_STRADDLE_STRUCT)
260         #undef GRAS_ARRAY_STRADDLE_STRUCT
261 #endif
262
263 /* Defined if structures are compacted when possible. Consider this structure:
264 struct s {double d; int i; char c;}; If it is allowed, the char is placed
265 just after the int. If not, it has to be on the 8 bytes boundary imposed by
266 the double. For now, GRAS requires the structures to be compacted. */
267 #if defined(GRAS_STRUCT_COMPACT)
268         #undef GRAS_STRUCT_COMPACT
269 #endif
270
271 /* Name of package */
272 #define PACKAGE "simgrid"
273
274 /* Define to the address where bug reports for this package should be sent. */
275 #define PACKAGE_BUGREPORT "simgrid-devel@lists.gforge.inria.fr"
276
277 /* Define to the full name of this package. */
278 #define PACKAGE_NAME "simgrid"
279
280 /* Define to the full name and version of this package. */
281 #define PACKAGE_STRING "simgrid 3.1.1-cvs"
282
283 /* Define to the one symbol short name of this package. */
284 #define PACKAGE_TARNAME "simgrid"
285
286 /* Define to the version of this package. */
287 #define PACKAGE_VERSION "3.1.1-cvs"
288
289 /* 
290  * macro
291  */
292  
293  /* define if big endian */
294 #if !defined(GRAS_BIGENDIAN)
295         #define GRAS_BIGENDIAN 0
296 #endif
297
298 /* Defined if structures are compacted when possible. Consider this structure:
299 struct s {double d; int i; char c;}; If it is allowed, the char is placed
300 just after the int. If not, it has to be on the 8 bytes boundary imposed by
301 the double. For now, GRAS requires the structures to be compacted. */
302 #if defined(GRAS_STRUCT_COMPACT)
303         #define GRAS_STRUCT_COMPACT 1
304 #endif
305
306 /* defines the GRAS architecture signature of this machine */
307 #if defined(GRAS_THISARCH)
308         #undef GRAS_THISARCH
309 #endif
310
311 #define GRAS_THISARCH 0
312
313  
314  /* Path to the addr2line tool */
315 #if defined(ADDR2LINE)
316         #undef ADDR2LINE
317 #endif
318
319 #if !defined(HAVE_VA_COPY)
320         #define HAVE_VA_COPY 1
321 #endif
322
323 /* This macro is not defined in borland stdarg.h include file, adds it. */
324 #define va_copy(dest,src)   ((dest)=(src))  
325
326 /* Predefined possible va_copy() implementation (id: ASP) */
327 #define __VA_COPY_USE_ASP(d, s) do { *(d) = *(s); } while (0)
328
329 /* Predefined possible va_copy() implementation (id: ASS) */
330 #define __VA_COPY_USE_ASS(d, s) do { (d) = (s); } while (0)
331
332 /* Predefined possible va_copy() implementation (id: C99) */
333 #define __VA_COPY_USE_C99(d, s) va_copy((d), (s))
334
335 /* Predefined possible va_copy() implementation (id: CPP) */
336 #define __VA_COPY_USE_CPP(d, s) memcpy((void *)(d), (void *)(s)), sizeof(*(s))
337
338 /* Predefined possible va_copy() implementation (id: CPS) */
339 #define __VA_COPY_USE_CPS(d, s) memcpy((void *)&(d), (void *)&(s)), sizeof((s))
340
341 /* Predefined possible va_copy() implementation (id: GCB) */
342 #define __VA_COPY_USE_GCB(d, s) __builtin_va_copy((d), (s))
343
344 /* Predefined possible va_copy() implementation (id: GCH) */
345 #define __VA_COPY_USE_GCH(d, s) __va_copy((d), (s))
346
347 /* Predefined possible va_copy() implementation (id: GCM) */
348 #define __VA_COPY_USE_GCM(d, s) VA_COPY((d), (s))
349
350
351 /* Optional va_copy() implementation activation */
352 #ifndef HAVE_VA_COPY
353 #define va_copy(d, s) __VA_COPY_USE(d, s)
354 #endif
355
356 /* xbt contexts are based on our threads implementation */
357 #ifndef CONTEXT_THREADS
358 #define CONTEXT_THREADS 1
359 #endif
360
361 /* xbt contexts are not based on ucontext */
362 #ifdef CONTEXT_UCONTEXT
363 #undef CONTEXT_UCONTEXT
364 #endif
365
366 /* Define to id of used va_copy() implementation */
367 #define __VA_COPY_USE __VA_COPY_USE_C99
368
369 #ifndef _XBT_CALL
370         #if defined(_XBT_DESIGNATED_DLL)
371                 #define _XBT_CALL __cdecl __export
372         #elif defined(_RTLDLL)
373                 #define  _XBT_CALL __cdecl __import
374         #else
375                 #define  _XBT_CALL __cdecl
376         #endif
377 #endif
378
379 /* auto enable thread safety and exceptions: */
380 #ifndef _CPPUNWIND
381         #define _XBT_HAS_NO_EXCEPTIONS
382 #endif
383
384 #if defined ( __MT__ ) && !defined (_NOTHREADS) && !defined (_REENTRANT)
385         #define _REENTRANT 1
386 #endif
387
388
389 /* For open, read etc. file operations. */
390 #include <io.h>
391 #include <fcntl.h>
392
393 /* For getpid() function. */
394 #include <process.h>
395
396 /* no unistd.h header file. */
397 #define YY_NO_UNISTD_H 
398 /*
399  * Replace winsock2.h,ws2tcpip.h and winsock.h header files */
400 #include <windows.h>
401
402
403 /* Choose setjmp as exception implementation */
404 #ifndef __EX_MCTX_SJLJ__
405 #define __EX_MCTX_SJLJ__
406 #endif 
407
408
409
410 #include <sys/stat.h>
411
412 #define S_IWUSR _S_IWRITE
413 #define S_IRUSR _S_IREAD
414
415 #define HAVE_STRUCT_TIMESPEC            0
416
417 #define HAVE_STRUCT_TM                          1
418
419 #define HAVE_GETTIMEOFDAY                       1
420
421 #ifdef _WIN32_WINNT
422         #if _WIN32_WINNT < 0x0400
423                 #undef _WIN32_WINNT
424                 #define _WIN32_WINNT 0x0400
425         #endif
426 #else
427         #define _WIN32_WINNT 0x0400     
428 #endif
429
430 /* Visual C++ does not declare the ssize_t type */
431 typedef int ssize_t;
432
433 /* Visual C++ does not declare the mode_t type */
434 typedef unsigned int mode_t;
435
436 /* Visual C++ does not declare the uint32_t type */
437 typedef unsigned int uint32_t;
438
439 /* Visual C++ doesn't declare the structure timespec */
440 struct timespec 
441 {
442         long    tv_sec;        /* seconds                                                       */
443         long    tv_nsec;       /* nanoseconds                                           */
444 };
445
446 /* Visual C++ doesn't declare the structure timezone :
447  *(a structure used to indicate the local time zone)
448  */
449 struct timezone 
450 {
451         int tz_minuteswest;     /* of Greenwich                                         */
452     int tz_dsttime;             /* type of dst correction to apply      */
453 };
454
455 #endif /* #ifndef __XBT_VISUALC_COMPILER_CONFIG_H__ */