diff --git a/src/libFLAC++/Makefile.am b/src/libFLAC++/Makefile.am
index d760257..85820b7 100644
--- a/src/libFLAC++/Makefile.am
+++ b/src/libFLAC++/Makefile.am
@@ -19,6 +19,11 @@
 lib_LTLIBRARIES = libFLAC++.la
 CXXFLAGS = @CXXFLAGS@
 
+m4datadir = $(datadir)/aclocal
+m4data_DATA = libFLAC++.m4
+
+EXTRA_DIST = libFLAC++.m4
+
 # see 'http://www.gnu.org/software/libtool/manual.html#Versioning' for numbering convention
 libFLAC___la_LDFLAGS = -version-info 1:0:0
 
diff --git a/src/libFLAC++/libFLAC++.m4 b/src/libFLAC++/libFLAC++.m4
new file mode 100644
index 0000000..c411d10
--- /dev/null
+++ b/src/libFLAC++/libFLAC++.m4
@@ -0,0 +1,102 @@
+# Configure paths for libFLAC++
+# "Inspired" by ogg.m4
+
+dnl AM_PATH_LIBFLACPP([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libFLAC++, and define LIBFLACPP_CFLAGS and LIBFLACPP_LIBS
+dnl
+AC_DEFUN(AM_PATH_LIBFLACPP,
+[dnl 
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(libFLAC++,[  --with-libFLAC++=PFX   Prefix where libFLAC++ is installed (optional)], libFLACPP_prefix="$withval", libFLACPP_prefix="")
+AC_ARG_WITH(libFLAC++-libraries,[  --with-libFLAC++-libraries=DIR   Directory where libFLAC++ library is installed (optional)], libFLACPP_libraries="$withval", libFLACPP_libraries="")
+AC_ARG_WITH(libFLAC++-includes,[  --with-libFLAC++-includes=DIR   Directory where libFLAC++ header files are installed (optional)], libFLACPP_includes="$withval", libFLACPP_includes="")
+AC_ARG_ENABLE(libFLAC++test, [  --disable-libFLAC++test       Do not try to compile and run a test libFLAC++ program],, enable_libFLACPPtest=yes)
+
+  if test "x$libFLACPP_libraries" != "x" ; then
+    LIBFLACPP_LIBS="-L$libFLACPP_libraries"
+  elif test "x$libFLACPP_prefix" != "x" ; then
+    LIBFLACPP_LIBS="-L$libFLACPP_prefix/lib"
+  elif test "x$prefix" != "xNONE" ; then
+    LIBFLACPP_LIBS="-L$prefix/lib"
+  fi
+
+  LIBFLACPP_LIBS="$LIBFLACPP_LIBS -lFLAC++"
+
+  if test "x$libFLACPP_includes" != "x" ; then
+    LIBFLACPP_CFLAGS="-I$libFLACPP_includes"
+  elif test "x$libFLACPP_prefix" != "x" ; then
+    LIBFLACPP_CFLAGS="-I$libFLACPP_prefix/include"
+  elif test "$prefix" != "xNONE"; then
+    LIBFLACPP_CFLAGS="-I$prefix/include"
+  fi
+
+  AC_MSG_CHECKING(for libFLAC++)
+  no_libFLACPP=""
+
+
+  if test "x$enable_libFLACPPtest" = "xyes" ; then
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $LIBFLACPP_CFLAGS"
+    LIBS="$LIBS $LIBFLACPP_LIBS"
+dnl
+dnl Now check if the installed libFLAC++ is sufficiently new.
+dnl
+      rm -f conf.libFLAC++test
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <FLAC++/decoder.h>
+
+int main ()
+{
+  system("touch conf.libFLAC++test");
+  return 0;
+}
+
+],, no_libFLACPP=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+  fi
+
+  if test "x$no_libFLACPP" = "x" ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$1], , :, [$1])     
+  else
+     AC_MSG_RESULT(no)
+     if test -f conf.libFLAC++test ; then
+       :
+     else
+       echo "*** Could not run libFLAC++ test program, checking why..."
+       CFLAGS="$CFLAGS $LIBFLACPP_CFLAGS"
+       LIBS="$LIBS $LIBFLACPP_LIBS"
+       AC_TRY_LINK([
+#include <stdio.h>
+#include <FLAC++/decoder.h>
+],     [ return 0; ],
+       [ echo "*** The test program compiled, but did not run. This usually means"
+       echo "*** that the run-time linker is not finding libFLAC++ or finding the wrong"
+       echo "*** version of libFLAC++. If it is not finding libFLAC++, you'll need to set your"
+       echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+       echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+       echo "*** is required on your system"
+       echo "***"
+       echo "*** If you have an old version installed, it is best to remove it, although"
+       echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+       [ echo "*** The test program failed to compile or link. See the file config.log for the"
+       echo "*** exact error that occured. This usually means libFLAC++ was incorrectly installed"
+       echo "*** or that you have moved libFLAC++ since it was installed. In the latter case, you"
+       echo "*** may want to edit the libFLAC++-config script: $LIBFLACPP_CONFIG" ])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+     LIBFLACPP_CFLAGS=""
+     LIBFLACPP_LIBS=""
+     ifelse([$2], , :, [$2])
+  fi
+  AC_SUBST(LIBFLACPP_CFLAGS)
+  AC_SUBST(LIBFLACPP_LIBS)
+  rm -f conf.libFLAC++test
+])
diff --git a/src/libFLAC/Makefile.am b/src/libFLAC/Makefile.am
index 24c5b37..d65978c 100644
--- a/src/libFLAC/Makefile.am
+++ b/src/libFLAC/Makefile.am
@@ -34,6 +34,11 @@
 
 SUBDIRS = $(ARCH_SUBDIRS) include .
 
