Prevent builds where nonfragile-abi state does not match that with which

the base library was configured.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29929 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2010-03-13 19:45:23 +00:00
parent a7653da42c
commit a83ae2b69d
5 changed files with 38 additions and 4 deletions

View file

@ -1,3 +1,12 @@
2010-03-13 Richard Frith-Macdonald <rfm@gnu.org>
* configure.ac: Note use of nonfragile abi
* configure: regenerate
* Headers/Additions/GNUstepBase/GSConfig.h.in: save nonfragile abi state
* Headers/Additions/GNUstepBase/GSVersionMacros.h:
Fix check for nonfragile-abi state, and raise an error if the current
compile doesn't atch the state used to build the base library.
2010-03-12 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSKeyedArchiver.m:

View file

@ -220,6 +220,7 @@ typedef struct {
#define OBJC2RUNTIME @OBJC2RUNTIME@
#define BASE_NATIVE_OBJC_EXCEPTIONS @BASE_NATIVE_OBJC_EXCEPTIONS@
#define GS_NONFRAGILE @GS_NONFRAGILE@
#import <GNUstepBase/preface.h>

View file

@ -186,6 +186,13 @@
*/
#define GS_API_MACOSX 100000
#if defined(GNUSTEP_BASE_INTERNAL)
#import "GNUstepBase/GSConfig.h"
#else
#import <GNUstepBase/GSConfig.h>
#endif
/* The following is for deciding whether private instance variables
* should be visible ... if we are building with a compiler which
* does not define __has_feature then we know we don't have non-fragile
@ -201,8 +208,15 @@
#define __has_feature(x) 0
#endif
#define GS_NONFRAGILE \
(__has_feature(objc_nonfragile_abi) || __has_feature(objc_nonfragile_abi2))
#if (__has_feature(objc_nonfragile_abi) || __has_feature(objc_nonfragile_abi2))
#if !GS_NONFRAGILE
#error "You are now using the objc-nonfragile-abi but your gnustep-base was not configured to use it."
#endif
#else
#if GS_NONFRAGILE
#error "Your gnustep-base was configured for the objc-nonfragile-abi but you are not using it now."
#endif
#endif
#define GS_EXPOSE(X) (!GS_NONFRAGILE || defined(EXPOSE_##X##_IVARS))

10
configure vendored
View file

@ -708,6 +708,7 @@ NX_CONST_STRING_OBJCFLAGS
NX_CONST_STRING_CLASS
OBJC2RUNTIME
OBJCFLAGS
GS_NONFRAGILE
HAVE_OBJC_SYNC_ENTER
GS_SIZEOF_MUTEX_T
GS_SIZEOF_COND_T
@ -9332,7 +9333,11 @@ CPPFLAGS="$saved_CPPFLAGS"
if test $non_fragile = yes; then
OBJCFLAGS="$OBJCFLAGS -fobjc-nonfragile-abi"
GS_NONFRAGILE=1
else
GS_NONFRAGILE=0
fi
{ echo "$as_me:$LINENO: result: $non_fragile" >&5
echo "${ECHO_T}$non_fragile" >&6; }
@ -22004,8 +22009,8 @@ NX_CONST_STRING_OBJCFLAGS!$NX_CONST_STRING_OBJCFLAGS$ac_delim
NX_CONST_STRING_CLASS!$NX_CONST_STRING_CLASS$ac_delim
OBJC2RUNTIME!$OBJC2RUNTIME$ac_delim
OBJCFLAGS!$OBJCFLAGS$ac_delim
GS_NONFRAGILE!$GS_NONFRAGILE$ac_delim
HAVE_OBJC_SYNC_ENTER!$HAVE_OBJC_SYNC_ENTER$ac_delim
GS_SIZEOF_MUTEX_T!$GS_SIZEOF_MUTEX_T$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@ -22047,6 +22052,7 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
GS_SIZEOF_MUTEX_T!$GS_SIZEOF_MUTEX_T$ac_delim
GS_SIZEOF_COND_T!$GS_SIZEOF_COND_T$ac_delim
HAVE_PTS_STREAM_MODULES!$HAVE_PTS_STREAM_MODULES$ac_delim
INCLUDE_STDINT!$INCLUDE_STDINT$ac_delim
@ -22091,7 +22097,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 42; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 43; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

View file

@ -681,7 +681,11 @@ CPPFLAGS="$saved_CPPFLAGS"
if test $non_fragile = yes; then
OBJCFLAGS="$OBJCFLAGS -fobjc-nonfragile-abi"
AC_SUBST(OBJCFLAGS)
GS_NONFRAGILE=1
else
GS_NONFRAGILE=0
fi
AC_SUBST(GS_NONFRAGILE)
AC_MSG_RESULT($non_fragile)
# Don't revert any Objective-C flags as they are used in the next test