This is intended as a list of all the patches that have been incorporated into
the lib-src copies of libraries, to avoid them getting lost in version upgrades
from upstream, and to remind us of the versions we are using.

Libraries
=========
allegro
-------

dlcompat
--------

expat
-----
XML parser library used to parse project files and so on.

FileDialogue
------------
The customised file saving dialogues for wxwidgets to provide the options
button for format preferences. This is written and maintianed by us so doesn't
have and upstream at the moment.

iAVC
----
disused?

id3lib
------

libflac
-------
http://flac.sourceforge.net/
Free Lossless Audio Codec encoding and decoding library

libid3tag
---------

libmad
------
http://www.underbit.com/products/mad/
MP3 decoding library

libnyquist
----------
Digital Audio scripting language, with our own library interface added to it

libogg
------
library to handle Xiph.org's open multimedia container format

libresample
-----------
Audio sample rate conversion library. Maintained by audacity project

libsamplerate
-------------
Erik de Castro Lopo's high quality sample rate conversion library

libsndfile
----------
Erik de Castro Lopo's uncompressed audio file I/O library

libvorbis
---------
library for endcoding and decoding Xiph.org's high-quality compressed audio
format.

lib-widget-extra
----------------

mod-script-pipe
---------------

portaudio
---------
http://portaudio.com/
cross-platform audio I/O library version 18, used for 1.2.x version of
audacity.
Quite heavily patched local copy to get AC-97 ALSA cards to play back
correctly.

portaudio-v19
-------------
http://portaudio.com/
cross-platform audio I/O library version 19, used for 1.3.2 onwards releases
Version in audacity cvs: 1st July 2007 CVS snapshot
Patches:
		buildoptions-osx.patch			patch by Dominic to make Universal
					Binary optional and make build work on OS X 10.3
		../portmixer/portaudio.patch	add features needed to make portmixer
					work. Will need updating as upstream portaudio moves

portburn
--------

portmixer
---------
cross-platform audio mixer control library, hooked onto portaudio. Maintained
by the audacity project with some help from portaudio development.

rtaudio
-------
http://www.music.mcgill.ca/~gary/rtaudio/
Another cross-platform audio I/O library that was at one point available as an
alternative to portaudio.

soundtouch
----------
http://www.surina.net/soundtouch/
Independant Pitch and Tempo changing library.
Some patches inserted to make it build on PPC?

twolame
-------
http://www.twolame.org/
MPEG I layer 2 audio encoding library used for MP2 exports
Version in audacity cvs: 0.3.8
Patches: some critical ones, sent upstream and incorportated.
TODO: Update to 0.3.10 release

wave++
------
http://www.scs.ryerson.ca/~lkolasa/CppWavelets.html
disused?

Crib notes on upgrading lib-src trees:
======================================
1 Remove old files
------------------
find . -not -wholename '*CVS*' -delete
will remove all the source files but not any directories or the CVS files, so
after this you have an empty place into which you can unpack the new tarball

2 Bring in new files
--------------------
Next unpack the tarball. If you want to unpack within a package directory,
then tar --strip-components 1 will remove the un-needed top level directory.

3 Apply patches and updates
---------------------------
Now we have a new file tree. This is the point at which to clean out any
un-needed files, re-apply and local patches so on.

* Copy in newer config.sub and config.guess if needed.
* run autoreconf if we have modified configure.in or configure.ac
* run libtoolize --copy --force to update ltmain.sh

By doing it this way we have already updated the mtime on all files, so we
don't need to do a recusive touch.

4 Add new files to CVS and remove old ones
------------------------------------------
CVS will list files with a ? if they are new and need to be added to the
repository. To get a list, run 
cvs st 2>/dev/null | grep '?'
Finding which files have been removed is a bit harder:
cvs st 2>/dev/null | grep 'Status: Needs Checkout'
gives file names but not their paths, so you have to go back and grep each
file name to find them and do cvs rm on them.

5 Commit the lot to CVS
-----------------------
Run cvs ci -f -R to commit all the files in the new library tree. Use an
appropriate message that says what library version this is. This should do
all the required changes and add / remove files.