+m4datadir = $(datadir)/aclocal
+m4data_DATA = libFLAC.m4
+
+EXTRA_DIST = libFLAC.m4
+
 # see 'http://www.gnu.org/software/libtool/manual.html#Versioning' for numbering convention
 libFLAC_la_LDFLAGS = -version-info 3:0:0
 
diff --git a/src/libFLAC/libFLAC.m4 b/src/libFLAC/libFLAC.m4
new file mode 100644
index 0000000..3621b5b
--- /dev/null
+++ b/src/libFLAC/libFLAC.m4
@@ -0,0 +1,102 @@
+# Configure paths for libFLAC
+# "Inspired" by ogg.m4
+
+dnl AM_PATH_LIBFLAC([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for libFLAC, and define LIBFLAC_CFLAGS and LIBFLAC_LIBS
+dnl
+AC_DEFUN(AM_PATH_LIBFLAC,
+[dnl 
+dnl Get the cflags and libraries
+dnl
+AC_ARG_WITH(libFLAC,[  --with-libFLAC=PFX   Prefix where libFLAC is installed (optional)], libFLAC_prefix="$withval", libFLAC_prefix="")
+AC_ARG_WITH(libFLAC-libraries,[  --with-libFLAC-libraries=DIR   Directory where libFLAC library is installed (optional)], libFLAC_libraries="$withval", libFLAC_libraries="")
+AC_ARG_WITH(libFLAC-includes,[  --with-libFLAC-includes=DIR   Directory where libFLAC header files are installed (optional)], libFLAC_includes="$withval", libFLAC_includes="")
+AC_ARG_ENABLE(libFLACtest, [  --disable-libFLACtest       Do not try to compile and run a test libFLAC program],, enable_libFLACtest=yes)
+
+  if test "x$libFLAC_libraries" != "x" ; then
+    LIBFLAC_LIBS="-L$libFLAC_libraries"
+  elif test "x$libFLAC_prefix" != "x" ; then
+    LIBFLAC_LIBS="-L$libFLAC_prefix/lib"
+  elif test "x$prefix" != "xNONE" ; then
+    LIBFLAC_LIBS="-L$prefix/lib"
+  fi
+
+  LIBFLAC_LIBS="$LIBFLAC_LIBS -lFLAC"
+
+  if test "x$libFLAC_includes" != "x" ; then
+    LIBFLAC_CFLAGS="-I$libFLAC_includes"
+  elif test "x$libFLAC_prefix" != "x" ; then
+    LIBFLAC_CFLAGS="-I$libFLAC_prefix/include"
+  elif test "$prefix" != "xNONE"; then
+    LIBFLAC_CFLAGS="-I$prefix/include"
+  fi
+
+  AC_MSG_CHECKING(for libFLAC)
+  no_libFLAC=""
+
+
+  if test "x$enable_libFLACtest" = "xyes" ; then
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+    CFLAGS="$CFLAGS $LIBFLAC_CFLAGS"
+    LIBS="$LIBS $LIBFLAC_LIBS"
+dnl
+dnl Now check if the installed libFLAC is sufficiently new.
+dnl
+      rm -f conf.libFLACtest
+      AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <FLAC/format.h>
+
+int main ()
+{
+  system("touch conf.libFLACtest");
+  return 0;
+}
+
+],, no_libFLAC=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+  fi
+
+  if test "x$no_libFLAC" = "x" ; then
+     AC_MSG_RESULT(yes)
+     ifelse([$1], , :, [$1])     
+  else
+     AC_MSG_RESULT(no)
+     if test -f conf.libFLACtest ; then
+       :
+     else
+       echo "*** Could not run libFLAC test program, checking why..."
+       CFLAGS="$CFLAGS $LIBFLAC_CFLAGS"
+       LIBS="$LIBS $LIBFLAC_LIBS"
+       AC_TRY_LINK([
+#include <stdio.h>
+#include <FLAC/format.h>
+],     [ return 0; ],
+       [ echo "*** The test program compiled, but did not run. This usually means"
+       echo "*** that the run-time linker is not finding libFLAC or finding the wrong"
+       echo "*** version of libFLAC. If it is not finding libFLAC, you'll need to set your"
+       echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+       echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+       echo "*** is required on your system"
+       echo "***"
+       echo "*** If you have an old version installed, it is best to remove it, although"
+       echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+       [ echo "*** The test program failed to compile or link. See the file config.log for the"
+       echo "*** exact error that occured. This usually means libFLAC was incorrectly installed"
+       echo "*** or that you have moved libFLAC since it was installed. In the latter case, you"
+       echo "*** may want to edit the libFLAC-config script: $LIBFLAC_CONFIG" ])
+       CFLAGS="$ac_save_CFLAGS"
+       LIBS="$ac_save_LIBS"
+     fi
+     LIBFLAC_CFLAGS=""
+     LIBFLAC_LIBS=""
+     ifelse([$2], , :, [$2])
+  fi
+  AC_SUBST(LIBFLAC_CFLAGS)
+  AC_SUBST(LIBFLAC_LIBS)
+  rm -f conf.libFLACtest
+])
