/* Header file for all objective-c code in the base library. * This imports all the common headers in a consistent order such that * we can be sure only local headers are used rather than any which * might be from an earlier build. */ #ifndef COMMON_H #define COMMON_H #include "config.h" #if defined(HAVE_STRING_H) /* For POSIX strerror_r() and others */ #include #endif #if defined(HAVE_STRINGS_H) /* For strcasecmp() and others */ #include #endif #include /* If this is included in a file in the Additions subdirectory, and we are * building for use with the NeXT/Apple Foundation, then we need to import * the native headers in preference to any of our own. */ #if defined(NeXT_Foundation_LIBRARY) #import #endif #import "GNUstepBase/GSConfig.h" #import "GNUstepBase/GSVersionMacros.h" /* Set localisation macro for use within the base library itsself. */ #define GS_LOCALISATION_BUNDLE \ [NSBundle bundleForLibrary: @"gnustep-base" version: \ OBJC_STRINGIFY(GNUSTEP_BASE_MAJOR_VERSION.GNUSTEP_BASE_MINOR_VERSION)] #import "GNUstepBase/GNUstep.h" /* Foundation/NSObject.h imports and * so we import local versions first. */ #import "Foundation/NSZone.h" #import "Foundation/NSObjCRuntime.h" /* Almost all headers import so we import * "Foundation/NSObject.h" first, to ensure we have a local copy. */ #import "Foundation/NSObject.h" #import "GNUstepBase/NSObject+GNUstepBase.h" /* These headers are used in almost every file. */ #import "Foundation/NSString.h" #import "Foundation/NSDebug.h" /* These headers needed for string localisation ... hopefully we will * localise all the exceptions and debug/error messages in all the source * some day, so localisation needs ot be in the common header for all code. */ #import "Foundation/NSBundle.h" #import "GNUstepBase/NSBundle+GNUstepBase.h" /* We need to wrap unistd.h because it is used throughout the code and some * versions include __block as a variable name, and clang also defines that * and depends on the definition later ... so we resort to the fragile hack * of redefining according to the observed definition. */ #ifdef HAVE_UNISTD_H # ifdef __block # undef __block # define __block __gs_unistd_block # include # undef __block # define __block __attribute__((__blocks__(byref))) # else # define __block __gs_unistd_block # include # undef __block # endif #endif #endif /* COMMON_H */