
			ALSA library installation
			=========================

Installation from tarball
-------------------------

For installation you can use these commands:

	./configure
	make install


Compilation from Git-sources
---------------------------

Requirements:
	* automake
	* libtool

To compile alsa-lib from source:

	./gitcompile

If you do not want to use the supplied gitcompile-script, you can
compile alsa-lib manually by using these steps:

	libtoolize --force --copy --automake
	aclocal
	autoheader
	automake --foreign --copy --add-missing
	autoconf
	./configure
	make


Note: Some automake packages have missing aclocal program. Use newer version
      in the case.


Compilation of static library
-----------------------------

If you would like to use the static ALSA library, you need to use these
options for the configure script:

	./configure --enable-shared=no --enable-static=yes

Unfortunately, due to bug in the libtool script, the shared and static
library cannot be built together.


Partial Builds
--------------

You can choose the core components to build via --enable-* or --disable-*
configure option for reducing the size of libasound.  The selectable
components are: pcm, mixer, rawmidi, hwdep, seq and instr.
For example, --disable-rawmidi will prevent to build the stuff related
with raw MIDI.  As default, all components are enabled.

The PCM plugins to build can be selected via --with-pcm-plugins
configure option.  Multiple plugins can be passed by separation with
comma.  For example, to select _only_ rate and linear plugins (and
disable other plugins), pass
	--with-pcm-plugins=rate,linear
Note that "hw" plugin is always enabled.
Passing "all" will select all available plugins (which is the default
behavior).

When you select "plug" plugin, copy and linear plugins will be
automatically selected, too.  That is, the linear-format and
access-type conversions are always available with plug layer.
The other conversions of plug (channel shrink/expansion, rate,
non-linear and float conversions) are enabled when the corresponding
plugin is selected, too.


Configuration for cross-compilation
-----------------------------------

When you would like to cross-compile ALSA library (e.g. compile on
i686 host but for arm architecture) you will need to call ./configure
script with additional parameters:

CC=arm-linux-gcc ./configure --host=arm-linux

You can omit setting 'CC' variable and cross-compiler will be guessed too.

So simplest version would be:

./configure --host=arm-linux

For platform names in the form cpu-vendor-os (or aliases for this)
you should look in 'config.guess' script. Target and all paths
used here are only examples and should not be directly applicable to
your system.

Configuration for machines without FPU
--------------------------------------

If your machine does not have FP unit, you should use '--with-softfloat'
option. This option disables usage of float numbers in PCM route plugin.
ALSA could then leave much more CPU cycles for your applications, but you 
could still need some floating point emulator.

Thread-safety option
--------------------

As default, major PCM functions of alsa-lib are built to be
thread-safe with pthread mutex (while this wasn't present in the
versions earlier than 1.1.2).  If you want to build without this
thread-safety support but reduce the overhead, pass
--disable-thread-safety configure option.

Jack plugin
-----------

JACK plugin is moved to alsa-plugins package.

Trouble Shooting
----------------

* Install path on Fedora Core 3

  FC3 installs its system ALSA library to /lib instead of /usr/lib.
  Specify --libdir=/lib to configure to overwrite it with the new library,
  or run like

	# ln -sf /usr/lib/libasound.so.2.0.0 /lib/libasound.so.2.0.0

  to make symlink to the new path.
  Note that /lib might be /lib64 on 64bit architecture.
