ALSA library installation
=========================
-Installation from tarbal
-------------------------
+Installation from tarball
+-------------------------
For installation you can use these commands:
./configure
make install
-If ./configure command complain that alsa-driver package is not installed,
-please, check if --prefix option is same for alsa-driver and alsa-lib
-package. The configure script from alsa-lib package probably cannot find
-header file asound.h in $prefix/include/sound directory (usually in
-/usr/include/sound directory).
-Note: If you change kernel sources frequently, please, check if you have
- compiled and installed alsa-driver for current version of your kernel.
+Compilation from Git-sources
+---------------------------
+Requirements:
+ * automake
+ * libtool
-Installation using a build-in version of ALSA in Linux kernel
--------------------------------------------------------------
+To compile alsa-lib from source:
-If you use a kernel build-in version of ALSA, use:
+ ./gitcompile
- ./configure --with-kernel=<version>
- make install
-
-The directory /lib/modules/<version>/build/include/sound must exists for
-this kind of configuration.
-
-You may also specify the full-base for ALSA kernel headers:
-
- ./configure --with-soundbase=<path_to_linux_include_dir>
- make install
-
-example:
-
- ./configure --with-soundbase=/usr/src/linux-2.5.5/include
- make install
-
-
-Compilation from CVS sources
-----------------------------
-
-You need also GNU packages automake and libtool installed in your system
-to compile CVS sources of alsa-lib package.
-
-For compilation you can use these commands:
+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
./configure
make
-The included cvscompile script does this job for you.
Note: Some automake packages have missing aclocal program. Use newer version
in the case.
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 aditional parameters:
+script with additional parameters:
-CC=arm-linux-gcc ./configure --target=arm-linux \
---with-soundbase=/usr/local/arm/src/linux/include
+CC=arm-linux-gcc ./configure --host=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 need to specify location of kernel includes
-configured for target architecture. This is used to find ALSA include
-files and so it should be set to prefix where '/sound' directory should
-be found. You should ommit setting 'CC' variable and cross-compiler will
-be guessed too. You could also use option '--prefix' to specify ALSA include
-directory directly if $prefix/include/sound exists.
+You can omit setting 'CC' variable and cross-compiler will be guessed too.
So simplest version would be:
-./configure --target=arm-linux --with-soundbase=/usr/local/arm/include
-
-or
-
-./configure --target=arm-linux --prefix=/usr/local/arm
-
-As you will likely specify the prefix, the last posibbility would be
-the best if everything match. On the listing of 'configure' script
-check if directory with ALSA headers was found properly same as platform
-specific configurations like processor type and selected cross-compiler.
+./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.