The GNUstep base library is a free software package implementing the API of the OpenStep Foundation Kit (tm), including later additions.
GNUstep is generally compatible with the OpenStep specification and with recent developments of the MacOS (cocoa) API. Where MacOS deviates from the OpenStep API, GNUstep generally attempts to support both versions. In some cases the newer MacOS APIs are incompatible with OpenStep, and GNUstep usually supports the richer version.
In order to deal with compatiblity issues, GNUstep uses two mechanisms - it provides conditionally compiled sections of the library header files, so that software can be built that will conform strictly to a particular API, and it provides user default settings to control the behavior of the library at runtime.
Adding an option to a makefile to define one of the following preprocessor constants will modify the API visible to software being compiled -
Setting the user default GSMacOSXCompatible
to
YES
will cause MacOS compatible behavior to be
the default at runtime. This default may however be overridden
to provide more fine grained control of system behavior.
Specifies whether the functions for producing strings describing geometric structures (NSStringFromPoint(), NSStringFromSize(), and NSStringFromRect()) should produce strings conforming to the OpenStep specification or to MacOS-X behavior. The functions for parsing those strings should cope with both cases anyway.
Specifies whether text property-list output should be in the default MacOS-X format (XML), or in the more human readable (but less powerful) original OpenStep format.
Reading of property lists is supported in either format, but only if GNUstep is built with the libxml library (which is needed to handle XML parsing).
NB. MacOS-X generates illegal XML for some strings - those which contain characters not legal in XML. GNUstep always generates legal XML, at the cost of a certain degree of compatibility. GNUstep XML property lists use a backslash to escape illegal chatracters, and consequently any string containing either a backslash or an illegal character will be written differently to the same string on MacOS-X.
Specifies whether text property-list output should be in the default MacOS-X format (XML), or in the more human readable (but less powerful) original OpenStep format.
If, GSMacOSXCompatible is YES, this default is treated as being NO if it is not set, otherwise, this default is treated as YES.
This default is NOT used if GSMacOSXCompatiblePropertyLists is specified.
There are some environment variables used by GNUstep base, where there would be problems onbtaining data from the defaults asystem.
The CRASH_ON_ABORT environment variable can be used to override this behavior. If this is defined to NO, FALSE, or 0 then the program will simply exit when an exception occurs. Any other value of the variable will cause the program to generate a core dump.