X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/258593354e0a19bb74e23d7978fdc01da1942b2a..a0ff36118882acd393d51b3bc484780f091efbdb:/include/wx/platform.h?ds=sidebyside diff --git a/include/wx/platform.h b/include/wx/platform.h index 21c605a99f..6f2601ff46 100644 --- a/include/wx/platform.h +++ b/include/wx/platform.h @@ -14,6 +14,11 @@ #ifndef _WX_PLATFORM_H_ #define _WX_PLATFORM_H_ +/* GUI build by default */ +#if !defined(wxUSE_GUI) +# define wxUSE_GUI 1 +#endif /* !defined(wxUSE_GUI) */ + /* Codewarrior doesn't define any Windows symbols until some headers @@ -27,22 +32,67 @@ # endif #endif +#ifdef __WXMAC_XCODE__ +# include +# include +# include +# include "wx/osx/config_xcode.h" +#endif + /* - WXOSX targets - __WXOSX_MAC__ means Mac OS X, non embedded - __WXOSX_IPHONE__ means OS X iPhone -*/ + Handle Darwin gcc universal compilation. Don't do this in an Apple- + specific case since no sane compiler should be defining either + __BIG_ENDIAN__ or __LITTLE_ENDIAN__ unless it really is generating + code that will be hosted on a machine with the appropriate endianness. + If a compiler defines neither, assume the user or configure set + WORDS_BIGENDIAN appropriately. + */ +#if defined(__BIG_ENDIAN__) +# undef WORDS_BIGENDIAN +# define WORDS_BIGENDIAN 1 +#elif defined(__LITTLE_ENDIAN__) +# undef WORDS_BIGENDIAN +#elif defined(__WXMAC__) && !defined(WORDS_BIGENDIAN) +/* According to Stefan even ancient Mac compilers defined __BIG_ENDIAN__ */ +# warning "Compiling wxMac with probably wrong endianness" +#endif +/* also the 32/64 bit universal builds must be handled accordingly */ +#ifdef __DARWIN__ +# ifdef __LP64__ +# undef SIZEOF_VOID_P +# undef SIZEOF_LONG +# undef SIZEOF_SIZE_T +# define SIZEOF_VOID_P 8 +# define SIZEOF_LONG 8 +# define SIZEOF_SIZE_T 8 +# else +# undef SIZEOF_VOID_P +# undef SIZEOF_LONG +# undef SIZEOF_SIZE_T +# define SIZEOF_VOID_P 4 +# define SIZEOF_LONG 4 +# define SIZEOF_SIZE_T 4 +# endif +#endif /* - Normally all of __WXOSX_XXX__, __WXOSX__ and __WXMAC__ are defined by - configure but ensure that we also define them if configure was not used for - whatever reason. + Define various OS X symbols before including wx/chkconf.h which uses them. + + __WXOSX_MAC__ means Mac OS X, non embedded + __WXOSX_IPHONE__ means OS X iPhone + */ - The primare symbol remains __WXOSX_XXX__ one, __WXOSX__ exists to allow - checking for any OS X port (Carbon and Cocoa) and __WXMAC__ is an old name - for it. +/* + Normally all of __WXOSX_XXX__, __WXOSX__ and __WXMAC__ are defined by + configure but ensure that we also define them if configure was not used for + whatever reason. + + The primary symbol remains __WXOSX_XXX__ one, __WXOSX__ exists to allow + checking for any OS X port (Carbon and Cocoa) and __WXMAC__ is an old name + for it. */ -#if defined(__WXOSX_CARBON__) || defined(__WXOSX_COCOA__) || defined(__WXOSX_IPHONE__) +#if defined(__WXOSX_CARBON__) || defined(__WXOSX_COCOA__) || defined(__WXOSX_IPHONE__) \ +|| (defined(__DARWIN__) && !wxUSE_GUI) # ifndef __WXOSX__ # define __WXOSX__ 1 # endif @@ -58,13 +108,14 @@ # if !( defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE ) # error "incorrect SDK for an iPhone build" # endif -# elif defined(__WXOSX_CARBON__) || defined(__WXOSX_COCOA__) +# else +# if wxUSE_GUI && !(defined(__WXOSX_CARBON__) || defined(__WXOSX_COCOA__)) +# error "one of __WXOSX_IPHONE__, __WXOSX_CARBON__ or __WXOSX_COCOA__ must be defined for the GUI build" +# endif # if !( defined(TARGET_OS_MAC) && TARGET_OS_MAC ) # error "incorrect SDK for a Mac OS X build" # endif # define __WXOSX_MAC__ 1 -# else -# error "one of __WXOSX_IPHONE__, __WXOSX_CARBON__ or __WXOSX_COCOA__ must be defined" # endif #endif @@ -86,36 +137,28 @@ #endif /* - __WXOSX_OR_COCOA__ is a common define to wxOSX (Carbon or Cocoa) and wxCocoa ports under OS X. - - DO NOT use this define in base library code. Although wxMac has its own - private base library (and thus __WXOSX_OR_COCOA__,__WXMAC__ and related defines are - valid there), wxCocoa shares its library with other ports like wxGTK and wxX11. - - To keep wx authors from screwing this up, only enable __WXOSX_OR_COCOA__ for wxCocoa when - not compiling the base library. We determine this by first checking if - wxUSE_BASE is not defined. If it is not defined, then we're not buildling - the base library, and possibly not building wx at all (but actually building - user code that's using wx). If it is defined then we must check to make sure - it is not true. If it is true, we're building base. - - If you want it in the common darwin base library then use __DARWIN__. You - can use any Darwin-available libraries like CoreFoundation but please avoid - using OS X libraries like Carbon or CoreServices. - + __WXOSX_OR_COCOA__ is a common define to wxOSX (Carbon or Cocoa) and wxCocoa ports under OS X. + + DO NOT use this define in base library code. Although wxMac has its own + private base library (and thus __WXOSX_OR_COCOA__,__WXMAC__ and related defines are + valid there), wxCocoa shares its library with other ports like wxGTK and wxX11. + + To keep wx authors from screwing this up, only enable __WXOSX_OR_COCOA__ for wxCocoa when + not compiling the base library. We determine this by first checking if + wxUSE_BASE is not defined. If it is not defined, then we're not buildling + the base library, and possibly not building wx at all (but actually building + user code that's using wx). If it is defined then we must check to make sure + it is not true. If it is true, we're building base. + + If you want it in the common darwin base library then use __DARWIN__. You + can use any Darwin-available libraries like CoreFoundation but please avoid + using OS X libraries like Carbon or CoreServices. + */ #if defined(__WXOSX__) || (defined(__WXCOCOA__) && (!defined(wxUSE_BASE) || !wxUSE_BASE)) # define __WXOSX_OR_COCOA__ 1 #endif -#ifdef __WXOSX_OR_COCOA__ -# ifdef __WXMAC_XCODE__ -# include -# include -# include -# include "wx/osx/config_xcode.h" -# endif -#endif /* first define Windows symbols if they're not defined on the command line: we can autodetect everything we need if _WIN32 is defined @@ -264,6 +307,13 @@ #include "wx/setup_gccxml.h" #endif +/* + Convenience for any optional classes that use the wxAnyButton base class. + */ +#if wxUSE_TOGGLEBTN || wxUSE_BUTTON + #define wxHAS_ANY_BUTTON +#endif + /* Hardware platform detection. @@ -355,7 +405,7 @@ /* Preprocessor in older Borland compilers have major problems concatenating with ##. Specifically, if the string operands being - concatenated have special meaning (e.g L"str", 123i64 etc) + concatenated have special meaning (e.g. L"str", 123i64 etc) then ## will not concatenate the operands correctly. As a workaround, define wxPREPEND* and wxAPPEND* without using @@ -690,41 +740,7 @@ #define wxCHECK_SUNCC_VERSION(maj, min) (0) #endif -/* - Handle Darwin gcc universal compilation. Don't do this in an Apple- - specific case since no sane compiler should be defining either - __BIG_ENDIAN__ or __LITTLE_ENDIAN__ unless it really is generating - code that will be hosted on a machine with the appropriate endianness. - If a compiler defines neither, assume the user or configure set - WORDS_BIGENDIAN appropriately. - */ -#if defined(__BIG_ENDIAN__) -# undef WORDS_BIGENDIAN -# define WORDS_BIGENDIAN 1 -#elif defined(__LITTLE_ENDIAN__) -# undef WORDS_BIGENDIAN -#elif defined(__WXMAC__) && !defined(WORDS_BIGENDIAN) -/* According to Stefan even ancient Mac compilers defined __BIG_ENDIAN__ */ -# warning "Compiling wxMac with probably wrong endianness" -#endif -/* also the 32/64 bit universal builds must be handled accordingly */ -#ifdef __DARWIN__ -# ifdef __LP64__ -# undef SIZEOF_VOID_P -# undef SIZEOF_LONG -# undef SIZEOF_SIZE_T -# define SIZEOF_VOID_P 8 -# define SIZEOF_LONG 8 -# define SIZEOF_SIZE_T 8 -# else -# undef SIZEOF_VOID_P -# undef SIZEOF_LONG -# undef SIZEOF_SIZE_T -# define SIZEOF_VOID_P 4 -# define SIZEOF_LONG 4 -# define SIZEOF_SIZE_T 4 -# endif -#endif + /* check the consistency of the settings in setup.h: note that this must be done after setting wxUSE_UNICODE correctly as it is used in wx/chkconf.h @@ -815,18 +831,9 @@ # define wxUSE_WXDIB 1 #endif -/* - We need AvailabilityMacros.h for ifdefing out things that don't exist on - OSX 10.2 and lower - FIXME: We need a better way to detect for 10.3 then including a system header -*/ -#ifdef __DARWIN__ - #include -#endif - #if defined (__WXPALMOS__) #include "wx/palmos/missing.h" -#endif // __WXPALMOS__ +#endif /* __WXPALMOS__ */ #if !defined (__WXPALMOS5__) #define POSSEC_APPBASE @@ -847,7 +854,7 @@ #define POSSEC_FILE #define POSSEC_FILECONF #define POSSEC_FILEFN -#endif // __WXPALMOS5__ +#endif /* __WXPALMOS5__ */ /* Optionally supported C++ features. @@ -872,6 +879,6 @@ # define wxNO_RTTI # endif # endif -#endif // wxNO_RTTI +#endif /* wxNO_RTTI */ #endif /* _WX_PLATFORM_H_ */