| /* Check which version of the API and ABI are appropriate for the target. |
| Copyright (C) 2010, 2011 Free Software Foundation, Inc. |
| |
| Contributed by Iain Sandoe <iains@gcc.gnu.org> |
| |
| This file is part of GCC. |
| |
| GCC is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 3, or (at your option) |
| any later version. |
| |
| GCC is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with GCC; see the file COPYING3. If not see |
| <http://www.gnu.org/licenses/>. */ |
| |
| #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 versions of the target that require either |
| * API=2, or both API & ABI = 2 (m64 code). |
| * |
| * 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 |
| /* Pre-OSX 10.5 all is ABI 0. */ |
| # define NEXT_OBJC_ABI_VERSION 0 |
| # endif /* MAC_OS_X_VERSION_MIN_REQUIRED > 10.5 or OBJC2 */ |
| #endif /* __NEXT_RUNTIME__ */ |
| |
| #endif /* _OBJC_NEXT_ABI_H_ */ |