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