## Compiling the GObject Introspection package Compiling the GObject Introspection Package — How to compile GObject Introspection itself |

## Building on UNIX

On UNIX, GObject Introspection uses the standard GNU build system, using autoconf for package configuration and resolving portability issues, automake for building makefiles that comply with the GNU Coding Standards, and libtool for building shared libraries on multiple platforms. The normal sequence for compiling and installing the GObject Introspection package is thus:

`./configure`
`make`
`make install`

The standard options provided by GNU autoconf may be passed to the configure script. Please see the autoconf documentation or run ./configure --help for information about the standard options.

## Dependencies

Before you can compile GObject Introspection, you need to have various other tools and libraries installed on your system. The tools needed during the build process (as differentiated from the basic build tools mentioned before are:

- pkg-config is a tool for tracking the compilation flags needed for libraries that are used by the GObjecct Introspection. (For each library, a small `.pc` text file is installed in a standard location that contains the compilation flags needed for that library along with version number information.)

- The GObject-Introspection makefiles will mostly work with different versions of make, however, there tends to be a few incompatibilities, so the GObject-Introspection team recommends installing GNU make if you don't already have it on your system and using it. (It may be called gmake rather than make.)

GObject-Introspection depends on a number of libraries and tools maintained under the umbrella of the GNOME project:

- The GLib library provides core non-graphical functionality such as high level data types, Unicode manipulation, and an object and type system to C programs. It is available from the GNOME FTP site or here.

- TODO: GTK-Doc

External dependencies

- Python

- GObject Introspection has an option dependency on the libffi library. When available, ...

- Cairo is a graphics library that supports vector graphics and image compositing. When available, GObject Introspection uses Cairo in its unit tests.

## Extra Configuration Options

In addition to the normal options, the configure script in the GObject Introspection package supports these additional arguments:

`--disable-Bsymbolic` and `--enable-Bsymbolic`. By default, the GObject Introspection package uses the -Bsymbolic-functions linker flag to avoid intra-library PLT jumps. A side-effect of this is that it is no longer possible to override internal uses of GObject Introspection functions with `LD_PRELOAD`. Therefore, it may make sense to turn this feature off in some situations. The `--disable-Bsymbolic` option allows to do that.

`--disable-gtk-doc` and `--enable-gtk-doc`. By default the configure script will try to auto-detect whether the gtk-doc package is installed. If it is, then it will use it to extract and build the documentation for the GObject Introspection package. These options can be used to explicitly control whether gtk-doc should be used or not. If it is not used, the distributed, pre-generated HTML files will be installed instead of building them on your machine.

`--disable-doctool` and `--enable-doctool`. TODO

`--with-python`. Allows specifying the Python interpreter to use, either as an absolute path, or as a program name. GObject Introspection can be built with Python 2 (at least version 2.6) but does not yet support Python 3.