

Requirements
============

Liboil has no required dependecies (other than a decent C compiler
and standard C library).  A few extra tests and examples are enabled
if you have glib-2.0 installed, but these extras are neither required
nor installed.

Using GCC is strongly recommended, since the most interesting bits
of liboil are written in GCC-style inline assembly.  GCC versions
prior to 3.4 are not supported.


Problems Compiling?
===================

Function implementations in liboil are designed to be modular, so
if your compiler is having difficulty compiling a particular function,
simply disable it and the corresponding OIL_DEFINE_IMPL() line.


ABI warning
===========

Only a portion of the liboil API is ABI stable.  This portion is
guaranteed to be stable through the 0.3.x series, and by using
a compatibility library, through the 0.4.x series as well.  This
policy is designed to provide almost all applications the necessary
ABI stability for the symbols likely to be used in liboil.

Any symbols declared by including <liboil/liboil.h> follow this
ABI policy.  This includes all liboil function classes as well
as a limited number of core functions, such as oil_init().

Functions defined in other header files should not be used.


ABI Implementation
==================

The liboil-0.3.x series create the shared library liboil-0.3.so.
Applications that use liboil are linked against this library, and
will load liboil-0.3.so at runtime.

The liboil-0.4.x series will create two shared libraries,
liboil-0.4.so and a compaitiblity library liboil-0.3.so that
implements functionality removed in the 0.3->0.4 transition.
The 0.3 shared library will be binary compatible with the
liboil-0.3.x releases.  Thus, applictions compiled with a
liboil-0.3.x release will continue to function after the shared
library is upgraded to a 0.4.x release.  Applications compiled
with 0.4.x will use liboil-0.4.so directly.

Distributions can use this compatibility library in order to
smooth transitions between liboil major releases.  For example,
consider the case where AppA depends on libB and libC, and both
libraries use liboil.  When liboil-0.4 is released, the distro
can start using it immediately, and AppA will continue to work
correctly.  Then, at a convenient time, libB and libC can
independently be recompiled using liboil-0.4.x, and the packages
will no longer depend on liboil-0.3.so.

The traditional way of dealing with these changes is to migrate
all packages to the new library as quickly as possible.  This is
unduly cumbersome.



