blob: 034f2ab049a9b17a3bf5bb2ec5b9b8414cb266ec [file] [log] [blame]
#ifndef _OBJC_NEXT_ABI_H_
#define _OBJC_NEXT_ABI_H_
/* Produce a define that allows us to figure out what facilities are
available for this gcc and OS combination.
*/
/* By default we do nothing - therefore ifdef NEXT_OBJC_USE_NEW_INTERFACE
* is reliable for detecting
* (a) versions of the compiler that are transitional to the new next ABI
* (b) versions of the target that require the new ABI.
*
* This applies for versions of OSX >= 10.5 (darwin9).
*
* A compiler capable of producing ObjC V2 ABI should define __OBJC2__
*/
#undef NEXT_OBJC_ABI_VERSION
#undef NEXT_OBJC_USE_NEW_INTERFACE
#ifdef __NEXT_RUNTIME__
# if (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050 || __OBJC2__)
/* We have to use an updated interface for 32bit NeXT to avoid
* 'deprecated' warnings.
* For 64bit NeXT the ABI is different (and the interfaces 'deprecated'
* for 32bit have been removed).
*/
# define NEXT_OBJC_USE_NEW_INTERFACE 1
# if __OBJC2__ || __LP64__
/* We have OBJC v2 ABI compiler,
(or, at least, the available NeXT runtime requires one) */
# define NEXT_OBJC_ABI_VERSION 2
# else
/* We leave it open to define ABI 1 if and when we implement those
* extensions.
*/
# define NEXT_OBJC_ABI_VERSION 0
# endif
# else
/* All before 10.5 is ABI 0 */
# define NEXT_OBJC_ABI_VERSION 0
# endif
#endif
#endif /* _OBJC_NEXT_ABI_H_ */