Here's how to do it. It can be tough, but if you follow the instructions it shouldn't be a big problem. However, if you have never built packages from source before, this is probably not the time to learn. Aqualung depends on quite a few libraries and installing them the right way before attempting to compile Aqualung is an earnest of success.
This dependency graph shows the software needed to compile Aqualung. Green packages are not necessarily needed (read more about them below) and the pthread library is normally part of your libc, so you should not need to install it by hand. You should not install GTK+ by hand either, as it needs lots of packages and is fairly complicated to build from source. And every distro has packages for it, so why bother. Everything else is quite easy, as you will see.
Aqualung uses the GNU autotools (autoconf, automake, autoheader) and
relies on pkg-config to
gain information about your system and installed libraries needed to
setup a working build environment. So, it is the usual
./configure
, make
, make install
stuff, with a few specialized points.
package name | provided functionality | where to get it |
---|---|---|
GTK+-2.0 | Graphical user interface | http://www.gtk.org |
libXML2 | XML parser library | http://xmlsoft.org |
liblrdf | A library for manipulating RDF files about LADSPA plugins | http://lrdf.sourceforge.net |
JACK | JACK Audio Connection Kit | http://jackit.sf.net |
libasound | ALSA sound library | http://www.alsa-project.org |
libsndfile | Library to read uncompressed file formats (WAV, AIFF, AU, etc.) | http://www.mega-nerd.com/libsndfile |
libFLAC | Library to decode FLAC encoded audio files | http://flac.sourceforge.net |
libvorbis, libvorbisfile | Library to decode Ogg Vorbis audio files | http://www.xiph.org/ogg/vorbis |
libMAD | Library to decode MPEG Audio files (MP3 and friends) | http://www.underbit.com/products/mad |
libid3tag | Library to read ID3v2 tags from MP3 and other files | http://sourceforge.net/project/showfiles.php?group_id=12349 |
libmodplug | Library to decode MOD files (MOD, S3M, XM, IT, etc.) | http://modplug-xmms.sourceforge.net |
libsamplerate | Library for high quality Sample Rate Conversion | http://www.mega-nerd.com/SRC |
Part of Aqualung's functionality is optionally built. That means you
can build Aqualung without certain features if you don't need them,
and in such cases you won't need the libraries supporting that
particular functionality either. When running
./configure
, the script will detect the libraries present
on the system and try to adapt the configuration accordingly (this
works in the case when only optional libraries are absent; the absence
of mandatory libs will cause hard errors in any case).
You only need to pass the following options to
./configure
if you want to turn something off that would
otherwise be automatically detected and compiled in, or turn something
on to make sure that the absence of the corresponding optional library
causes a hard error and doesn't get through unnoticed. Upon successful
completion of the configure step, the configuration is printed in
tabular form. You can also access this info later by looking in the
About box or typing aqualung --version
.
So let's see what options we have when configuring. Everything is on
(enabled, built) by default, so only the option to turn it off is
showed. In that case, the library in brackets is not needed. To get a
list of all the valid configuration options, type ./configure
--help
.
functionality | how to turn it off |
---|---|
support for WAV, AIFF, AU etc. (libsndfile) | --without-sndfile |
support for FLAC format (libFLAC) | --without-flac |
support for Ogg Vorbis format (libvorbis & libvorbisfile) | --without-ogg |
support for MPEG Audio formats (libMAD) | --without-mpeg |
support for ID3v2 tags (libid3tag) | --without-id3 |
support for MOD audio files (libmodplug) | --without-mod |
support for OSS output | --without-oss |
support for ALSA output (libasound) | --without-alsa |
support for Sample Rate Converter (libsamplerate) | --without-src |
Miscellaneous configuration options (normally not needed):
option | feature |
---|---|
--with-brokenplfix=yes,no |
A strange error was reported that prevents Aqualung from scanning
directories via scandir() on a ReiserFS filesystem. If
you also run into this problem, enable this to build Aqualung with a
possible workaround. (Default: no) |
You can also use the option --with-foo=no
instead of
--without-foo
. Autoconf is a clever thing.
Note that you can turn off any and all input format support libraries -- naturally, you should not turn them off at once, or the program will be completely useless.
Also note that JACK is not optional. This is because
Aqualung uses the lock-free ringbuffer implementation provided by the
JACK support library for data transfer between threads. Hint: if you
don't need JACK output, you don't need to build a working JACK on your
computer. All you have to achieve is the ability to link to libjack,
which should be satisfied even with a dumbed-down JACK build (disable
all real output drivers in JACK's ./configure
, and build
only the dummy output driver). (One day we might provide our own
lock-free ringbuffer implementation, so JACK won't be needed in all
cases.)
make install
will put the executable, the manpage, the
icons, the four supported skins (dark, default, metal, woody) and the
HTML documentation in the right places. What the right places are
depends on your system, and can be set manually by using standard
./configure
options, most notably
--prefix
. If you are not familiar with this,
./configure --help
is your friend.