]> git.saurik.com Git - wxWidgets.git/blame - include/wx/platform.h
Use "INNO" env var in Inno Setup script only if it's defined.
[wxWidgets.git] / include / wx / platform.h
CommitLineData
e0c749a7
RN
1/**
2* Name: wx/platform.h
3* Purpose: define the OS and compiler identification macros
4* Author: Vadim Zeitlin
5* Modified by:
6* Created: 29.10.01 (extracted from wx/defs.h)
7* RCS-ID: $Id$
99d80019 8* Copyright: (c) 1997-2001 Vadim Zeitlin
65571936 9* Licence: wxWindows licence
e0c749a7 10*/
78340847
VZ
11
12/* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */
13
14#ifndef _WX_PLATFORM_H_
15#define _WX_PLATFORM_H_
16
382c4ade
VZ
17#ifdef __WXMAC_XCODE__
18# include <unistd.h>
19# include <TargetConditionals.h>
20# include <AvailabilityMacros.h>
1c415bab
SC
21# ifndef MAC_OS_X_VERSION_10_4
22# define MAC_OS_X_VERSION_10_4 1040
23# endif
24# ifndef MAC_OS_X_VERSION_10_5
25# define MAC_OS_X_VERSION_10_5 1050
26# endif
27# ifndef MAC_OS_X_VERSION_10_6
28# define MAC_OS_X_VERSION_10_6 1060
29# endif
b452fd55
RD
30# ifndef MAC_OS_X_VERSION_10_7
31# define MAC_OS_X_VERSION_10_7 1070
32# endif
dea54670
SC
33# ifndef MAC_OS_X_VERSION_10_8
34# define MAC_OS_X_VERSION_10_8 1080
35# endif
382c4ade 36# include "wx/osx/config_xcode.h"
309f2b20
SC
37# ifndef __WXOSX__
38# define __WXOSX__ 1
39# endif
40# ifndef __WXMAC__
41# define __WXMAC__ 1
42# endif
17005cd7
VZ
43#endif
44
78340847
VZ
45/*
46 first define Windows symbols if they're not defined on the command line: we
47 can autodetect everything we need if _WIN32 is defined
48 */
7275146d 49#if defined(__CYGWIN__) && defined(__WINDOWS__)
ef620df0
VZ
50# ifndef __WXMSW__
51# define __WXMSW__
52# endif
d66dcb60
MB
53#endif
54
ef620df0
VZ
55#if defined(_WIN64)
56# ifndef _WIN32
57 /*
58 a lot of code (mistakenly) uses #ifdef _WIN32 to either test for
59 Windows or to test for !__WIN16__, so we must define _WIN32 for
60 Win64 as well to ensure that the existing code continues to work.
61 */
62# define _WIN32
63# endif /* !_WIN32 */
64
65# ifndef __WIN64__
66# define __WIN64__
67# endif /* !__WIN64__ */
68#endif /* _WIN64 */
69
d5cd19b4
VZ
70#if (defined(_WIN32) || defined(WIN32) || defined(__NT__) || defined(__WXWINCE__)) \
71 && !defined(__WXMOTIF__) && !defined(__WXGTK__) && !defined(__WXX11__)
ef620df0
VZ
72# ifndef __WXMSW__
73# define __WXMSW__
74# endif
78340847
VZ
75#endif /* Win32 */
76
d48f13a1 77#if defined(_WIN32)
9b141468
WS
78# if !defined(__WINDOWS__)
79# define __WINDOWS__
80# endif
c65f4634 81
c65f4634
VZ
82# ifndef WIN32
83# define WIN32
84# endif
85
86# ifndef __WIN32__
87# define __WIN32__
88# endif
d48f13a1
VZ
89#endif /* _WIN32 */
90
91/* Don't use widget toolkit specific code in non-GUI code */
92#if defined(wxUSE_GUI) && !wxUSE_GUI
93# ifdef __WXMSW__
94# undef __WXMSW__
95# endif
96# ifdef __WXGTK__
97# undef __WXGTK__
98# endif
99#endif
100
101#if defined(__WXGTK__) && defined(__WINDOWS__)
102
103# ifdef __WXMSW__
104# undef __WXMSW__
105# endif
106
107#endif /* __WXGTK__ && __WINDOWS__ */
78340847 108
9b141468 109/* detect MS SmartPhone */
f2aa588b 110#if defined( WIN32_PLATFORM_WFSP )
9b141468
WS
111# ifndef __SMARTPHONE__
112# define __SMARTPHONE__
113# endif
114# ifndef __WXWINCE__
115# define __WXWINCE__
116# endif
f2aa588b
VS
117#endif
118
a9928e9d
JS
119/* detect PocketPC */
120#if defined( WIN32_PLATFORM_PSPC )
9b141468
WS
121# ifndef __POCKETPC__
122# define __POCKETPC__
123# endif
124# ifndef __WXWINCE__
125# define __WXWINCE__
126# endif
a9928e9d
JS
127#endif
128
129/* detect Standard WinCE SDK */
130#if defined( WCE_PLATFORM_STANDARDSDK )
9b141468
WS
131# ifndef __WINCE_STANDARDSDK__
132# define __WINCE_STANDARDSDK__
133# endif
134# ifndef __WXWINCE__
135# define __WXWINCE__
136# endif
a9928e9d
JS
137#endif
138
daeb8330
RR
139#if defined(_WIN32_WCE) && !defined(WIN32_PLATFORM_WFSP) && !defined(WIN32_PLATFORM_PSPC)
140# if (_WIN32_WCE >= 400)
141# ifndef __WINCE_NET__
142# define __WINCE_NET__
143# endif
761fbb87 144# elif (_WIN32_WCE >= 200)
daeb8330
RR
145# ifndef __HANDHELDPC__
146# define __HANDHELDPC__
147# endif
148# endif
9b141468
WS
149# ifndef __WXWINCE__
150# define __WXWINCE__
151# endif
daeb8330
RR
152#endif
153
3795f11f
VZ
154#if defined(__WXWINCE__) && defined(_MSC_VER) && (_MSC_VER == 1201)
155 #define __EVC4__
156#endif
157
f1a4ca62
WS
158#if defined(__POCKETPC__) || defined(__SMARTPHONE__) || defined(__WXGPE__)
159# define __WXHANDHELD__
160#endif
161
1b4bff82
VZ
162#ifdef __ANDROID__
163# define __WXANDROID__
164# include "wx/android/config_android.h"
165#endif
166
20125017
VZ
167#include "wx/compiler.h"
168
592a7465
VZ
169/*
170 Include wx/setup.h for the Unix platform defines generated by configure and
171 the library compilation options
172
173 Note that it must be included before defining hardware symbols below as they
20125017
VZ
174 could be already defined by configure but it must be included after defining
175 the compiler macros above as msvc/wx/setup.h relies on them under Windows.
592a7465 176 */
601b9dfa
FM
177#include "wx/setup.h"
178
b4354db1
VZ
179/*
180 Convenience for any optional classes that use the wxAnyButton base class.
181 */
182#if wxUSE_TOGGLEBTN || wxUSE_BUTTON
183 #define wxHAS_ANY_BUTTON
184#endif
185
601b9dfa 186
748a4684
VZ
187/*
188 Hardware platform detection.
189
190 VC++ defines _M_xxx symbols.
191 */
192#if defined(_M_IX86) || defined(i386) || defined(__i386) || defined(__i386__)
193 #ifndef __INTEL__
194 #define __INTEL__
195 #endif
196#endif /* x86 */
197
198#if defined(_M_IA64)
199 #ifndef __IA64__
200 #define __IA64__
201 #endif
202#endif /* ia64 */
203
80da12bc 204#if defined(_M_MPPC) || defined(__PPC__) || defined(__ppc__)
748a4684
VZ
205 #ifndef __POWERPC__
206 #define __POWERPC__
207 #endif
208#endif /* alpha */
209
210#if defined(_M_ALPHA) || defined(__AXP__)
211 #ifndef __ALPHA__
212 #define __ALPHA__
213 #endif
214#endif /* alpha */
215
78340847 216
63e7198b
VZ
217/*
218 adjust the Unicode setting: wxUSE_UNICODE should be defined as 0 or 1
77ffb593 219 and is used by wxWidgets, _UNICODE and/or UNICODE may be defined or used by
63e7198b
VZ
220 the system headers so bring these settings in sync
221 */
222
223/* set wxUSE_UNICODE to 1 if UNICODE or _UNICODE is defined */
224#if defined(_UNICODE) || defined(UNICODE)
225# undef wxUSE_UNICODE
226# define wxUSE_UNICODE 1
227#else /* !UNICODE */
228# ifndef wxUSE_UNICODE
229# define wxUSE_UNICODE 0
230# endif
231#endif /* UNICODE/!UNICODE */
232
233/* and vice versa: define UNICODE and _UNICODE if wxUSE_UNICODE is 1 */
234#if wxUSE_UNICODE
235# ifndef _UNICODE
236# define _UNICODE
237# endif
238# ifndef UNICODE
239# define UNICODE
240# endif
241#endif /* wxUSE_UNICODE */
242
79e70894 243
9eaadb1b
VZ
244/*
245 test for old versions of Borland C, normally need at least 5.82, Turbo
2f46438b 246 explorer, available for free at http://www.turboexplorer.com/downloads
6b73ac78 247*/
63ef7db3 248
6b73ac78 249
25859335
VZ
250/*
251 Older versions of Borland C have some compiler bugs that need
252 workarounds. Mostly pertains to the free command line compiler 5.5.1.
253*/
254#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x551)
255 /*
256 The Borland free compiler is unable to handle overloaded enum
257 comparisons under certain conditions e.g. when any class has a
258 conversion ctor for an integral type and there's an overload to
259 compare between an integral type and that class type.
260 */
261# define wxCOMPILER_NO_OVERLOAD_ON_ENUM
262
263 /*
264 This is needed to overcome bugs in 5.5.1 STL, linking errors will
265 result if it is not defined.
266 */
267# define _RWSTD_COMPILE_INSTANTIATE
268
269 /*
270 Preprocessor in older Borland compilers have major problems
271 concatenating with ##. Specifically, if the string operands being
d13b34d3 272 concatenated have special meaning (e.g. L"str", 123i64 etc)
25859335
VZ
273 then ## will not concatenate the operands correctly.
274
275 As a workaround, define wxPREPEND* and wxAPPEND* without using
276 wxCONCAT_HELPER.
277 */
278# define wxCOMPILER_BROKEN_CONCAT_OPER
279#endif /* __BORLANDC__ */
6b73ac78 280
78340847 281/*
865c589e
VS
282 OS: first of all, test for MS-DOS platform. We must do this before testing
283 for Unix, because DJGPP compiler defines __unix__ under MS-DOS
284 */
285#if defined(__GO32__) || defined(__DJGPP__) || defined(__DOS__)
ef620df0
VZ
286# ifndef __DOS__
287# define __DOS__
288# endif
865c589e
VS
289 /* size_t is the same as unsigned int for Watcom 11 compiler, */
290 /* so define it if it hadn't been done by configure yet */
ef620df0
VZ
291# if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG)
292# ifdef __WATCOMC__
293# define wxSIZE_T_IS_UINT
294# endif
295# ifdef __DJGPP__
296# define wxSIZE_T_IS_ULONG
297# endif
298# endif
865c589e
VS
299
300/*
301 OS: then test for generic Unix defines, then for particular flavours and
78340847 302 finally for Unix-like systems
80da12bc 303 Mac OS X matches this case (__MACH__), prior Mac OS do not.
78340847 304 */
865c589e
VS
305#elif defined(__UNIX__) || defined(__unix) || defined(__unix__) || \
306 defined(____SVR4____) || defined(__LINUX__) || defined(__sgi) || \
307 defined(__hpux) || defined(sun) || defined(__SUN__) || defined(_AIX) || \
80da12bc 308 defined(__EMX__) || defined(__VMS) || defined(__BEOS__) || defined(__MACH__)
78340847 309
ef620df0 310# define __UNIX_LIKE__
78340847
VZ
311
312 /* Helps SGI compilation, apparently */
ef620df0
VZ
313# ifdef __SGI__
314# ifdef __GNUG__
315# define __need_wchar_t
316# else /* !gcc */
78340847
VZ
317 /*
318 Note I use the term __SGI_CC__ for both cc and CC, its not a good
319 idea to mix gcc and cc/CC, the name mangling is different
320 */
ef620df0
VZ
321# define __SGI_CC__
322# endif /* gcc/!gcc */
ae072480
VZ
323
324 /* system headers use this symbol and not __cplusplus in some places */
325# ifndef _LANGUAGE_C_PLUS_PLUS
326# define _LANGUAGE_C_PLUS_PLUS
327# endif
ef620df0
VZ
328# endif /* SGI */
329
ef620df0
VZ
330# ifdef __EMX__
331# define OS2EMX_PLAIN_CHAR
332# endif
6d8978f0
SN
333# if defined(__INNOTEK_LIBC__)
334 /* Ensure visibility of strnlen declaration */
335# define _GNU_SOURCE
336# endif
78340847
VZ
337
338 /* define __HPUX__ for HP-UX where standard macro is __hpux */
ef620df0
VZ
339# if defined(__hpux) && !defined(__HPUX__)
340# define __HPUX__
341# endif /* HP-UX */
342
343# if defined(__CYGWIN__) || defined(__WINE__)
344# if !defined(wxSIZE_T_IS_UINT)
345# define wxSIZE_T_IS_UINT
346# endif
347# endif
80da12bc
DE
348
349 /* All of these should already be defined by including configure-
350 generated setup.h but we wish to support Xcode compilation without
351 requiring the user to define these himself.
352 */
353# if defined(__APPLE__) && defined(__MACH__)
354# ifndef __UNIX__
355# define __UNIX__ 1
356# endif
357# ifndef __BSD__
358# define __BSD__ 1
359# endif
360 /* __DARWIN__ is our own define to mean OS X or pure Darwin */
361# ifndef __DARWIN__
362# define __DARWIN__ 1
363# endif
364 /* NOTE: TARGET_CARBON is actually a 0/1 and must be 1 for OS X */
365# ifndef TARGET_CARBON
366# define TARGET_CARBON 1
367# endif
368 /* OS X uses unsigned long size_t for both ILP32 and LP64 modes. */
369# if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG)
370# define wxSIZE_T_IS_ULONG
371# endif
372# endif
373
80da12bc
DE
374/*
375 OS: OS/2
376 */
78340847 377#elif defined(__OS2__)
55034339
WS
378
379 /* wxOS2 vs. non wxOS2 ports on OS2 platform */
fbf618df 380# if !defined(__WXMOTIF__) && !defined(__WXGTK__) && !defined(__WXX11__)
55034339
WS
381# ifndef __WXPM__
382# define __WXPM__
383# endif
384# endif
385
ef620df0
VZ
386# if defined(__IBMCPP__)
387# define __VISAGEAVER__ __IBMCPP__
ef620df0 388# endif
78340847
VZ
389
390 /* Place other OS/2 compiler environment defines here */
ef620df0 391# if defined(__VISAGECPP__)
78340847 392 /* VisualAge is the only thing that understands _Optlink */
ef620df0
VZ
393# define LINKAGEMODE _Optlink
394# endif
395# define wxSIZE_T_IS_UINT
c427acc8 396
80da12bc
DE
397/*
398 OS: Otherwise it must be Windows
399 */
78340847 400#else /* Windows */
ef620df0
VZ
401# ifndef __WINDOWS__
402# define __WINDOWS__
403# endif /* Windows */
78340847
VZ
404
405 /* to be changed for Win64! */
ef620df0 406# ifndef __WIN32__
3a5bcc4d 407# error "__WIN32__ should be defined for Win32 and Win64, Win16 is not supported"
ef620df0 408# endif
78340847 409
78340847
VZ
410 /* size_t is the same as unsigned int for all Windows compilers we know, */
411 /* so define it if it hadn't been done by configure yet */
3656eefc 412# if !defined(wxSIZE_T_IS_UINT) && !defined(wxSIZE_T_IS_ULONG) && !defined(__WIN64__)
ef620df0
VZ
413# define wxSIZE_T_IS_UINT
414# endif
78340847
VZ
415#endif /* OS */
416
417/*
418 if we're on a Unix system but didn't use configure (so that setup.h didn't
419 define __UNIX__), do define __UNIX__ now
420 */
421#if !defined(__UNIX__) && defined(__UNIX_LIKE__)
ef620df0 422# define __UNIX__
78340847
VZ
423#endif /* Unix */
424
f79bd02d 425#if defined(__WXMOTIF__) || defined(__WXX11__)
ef620df0 426# define __X__
78340847
VZ
427#endif
428
7eb00c80
VZ
429/*
430 We get "Large Files (ILP32) not supported in strict ANSI mode." #error
431 from HP-UX standard headers when compiling with g++ without this:
432 */
433#if defined(__HPUX__) && !defined(__STDC_EXT__)
434# define __STDC_EXT__ 1
435#endif
436
a84d5f9d 437/* Force linking against required libraries under Windows: */
eddb3250
VS
438#ifdef __WXWINCE__
439# include "wx/msw/wince/libraries.h"
a84d5f9d
MW
440#elif defined __WINDOWS__
441# include "wx/msw/libraries.h"
eddb3250
VS
442#endif
443
459f812b
SN
444#if defined(__BORLANDC__) || (defined(__GNUC__) && __GNUC__ < 3)
445#define wxNEEDS_CHARPP
446#endif
447
e87d78bb
VZ
448#if ( defined( __GNUWIN32__ ) || defined( __MINGW32__ ) || \
449 ( defined( __CYGWIN__ ) && defined( __WINDOWS__ ) ) || \
450 wxCHECK_WATCOM_VERSION(1,0) ) && \
451 !defined(__DOS__) && \
452 !defined(__WXPM__) && \
453 !defined(__WXMOTIF__) && \
454 !defined(__WXX11__)
455# include "wx/msw/gccpriv.h"
456#else
457# undef wxCHECK_W32API_VERSION
458# define wxCHECK_W32API_VERSION(maj, min) (0)
459#endif
460
461
3d909cc4
SC
462/*
463 Handle Darwin gcc universal compilation. Don't do this in an Apple-
464 specific case since no sane compiler should be defining either
465 __BIG_ENDIAN__ or __LITTLE_ENDIAN__ unless it really is generating
466 code that will be hosted on a machine with the appropriate endianness.
467 If a compiler defines neither, assume the user or configure set
468 WORDS_BIGENDIAN appropriately.
469 */
470#if defined(__BIG_ENDIAN__)
471# undef WORDS_BIGENDIAN
472# define WORDS_BIGENDIAN 1
473#elif defined(__LITTLE_ENDIAN__)
474# undef WORDS_BIGENDIAN
475#elif defined(__WXMAC__) && !defined(WORDS_BIGENDIAN)
476/* According to Stefan even ancient Mac compilers defined __BIG_ENDIAN__ */
477# warning "Compiling wxMac with probably wrong endianness"
478#endif
479/* also the 32/64 bit universal builds must be handled accordingly */
480#ifdef __DARWIN__
481# ifdef __LP64__
482# undef SIZEOF_VOID_P
483# undef SIZEOF_LONG
484# undef SIZEOF_SIZE_T
485# define SIZEOF_VOID_P 8
486# define SIZEOF_LONG 8
487# define SIZEOF_SIZE_T 8
488# else
489# undef SIZEOF_VOID_P
490# undef SIZEOF_LONG
491# undef SIZEOF_SIZE_T
492# define SIZEOF_VOID_P 4
493# define SIZEOF_LONG 4
494# define SIZEOF_SIZE_T 4
495# endif
496#endif
497
498/*
499 Define various OS X symbols before including wx/chkconf.h which uses them.
500
501 __WXOSX_MAC__ means Mac OS X, non embedded
502 __WXOSX_IPHONE__ means OS X iPhone
503 */
504
505/*
506 Normally all of __WXOSX_XXX__, __WXOSX__ and __WXMAC__ are defined by
507 configure but ensure that we also define them if configure was not used for
508 whatever reason.
509
510 The primary symbol remains __WXOSX_XXX__ one, __WXOSX__ exists to allow
511 checking for any OS X port (Carbon and Cocoa) and __WXMAC__ is an old name
512 for it.
513 */
da0ee16e 514#if defined(__WXOSX_CARBON__) || defined(__WXOSX_COCOA__) || defined(__WXOSX_IPHONE__)
3d909cc4
SC
515# ifndef __WXOSX__
516# define __WXOSX__ 1
517# endif
518# ifndef __WXMAC__
519# define __WXMAC__ 1
520# endif
521#endif
522
523#ifdef __WXOSX__
524/* setup precise defines according to sdk used */
525# include <TargetConditionals.h>
526# if defined(__WXOSX_IPHONE__)
527# if !( defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE )
528# error "incorrect SDK for an iPhone build"
529# endif
530# else
531# if wxUSE_GUI && !(defined(__WXOSX_CARBON__) || defined(__WXOSX_COCOA__))
532# error "one of __WXOSX_IPHONE__, __WXOSX_CARBON__ or __WXOSX_COCOA__ must be defined for the GUI build"
533# endif
534# if !( defined(TARGET_OS_MAC) && TARGET_OS_MAC )
535# error "incorrect SDK for a Mac OS X build"
536# endif
537# define __WXOSX_MAC__ 1
538# endif
539#endif
540
541#ifdef __WXOSX_MAC__
542# if defined(__MACH__)
543# include <AvailabilityMacros.h>
544# ifndef MAC_OS_X_VERSION_10_4
545# define MAC_OS_X_VERSION_10_4 1040
546# endif
547# ifndef MAC_OS_X_VERSION_10_5
548# define MAC_OS_X_VERSION_10_5 1050
549# endif
550# ifndef MAC_OS_X_VERSION_10_6
551# define MAC_OS_X_VERSION_10_6 1060
552# endif
b452fd55
RD
553# ifndef MAC_OS_X_VERSION_10_7
554# define MAC_OS_X_VERSION_10_7 1070
555# endif
dea54670
SC
556# ifndef MAC_OS_X_VERSION_10_8
557# define MAC_OS_X_VERSION_10_8 1080
558# endif
3d909cc4
SC
559# else
560# error "only mach-o configurations are supported"
561# endif
562#endif
563
564/*
565 __WXOSX_OR_COCOA__ is a common define to wxOSX (Carbon or Cocoa) and wxCocoa ports under OS X.
566
567 DO NOT use this define in base library code. Although wxMac has its own
568 private base library (and thus __WXOSX_OR_COCOA__,__WXMAC__ and related defines are
569 valid there), wxCocoa shares its library with other ports like wxGTK and wxX11.
570
571 To keep wx authors from screwing this up, only enable __WXOSX_OR_COCOA__ for wxCocoa when
572 not compiling the base library. We determine this by first checking if
573 wxUSE_BASE is not defined. If it is not defined, then we're not buildling
574 the base library, and possibly not building wx at all (but actually building
575 user code that's using wx). If it is defined then we must check to make sure
576 it is not true. If it is true, we're building base.
577
578 If you want it in the common darwin base library then use __DARWIN__. You
579 can use any Darwin-available libraries like CoreFoundation but please avoid
580 using OS X libraries like Carbon or CoreServices.
581
582 */
583#if defined(__WXOSX__) || (defined(__WXCOCOA__) && (!defined(wxUSE_BASE) || !wxUSE_BASE))
584# define __WXOSX_OR_COCOA__ 1
585#endif
382c4ade 586
d6f2a891
VZ
587/*
588 check the consistency of the settings in setup.h: note that this must be
589 done after setting wxUSE_UNICODE correctly as it is used in wx/chkconf.h
590 and after defining the compiler macros which are used in it too
591 */
592#include "wx/chkconf.h"
593
594
595/*
596 some compilers don't support iostream.h any longer, while some of theme
597 are not updated with <iostream> yet, so override the users setting here
598 in such case.
599 */
600#if defined(_MSC_VER) && (_MSC_VER >= 1310)
601# undef wxUSE_IOSTREAMH
602# define wxUSE_IOSTREAMH 0
603#elif defined(__DMC__) || defined(__WATCOMC__)
604# undef wxUSE_IOSTREAMH
605# define wxUSE_IOSTREAMH 1
606#elif defined(__MINGW32__)
607# undef wxUSE_IOSTREAMH
608# define wxUSE_IOSTREAMH 0
609#endif /* compilers with/without iostream.h */
610
611/*
612 old C++ headers (like <iostream.h>) declare classes in the global namespace
613 while the new, standard ones (like <iostream>) do it in std:: namespace,
614 unless it's an old gcc version.
615
616 using this macro allows constuctions like "wxSTD iostream" to work in
617 either case
618 */
619#if !wxUSE_IOSTREAMH && (!defined(__GNUC__) || ( __GNUC__ > 2 ) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
620# define wxSTD std::
621#else
622# define wxSTD
623#endif
624
b6937696
JJ
625/* On OpenVMS with the most recent HP C++ compiler some function (i.e. wscanf)
626 * are only available in the std-namespace. (BUG???)
627 */
628#if defined( __VMS ) && (__DECCXX_VER >= 70100000) && !defined(__STD_CFRONT) && !defined( __NONAMESPACE_STD )
629# define wxVMS_USE_STD std::
630#else
631# define wxVMS_USE_STD
632#endif
633
455f7c82
VZ
634#ifdef __VMS
635#define XtDisplay XTDISPLAY
636#ifdef __WXMOTIF__
637#define XtParent XTPARENT
638#define XtScreen XTSCREEN
639#define XtWindow XTWINDOW
640#endif
641#endif
642
0b30bb0b
JS
643/* Choose which method we will use for updating menus
644 * - in OnIdle, or when we receive a wxEVT_MENU_OPEN event.
dea54670 645 * Presently, only Windows, OS X and GTK+ support wxEVT_MENU_OPEN.
0b30bb0b
JS
646 */
647#ifndef wxUSE_IDLEMENUUPDATES
1c415bab 648# if (defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXOSX__)) && !defined(__WXUNIVERSAL__)
ef620df0
VZ
649# define wxUSE_IDLEMENUUPDATES 0
650# else
651# define wxUSE_IDLEMENUUPDATES 1
652# endif
0b30bb0b
JS
653#endif
654
5e967044
JS
655/*
656 * Define symbols that are not yet in
657 * configure or possibly some setup.h files.
658 * They will need to be added.
659 */
660
661#ifndef wxUSE_FILECONFIG
6502dc68 662# if wxUSE_CONFIG && wxUSE_TEXTFILE
ef620df0
VZ
663# define wxUSE_FILECONFIG 1
664# else
665# define wxUSE_FILECONFIG 0
666# endif
5e967044
JS
667#endif
668
669#ifndef wxUSE_HOTKEY
ef620df0 670# define wxUSE_HOTKEY 0
5e967044
JS
671#endif
672
086b3a5b 673#if !defined(wxUSE_WXDIB) && defined(__WXMSW__)
ef620df0 674# define wxUSE_WXDIB 1
086b3a5b
JS
675#endif
676
e55e621e
VZ
677/*
678 Optionally supported C++ features.
679 */
680
681/*
682 RTTI: if it is disabled in build/msw/makefile.* then this symbol will
683 already be defined but it's also possible to do it from configure (with
684 g++) or by editing project files with MSVC so test for it here too.
685 */
686#ifndef wxNO_RTTI
3017880e
VZ
687 /*
688 Only 4.3 defines __GXX_RTTI by default so its absence is not an
689 indication of disabled RTTI with the previous versions.
690 */
691# if wxCHECK_GCC_VERSION(4, 3)
e55e621e
VZ
692# ifndef __GXX_RTTI
693# define wxNO_RTTI
694# endif
695# elif defined(_MSC_VER)
696# ifndef _CPPRTTI
697# define wxNO_RTTI
698# endif
699# endif
e78c47e3 700#endif /* wxNO_RTTI */
e55e621e 701
78340847 702#endif /* _WX_PLATFORM_H_ */