
			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 --target=arm-linux

In this example host where the library is build is guessed (should be
given with --host=platform) and target for which is the library build is
Linux on ARM architecture.  You should omit setting 'CC' variable and
cross-compiler will be guessed too.

So simplest version would be:

./configure --target=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.
