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

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

For installation you can use these commands:

	./configure
	make install


Compilation from HG sources
---------------------------

You need also GNU packages automake and libtool installed in your system
to compile HG (Mercurial) sources of alsa-lib package.

For compilation you can use these commands:

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

The included hgcompile script does this job for you.

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.

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.
