]> git.saurik.com Git - wxWidgets.git/blame - include/wx/msw/chkconf.h
make access for virtuals match base
[wxWidgets.git] / include / wx / msw / chkconf.h
CommitLineData
01ebf752
JS
1/*
2 * Name: wx/msw/chkconf.h
3 * Purpose: Compiler-specific configuration checking
4 * Author: Julian Smart
5 * Modified by:
6 * Created: 01/02/97
7 * RCS-ID: $Id$
8 * Copyright: (c) Julian Smart
65571936 9 * Licence: wxWindows licence
01ebf752
JS
10 */
11
34cbe514
RN
12/* THIS IS A C FILE, DON'T USE C++ FEATURES (IN PARTICULAR COMMENTS) IN IT */
13
01ebf752
JS
14#ifndef _WX_MSW_CHKCONF_H_
15#define _WX_MSW_CHKCONF_H_
16
74987083 17/* ensure that MSW-specific settings are defined */
07b1232d
VZ
18#ifndef wxUSE_ACTIVEX
19# ifdef wxABORT_ON_CONFIG_ERROR
20# error "wxUSE_ACTIVEX must be defined."
21# else
22# define wxUSE_ACTIVEX 0
23# endif
24#endif /* !defined(wxUSE_ACTIVEX) */
25
26#ifndef wxUSE_CRASHREPORT
27# ifdef wxABORT_ON_CONFIG_ERROR
28# error "wxUSE_CRASHREPORT must be defined."
29# else
30# define wxUSE_CRASHREPORT 0
31# endif
32#endif /* !defined(wxUSE_CRASHREPORT) */
33
74987083
VZ
34#ifndef wxUSE_DC_CACHEING
35# ifdef wxABORT_ON_CONFIG_ERROR
36# error "wxUSE_DC_CACHEING must be defined"
37# else
38# define wxUSE_DC_CACHEING 1
39# endif
40#endif /* wxUSE_DC_CACHEING */
41
07b1232d
VZ
42#ifndef wxUSE_DIALUP_MANAGER
43# ifdef wxABORT_ON_CONFIG_ERROR
44# error "wxUSE_DIALUP_MANAGER must be defined."
45# else
46# define wxUSE_DIALUP_MANAGER 0
47# endif
48#endif /* !defined(wxUSE_DIALUP_MANAGER) */
74987083 49
07b1232d
VZ
50#ifndef wxUSE_MS_HTML_HELP
51# ifdef wxABORT_ON_CONFIG_ERROR
52# error "wxUSE_MS_HTML_HELP must be defined."
53# else
54# define wxUSE_MS_HTML_HELP 0
55# endif
56#endif /* !defined(wxUSE_MS_HTML_HELP) */
01ebf752 57
61873536
VZ
58#ifndef wxUSE_INICONF
59# ifdef wxABORT_ON_CONFIG_ERROR
60# error "wxUSE_INICONF must be defined."
61# else
62# define wxUSE_INICONF 0
63# endif
64#endif /* !defined(wxUSE_INICONF) */
65
07b1232d
VZ
66#ifndef wxUSE_OLE
67# ifdef wxABORT_ON_CONFIG_ERROR
68# error "wxUSE_OLE must be defined."
69# else
70# define wxUSE_OLE 0
71# endif
72#endif /* !defined(wxUSE_OLE) */
12bdd77c 73
07b1232d
VZ
74#ifndef wxUSE_OLE_AUTOMATION
75# ifdef wxABORT_ON_CONFIG_ERROR
76# error "wxUSE_OLE_AUTOMATION must be defined."
77# else
78# define wxUSE_OLE_AUTOMATION 0
79# endif
80#endif /* !defined(wxUSE_OLE_AUTOMATION) */
81
82#ifndef wxUSE_UNICODE_MSLU
83# ifdef wxABORT_ON_CONFIG_ERROR
84# error "wxUSE_UNICODE_MSLU must be defined."
85# else
86# define wxUSE_UNICODE_MSLU 0
87# endif
88#endif /* wxUSE_UNICODE_MSLU */
89
90#ifndef wxUSE_UXTHEME
91# ifdef wxABORT_ON_CONFIG_ERROR
92# error "wxUSE_UXTHEME must be defined."
93# else
94# define wxUSE_UXTHEME 0
95# endif
96#endif /* wxUSE_UXTHEME */
97
820a7a1b
VZ
98/*
99 * We don't want to give an error if wxUSE_UNICODE_MSLU is enabled but
100 * wxUSE_UNICODE is not as this would make it impossible to simply set the
101 * former in wx/setup.h as then the library wouldn't compile in non-Unicode
102 * configurations, so instead simply unset it silently when it doesn't make
103 * sense.
104 */
105#if wxUSE_UNICODE_MSLU && !wxUSE_UNICODE
106# undef wxUSE_UNICODE_MSLU
107# define wxUSE_UNICODE_MSLU 0
219b657f
JS
108#endif
109
07b1232d 110
219b657f 111/*
07b1232d 112 * disable the settings which don't work for some compilers
219b657f
JS
113 */
114
07b1232d
VZ
115#ifndef wxUSE_NORLANDER_HEADERS
116# if ( wxCHECK_WATCOM_VERSION(1,0) || defined(__WINE__) ) || \
117 ((defined(__MINGW32__) || defined(__CYGWIN__)) && ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95))))
118# define wxUSE_NORLANDER_HEADERS 1
119# else
120# define wxUSE_NORLANDER_HEADERS 0
121# endif
820a7a1b
VZ
122#endif
123
b3dfbbc9 124/*
3e3a3e17
VZ
125 * All of the settings below require SEH support (__try/__catch) and can't work
126 * without it.
b3dfbbc9 127 */
3e3a3e17
VZ
128#if !defined(_MSC_VER) && \
129 (!defined(__BORLANDC__) || __BORLANDC__ < 0x0550)
820a7a1b
VZ
130# undef wxUSE_ON_FATAL_EXCEPTION
131# define wxUSE_ON_FATAL_EXCEPTION 0
3e3a3e17 132
820a7a1b
VZ
133# undef wxUSE_CRASHREPORT
134# define wxUSE_CRASHREPORT 0
3e3a3e17 135
820a7a1b
VZ
136# undef wxUSE_STACKWALKER
137# define wxUSE_STACKWALKER 0
3b2b40b4 138#endif /* compiler doesn't support SEH */
b3dfbbc9 139
5e7f00a1 140/* wxUSE_DEBUG_NEW_ALWAYS doesn't work with CodeWarrior */
01ebf752 141#if defined(__MWERKS__)
820a7a1b
VZ
142# undef wxUSE_DEBUG_NEW_ALWAYS
143# define wxUSE_DEBUG_NEW_ALWAYS 0
01ebf752
JS
144#endif
145
146#if defined(__GNUWIN32__)
5e7f00a1
VZ
147 /* These don't work as expected for mingw32 and cygwin32 */
148# undef wxUSE_MEMORY_TRACING
149# define wxUSE_MEMORY_TRACING 0
150
151# undef wxUSE_GLOBAL_MEMORY_OPERATORS
152# define wxUSE_GLOBAL_MEMORY_OPERATORS 0
153
154# undef wxUSE_DEBUG_NEW_ALWAYS
155# define wxUSE_DEBUG_NEW_ALWAYS 0
01ebf752 156
5e7f00a1
VZ
157/* some Cygwin versions don't have wcslen */
158# if defined(__CYGWIN__) || defined(__CYGWIN32__)
159# if ! ((__GNUC__>2) ||((__GNUC__==2) && (__GNUC_MINOR__>=95)))
160# undef wxUSE_WCHAR_T
161# define wxUSE_WCHAR_T 0
162# endif
01ebf752 163#endif
5e7f00a1
VZ
164
165#endif /* __GNUWIN32__ */
01ebf752 166
16f10340
VZ
167/* wxUSE_MFC is not defined when using configure as it doesn't make sense for
168 gcc or mingw32 anyhow */
169#ifndef wxUSE_MFC
170 #define wxUSE_MFC 0
171#endif /* !defined(wxUSE_MFC) */
172
01ebf752
JS
173/* MFC duplicates these operators */
174#if wxUSE_MFC
5e7f00a1
VZ
175# undef wxUSE_GLOBAL_MEMORY_OPERATORS
176# define wxUSE_GLOBAL_MEMORY_OPERATORS 0
01ebf752 177
5e7f00a1
VZ
178# undef wxUSE_DEBUG_NEW_ALWAYS
179# define wxUSE_DEBUG_NEW_ALWAYS 0
180#endif /* wxUSE_MFC */
01ebf752
JS
181
182#if (defined(__GNUWIN32__) && !wxUSE_NORLANDER_HEADERS)
820a7a1b
VZ
183 /* GnuWin32 doesn't have appropriate headers for e.g. IUnknown. */
184# undef wxUSE_DRAG_AND_DROP
185# define wxUSE_DRAG_AND_DROP 0
01ebf752
JS
186#endif
187
d7bc7fec 188#if !wxUSE_OWNER_DRAWN && !defined(__WXUNIVERSAL__)
820a7a1b
VZ
189# undef wxUSE_CHECKLISTBOX
190# define wxUSE_CHECKLISTBOX 0
01ebf752
JS
191#endif
192
0e871ad0
WS
193#if wxUSE_SPINCTRL
194# if !wxUSE_SPINBTN
195# ifdef wxABORT_ON_CONFIG_ERROR
196# error "wxSpinCtrl requires wxSpinButton on MSW"
197# else
198# undef wxUSE_SPINBTN
199# define wxUSE_SPINBTN 1
200# endif
201# endif
202#endif
203
da98e157
VZ
204/*
205 Win64-specific checks.
206 */
207#ifdef __WIN64__
208# if wxUSE_STACKWALKER
209 /* this is not currently supported under Win64, volunteers needed to
210 make it work */
211# undef wxUSE_STACKWALKER
212# define wxUSE_STACKWALKER 0
213
214# undef wxUSE_CRASHREPORT
215# define wxUSE_CRASHREPORT 0
216# endif
217#endif /* __WIN64__ */
218
219
220/*
221 Compiler-specific checks.
222 */
01ebf752 223#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
5e7f00a1
VZ
224 /* BC++ 4.0 can't compile JPEG library */
225# undef wxUSE_LIBJPEG
226# define wxUSE_LIBJPEG 0
01ebf752
JS
227#endif
228
229/* wxUSE_DEBUG_NEW_ALWAYS = 1 not compatible with BC++ in DLL mode */
230#if defined(__BORLANDC__) && (defined(WXMAKINGDLL) || defined(WXUSINGDLL))
5e7f00a1
VZ
231# undef wxUSE_DEBUG_NEW_ALWAYS
232# define wxUSE_DEBUG_NEW_ALWAYS 0
01ebf752
JS
233#endif
234
90a752c2
JS
235/* DMC++ doesn't have definitions for date picker control, so use generic control
236 */
90a752c2 237#ifdef __DMC__
820a7a1b
VZ
238# if wxUSE_DATEPICKCTRL
239# undef wxUSE_DATEPICKCTRL_GENERIC
240# undef wxUSE_DATEPICKCTRL
241# endif
242# define wxUSE_DATEPICKCTRL 0
243# define wxUSE_DATEPICKCTRL_GENERIC 1
90a752c2
JS
244#endif
245
a1f48575 246
b55c3716 247
a1f48575
VZ
248/*
249 un/redefine the options which we can't compile (after checking that they're
250 defined
251 */
252#ifdef __WINE__
07b1232d
VZ
253# if wxUSE_ACTIVEX
254# undef wxUSE_ACTIVEX
255# define wxUSE_ACTIVEX 0
256# endif /* wxUSE_ACTIVEX */
257
258# if wxUSE_UNICODE_MSLU
259# undef wxUSE_UNICODE_MSLU
260# define wxUSE_UNICODE_MSLU 0
261# endif /* wxUSE_UNICODE_MSLU */
28efe654 262#endif /* __WINE__ */
a1f48575 263
b55c3716 264
ca5c6ac3 265/* check settings consistency for MSW-specific ones */
07b1232d
VZ
266#if wxUSE_CRASHREPORT && !wxUSE_ON_FATAL_EXCEPTION
267# ifdef wxABORT_ON_CONFIG_ERROR
268# error "wxUSE_CRASHREPORT requires wxUSE_ON_FATAL_EXCEPTION"
269# else
270# undef wxUSE_CRASHREPORT
271# define wxUSE_CRASHREPORT 0
272# endif
273#endif /* wxUSE_CRASHREPORT */
274
ca5c6ac3 275#if !wxUSE_VARIANT
a1f48575
VZ
276# if wxUSE_ACTIVEX
277# ifdef wxABORT_ON_CONFIG_ERROR
278# error "wxActiveXContainer requires wxVariant"
279# else
280# undef wxUSE_ACTIVEX
281# define wxUSE_ACTIVEX 0
282# endif
283# endif
284
ca5c6ac3
VZ
285# if wxUSE_OLE_AUTOMATION
286# ifdef wxABORT_ON_CONFIG_ERROR
287# error "wxAutomationObject requires wxVariant"
288# else
289# undef wxUSE_OLE_AUTOMATION
290# define wxUSE_OLE_AUTOMATION 0
291# endif
292# endif
a1f48575 293#endif /* !wxUSE_VARIANT */
ca5c6ac3 294
b55c3716
VZ
295#if !wxUSE_DYNAMIC_LOADER
296# if wxUSE_MS_HTML_HELP
297# ifdef wxABORT_ON_CONFIG_ERROR
298# error "wxUSE_MS_HTML_HELP requires wxUSE_DYNAMIC_LOADER."
299# else
63de3718 300# undef wxUSE_MS_HTML_HELP
285ba64d 301# define wxUSE_MS_HTML_HELP 0
b55c3716
VZ
302# endif
303# endif
304# if wxUSE_DIALUP_MANAGER
305# ifdef wxABORT_ON_CONFIG_ERROR
306# error "wxUSE_DIALUP_MANAGER requires wxUSE_DYNAMIC_LOADER."
307# else
6fbc7b59 308# undef wxUSE_DIALUP_MANAGER
285ba64d 309# define wxUSE_DIALUP_MANAGER 0
b55c3716
VZ
310# endif
311# endif
a1f48575 312#endif /* !wxUSE_DYNAMIC_LOADER */
b55c3716 313
64c288fa
JS
314#if !wxUSE_DYNLIB_CLASS
315# if wxUSE_UXTHEME
316# ifdef wxABORT_ON_CONFIG_ERROR
317# error "wxUSE_UXTHEME requires wxUSE_DYNLIB_CLASS"
318# else
319# undef wxUSE_UXTHEME
320# define wxUSE_UXTHEME 0
321# endif
322# endif
323# if wxUSE_MEDIACTRL
324# ifdef wxABORT_ON_CONFIG_ERROR
325# error "wxUSE_MEDIACTRL requires wxUSE_DYNLIB_CLASS"
326# else
327# undef wxUSE_MEDIACTRL
328# define wxUSE_MEDIACTRL 0
329# endif
330# endif
8ef51d67
JS
331# if wxUSE_INKEDIT
332# ifdef wxABORT_ON_CONFIG_ERROR
333# error "wxUSE_INKEDIT requires wxUSE_DYNLIB_CLASS"
334# else
335# undef wxUSE_INKEDIT
336# define wxUSE_INKEDIT 0
337# endif
338# endif
a1f48575 339#endif /* !wxUSE_DYNLIB_CLASS */
64c288fa 340
42ef5bda 341#if !wxUSE_OLE
a1f48575
VZ
342# if wxUSE_ACTIVEX
343# ifdef wxABORT_ON_CONFIG_ERROR
344# error "wxActiveXContainer requires wxUSE_OLE"
345# else
346# undef wxUSE_ACTIVEX
347# define wxUSE_ACTIVEX 0
348# endif
349# endif
350
42ef5bda
VZ
351# if wxUSE_DATAOBJ
352# ifdef wxABORT_ON_CONFIG_ERROR
353# error "wxUSE_DATAOBJ requires wxUSE_OLE"
354# else
355# undef wxUSE_DATAOBJ
356# define wxUSE_DATAOBJ 0
357# endif
358# endif
ca5c6ac3
VZ
359
360# if wxUSE_OLE_AUTOMATION
361# ifdef wxABORT_ON_CONFIG_ERROR
362# error "wxAutomationObject requires wxUSE_OLE"
363# else
364# undef wxUSE_OLE_AUTOMATION
365# define wxUSE_OLE_AUTOMATION 0
366# endif
367# endif
a1f48575
VZ
368#endif /* !wxUSE_OLE */
369
370#if !wxUSE_ACTIVEX
371# if wxUSE_MEDIACTRL
372# ifdef wxABORT_ON_CONFIG_ERROR
373# error "wxMediaCtl requires wxActiveXContainer"
374# else
375# undef wxUSE_MEDIACTRL
376# define wxUSE_MEDIACTRL 0
377# endif
378# endif
379#endif /* !wxUSE_ACTIVEX */
42ef5bda 380
07b1232d
VZ
381#if defined(__WXUNIVERSAL__) && wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW && !wxUSE_POSTSCRIPT
382# undef wxUSE_POSTSCRIPT
383# define wxUSE_POSTSCRIPT 1
384#endif
385
5e7f00a1 386#endif /* _WX_MSW_CHKCONF_H_ */