GNUstep Base $Revision$ $Date$ Base

The GNUstep base library is a free software package implementing the API of the OpenStep Foundation Kit (tm), including later additions.

Compatibility

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.

Conditional compilation

Adding an option to a makefile to define one of the following preprocessor constants will modify the API visible to software being compiled -

NO_GNUSTEP GNUstep specific extensions to the OpenStep and MacOS cocoa APIs are excluded from the headers. STRICT_MACOS_X Only methods and classes that are part of the MacOS cocoa API are made available in the headers. STRICT_OPENSTEP Only methods and classes that are part of the OpenStep specification are made available in the headers.
User defaults GSLogSyslog

Setting the user default GSLogSyslog to YES will cause log/debug output to be sent to the syslog facility (on systems which support it), rather than to the standard error stream. This is useful in environments where stderr has been re-used strangely for some reason.

GSMacOSXCompatible

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.

GSOldStyleGeometry

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.

NSWriteOldStylePropertyLists

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.

NSLanguages

An array of strings that lists the users prefered languages, in order or preference. If not found the default is just English.

Environment variables

There are some environment variables used by GNUstep base, where there would be problems onbtaining data from the defaults asystem.

CRASH_ON_ABORT

The default exception handler will either cause the program to simply terminate, or to crash - leaving a core dump. The standard behavior is to leave a core dump if the library was built for debugging, and to simply exit if it was not.

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.

GNUSTEP_STRING_ENCODING

This is used to specify the default encoding for 8-bit strings. It defaults to NSISOLatin1StringEncoding, but may be any of the 8-bit encodings supported by your system (excluding multi-byte encodings).

GNUSTEP_HOST_CPU

Used in place of GNUSTEP_TARGET_CPU if the other is missing.

GNUSTEP_HOST_DIR

Used in place of GNUSTEP_TARGET_DIR if the other is missing.

GNUSTEP_HOST_OS

Used in place of GNUSTEP_TARGET_OS if the other is missing.

GNUSTEP_LOCAL_ROOT

Used to specify the GNUstep root directory for local (non-system) resources. Typically all locally produced or contributed software is installed relative to this.

GNUSTEP_NETWORK_ROOT

Used to specify the GNUstep root directory for local (non-system) resources that are intended to be shared across a local network. Typically this is an NFS exported directory shared by many machines. It provides an alternative to GNUSTEP_LOCAL_ROOT.

GNUSTEP_SYSTEM_ROOT

Used to specify the GNUstep system root directory ... all system libraries, tools, applications, headers, resources in general are located relative to this.

GNUSTEP_USER_ROOT

Used to specify the GNUstep directory in which resources specific to the current user are located.

GNUSTEP_TARGET_CPU

Overrides the default value of the machine (hardware) name used on this system.

GNUSTEP_TARGET_DIR

Overrides the default path used to locate subdirectories for GNUstep binaries withing bundles and applications. This is normally equivalent to a path made up of the GNUSTEP_TARGET_CPU and GNUSTEP_TARGET_OS

GNUSTEP_TARGET_OS

Overrides the default value of the operating system name used on this system.

GNUSTEP_TZ

Used to specify the timezone to be used if there is no timezone specified in the user defaults system. The preferred mechanism is to use the 'Local Time Zone' value from the user defaults system.

HOMEDRIVE

Used on windoze to locate the home directory.

HOMEPATH

Used on windoze to locate the home directory.

LANGUAGES

If there is no NSLanguages user default set, and there is no language infromation available in the native system locale mechanism, then this environment variable is used to provide a list of the languages that the user prefers to use. languages listed in this variable must be separated by semicolons.

LOGNAME

This is used as the default value for the current user (as returned by the NSUserName() functions). If it is not specified, or contains an illegal value, other methods are used to get the user name.

LIBRARY_COMBO

Used to override the default value of the combination of standard libraries used to build binaries. This value locates the final subdirectory used to locate binaries.

TZ

Used to specify the timezone to be used if there is no timezone specified by any other mechanism. The preferred mechanism is to use the 'Local Time Zone' value from the user defaults system.