Configuring and Compiling

How to compile the GNUstep CoreBase Library.

# Introduction

The GNUstep CoreBase Library uses the GNU autoconf for package configuration, and the GNUStep Make tool for generating object files and building the shared library. The recommended sequence for compiling and install the library is by running the following commands:

$ ./configure
$ make
# make install

Note that the `make install` command must be executed as system administrator (root on UNIX-like operating systems).

# Dependencies

Before configuring and compiling the GNUstep CoreBase Library you will need to have various tools, libraries and development headers installed on your system.

The following tools are required by GNUstep CoreBase before

- C Compiler An ISO C99 compilant C compiler is required. The recommended compilers are the GNU Compiler Collection or Clang with LLVM. For Blocks support, Clang is required.
- Objective-C Compiler Additionally, GNUstep CoreBase also makes use of some Objective-C features. Both C compilers recommended above are able to compile Objective-C code.
- GNU make The GNUstep CoreBase makefiles use features specific to GNU make, and will will not be correctly built if other make variants. If your default make tool is not GNU make, please install it before attempting to compile. Be mindful that in some systems, the GNU make tool is invoked as `gmake`.
- GNUstep Make In addition to the GNU make tool, the GNUstep Make package is required.
- Zoneinfo Database To support Time Zones, a complete zoneinfo database must be installed on your system.
- Doxygen (Recommended) Documentation is extracted from the sources by the doxygen tool. This is a recommended tool, but not required. If the doxygen tool is not found during the configuration process, API documentation will not be generated and installed.

In addition to the tools listed above, GNUstep CoreBase also depends on other libraries. To successfully configure and compile, you will need to install the libraries listed below along with their development headers.

- C standard library A POSIX compilant C standard library is required and provides basic functionalities, such as memory allocation and socket support.
- Objective-C Runtime Library To support "toll-free bridging", a modern Objective-C Runtime in required. See Configuration Options for information on how to compile without this package.
- GNUstep Base Library Required for "toll-free bridging" support.
- International Components for Unicode The ICU package provides robust Unicode and Internationalization support.
- Grand Central Dispatch (Recommended) The CFRunLoop type uses GCD for compatibility. Compiling without this library leads to a loss of functionality. See Configuration Options for information on how to compile without this package.

# Configuration Options

--without-gcd
  Compiles the library without Grand Central Dispatch Support. Leads to loss of functionality.

--without-objc (not recommended)
  Compiles the library without Objective-C runtime support. This leads to the loss the of the toll-free bridge capability between objects created by this library and those created by the GNUstep Base library.

--with-zoneinfo-dir=DIR
  Specify the directory where the zoneinfo database can be found. The configure script looks for the database files in some standard location and this option only needs to be used if the zoneinfo database is in a non-standard directory. DIR is an absolute path.