Jim Turner
Nov 18, 2019
from "Building Audacious (v. 3.8) on Windows", by: John Lindgren
May 16, 2015
Several patch files should accompany this document.
Under My Computer -> Properties -> Advanced -> Environment Variables, set:
PATH=C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\Python27;C:\CMake\bin;C:\GTK\bin;C:\libs\bin;C:\aud\bin
PKG_CONFIG_PATH=/C/GTK/lib/pkgconfig:/C/libs/lib/pkgconfig:/C/aud/lib/pkgconfig
C_INCLUDE_PATH=/C/GTK/include:/C/libs/include
CPLUS_INCLUDE_PATH=/C/GTK/include:/C/libs/include
LIBRARY_PATH=/C/GTK/lib:/C/libs/lib
Download and run:
http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download
In the MinGW Installation Manager window, install the following packages:
Edit the file C:\MinGW\msys\1.0\etc\fstab to contain only the following line, in lowercase:
c:/mingw /mingw
As of version 4.0.3-1, the MinGW runtime library is missing some mathematical functions that are necessary to build Fauxdacious. Downgrade the library by running the following in a command prompt window:
mingw-get upgrade mingw32-mingwrt-dev=3.20-2
mingw-get upgrade mingw32-w32api=3.17-2
Open the file C:\MinGW\lib\gcc\mingw32\4.8.1\include\c++\mingw32\bits\c++config.h and locate the following line:
/* #undef _GLIBCXX_HAVE_FENV_H */
Change it to read:
#define _GLIBCXX_HAVE_FENV_H 1
Download and run:
http://python.org/ftp/python/2.7.6/python-2.7.6.msi
Follow the prompts to install with default options to C:\Python27.
Download to your Desktop folder and run:
https://cmake.org/files/v3.6/cmake-3.6.1-win32-x86.msi
Follow the prompts to install, changing the installation path to C:\CMake. Might as well tell it NOT to add itself to your "PATH", since it doesn't seem to AND you need it in the order shown above!
Download and unzip to C:\libpng:
http://sourceforge.net/projects/libpng/files/libpng16/1.6.17/libpng-1.6.17.tar.xz/download
In the MinGW shell:
cd /C/libpng
./configure --prefix=/C/GTK
make
make install
Download and unzip to C:\libjpeg:
https://sourceforge.net/projects/libjpeg-turbo/files/1.5.0/libjpeg-turbo-1.5.0.tar.gz/download
In the MinGW shell:
cd /C/libjpeg
./configure --prefix=/C/GTK --without-simd --without-turbojpeg
make
make install
Download and unzip to C:\libffi:
ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz
In the MinGW shell:
cd /C/libffi
./configure --prefix=/C/GTK --with-gcc-arch=i686
make
make install
Download and unzip to C:\glib:
http://ftp.gnome.org/pub/GNOME/sources/glib/2.44/glib-2.44.1.tar.xz
Apply the patch ggettext.c.diff to C:\glib\glib\ggettext.c.
Apply the patch gcontenttype-win32.c.diff to C:\glib\gio\gcontenttype-win32.c.diff.
Apply the patch gwin32appinfo.c.diff to C:\glib\gio\gwin32appinfo.c.diff.
Apply the patch gwin32networking.h.diff to C:\glib\gio\gwin32networking.h.
In the MinGW shell:
cd /C/glib
CFLAGS="-O2 -march=i686" LIBFFI_CFLAGS="-I/C/GTK/lib/libffi-3.2.1/include" LIBFFI_LIBS="-lffi" ZLIB_CFLAGS="" ZLIB_LIBS="-lz" ./configure --prefix=/C/GTK
make
make install
Download and unzip to C:\pkgconfig:
https://pkg-config.freedesktop.org/releases/pkg-config-0.29.1.tar.gz
In the MinGW shell:
cd /C/pkgconfig
GLIB_CFLAGS="-I/C/GTK/include/glib-2.0 -I/C/GTK/lib/glib-2.0/include" GLIB_LIBS="-lglib-2.0" ./configure --prefix=/C/GTK
make
make install
Copy C:\GTK\share\aclocal\pkg.m4 to C:\MinGW\share\aclocal.
Download and unzip to C:\pixman:
https://www.cairographics.org/releases/pixman-0.34.0.tar.gz
In the MinGW shell:
cd /C/pixman
./configure --prefix=/C/GTK --disable-sse2 --disable-ssse3
make
make install
Download and unzip to C:\cairo:
https://www.cairographics.org/releases/cairo-1.14.6.tar.xz
In the MinGW shell:
cd /C/cairo
./configure --prefix=/C/GTK --disable-interpreter
make
make install
Download and unzip to C:\pango:
http://ftp.gnome.org/pub/GNOME/sources/pango/1.40/pango-1.40.1.tar.xz
In the MinGW shell:
cd /C/pango
./configure --prefix=/C/GTK
make
make install
Download and unzip to C:\gdk-pixbuf:
http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.34/gdk-pixbuf-2.34.0.tar.xz
In the MinGW shell:
cd /C/gdk-pixbuf
./configure --prefix=/C/GTK --without-gdiplus --without-libtiff --with-included-loaders=jpeg,png
make
make install
Download and unzip to C:\atk:
http://ftp.gnome.org/pub/gnome/sources/atk/2.20/atk-2.20.0.tar.xz
In the MinGW shell:
cd /C/atk
./configure --prefix=/C/GTK
make
make install
Download and unzip to C:\gtksrc:
http://ftp.gnome.org/pub/GNOME/sources/gtk+/2.24/gtk+-2.24.30.tar.xz
NOTE: It WILL be necessary to run the MinGW shell with administrative privileges for GTK+ to build successfully! make took 30-50 minutes! Ignore "has been moved" warnings.
Open up another MinGW shell - (with Admin privileges)!:
cd /C/gtksrc
CFLAGS="-O2 -D_WIN32_WINNT=0x0501" ./configure --prefix=/C/GTK
make
make install
Copy gtkrc (accompanying this document) to C:\GTK\etc\gtk-2.0\gtkrc.
Download and unzip to C:\intltool:
http://ftp.gnome.org/pub/GNOME/sources/intltool/0.40/intltool-0.40.6.tar.bz2
In the MinGW shell:
cd /C/intltool
./configure --prefix=/C/GTK
make
make install
Download and unzip to C:\gnome-icon-theme:
http://ftp.gnome.org/pub/GNOME/sources/gnome-icon-theme/3.12/gnome-icon-theme-3.12.0.tar.xz
In the MinGW shell (with Admin privileges):
cd /C/gnome-icon-theme
./configure --prefix=/C/GTK --disable-icon-mapping
make
make install
It may be necessary to run the MinGW shell with administrative privileges for GNOME Icon Theme to install successfully.
Download yasm.1.3.0-win32.exe (or latest) and rename to c:\libs\bin\yasm.exe:
http://yasm.tortall.net/Download.html
Download and unzip to C:\libsdl:
https://www.libsdl.org/download-2.0.php and download the file: SDL2-devel-2.0.5-mingw.tar.gz, untar it into c:\libsdl2.
In the MinGW shell:
cd /C/libsdl2
./configure --prefix=/C/libs
make
make install
Fauxdacious Note: The compiled SDL dll does NOT work for all videos (most produce black screen),
but does provide the needed header files, so I ended up also downloading the Win32 binary from here:
https://www.libsdl.org/download-1.2.php and copying the provided SDL.dll file to c:\libs\bin\ (which does work for all videos)!
Download and unzip to C:\libs:
http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-bin.tar.gz/download
http://sourceforge.net/projects/mingw/files/Other/UserContributed/regex/mingw-regex-2.5.1/mingw-libgnurx-2.5.1-dev.tar.gz/download
Download and unzip to C:\libxml:
ftp://xmlsoft.org/libxml2/libxml2-2.9.4.tar.gz
In the MinGW shell:
cd /C/libxml
./configure --prefix=/C/libs --with-python=no
make
make install
Download and unzip to C:\mpg123:
http://mpg123.de/download/mpg123-1.23.6.tar.bz2
In the MinGW shell:
cd /C/mpg123
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libfaad:
https://sourceforge.net/projects/faac/files/faad2-src/faad2-2.8.0/faad2-2.8.8.tar.gz/download
Apply the patch libfaad-makefile.am.diff to C:\libfaad\libfaad\Makefile.am.
Apply the patch libfaad-main.c.diff to C:\libfaad\frontend\main.c.
In the MinGW shell:
cd /C/libfaad
cp /C/MinGW/share/libtool/config/ltmain.sh .
autoreconf
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libsndfile:
http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.27.tar.gz
In the MinGW shell:
cd /C/libsndfile
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libbs2b:
http://sourceforge.net/projects/bs2b/files/libbs2b/3.1.0/libbs2b-3.1.0.tar.bz2/download
Apply the patch libbs2b-makefile.am.diff to C:\libs2b\src\Makefile.am.
In the MinGW shell:
cd /C/libbs2b
cp /C/MinGW/share/libtool/config/ltmain.sh build-aux
autoreconf
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libcdio:
http://ftp.gnu.org/gnu/libcdio/libcdio-0.83.tar.gz
Apply the patch libcdio-util.c.diff to C:\libcdio\src\util.c.
In the MinGW shell:
cd /C/libcdio
./configure --prefix=/C/libs --disable-rock
make
make install
Download and unzip to C:\libcddb:
http://sourceforge.net/projects/libcddb/files/libcddb/1.3.2/libcddb-1.3.2.tar.bz2/download
In the MinGW shell:
cd /C/libcddb
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libcue:
https://github.com/lipnitsk/libcue/archive/v2.1.0.tar.gz
Apply the patch libcue-makefile.am.diff to C:\libcue\src\libcue\Makefile.am.
In the MinGW shell:
cd /C/libcue
cmake -DCMAKE_INSTALL_PREFIX=/C/libs -G"MSYS Makefiles"
make
make install
Fauxdacious Note: This is under new management so the URL changed from the Audacious notes (the new URL is shown above)
Download and unzip to C:\lame:
http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz/download
In the MinGW shell:
cd /C/lame
sed -i -e '/xmmintrin\.h/d' configure #LAME won't compile w/o this change (see: http://blfs-dev.linuxfromscratch.narkive.com/9JWdWm7K/i686-lame-fails-to-build-for-me)!
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libflac:
http://downloads.xiph.org/releases/flac/flac-1.3.1.tar.xz
In the MinGW shell:
cd /C/libflac
./configure --prefix=/C/libs --disable-asm-optimizations --disable-sse --disable-ogg
make
make install
Fauxdacious Note: I built without the --disable-asm-optimizations option.
Download and unzip to C:\libogg:
http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.xz
In the MinGW shell:
cd /C/libogg
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libvorbis:
http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.xz
In the MinGW shell:
cd /C/libvorbis
./configure --prefix=/C/libs
make
make install
(Only needed to play https streams, ie. youtube / vimeo videos)
1) Download and unzip to C:\libopenssl:
http://gnuwin32.sourceforge.net/packages/openssl.htm (BOTH the "Binaries" AND the "Developer Files" zipfiles)
2) After unzipping both, copy (recursively) everything in the bin/, lib/, and include/ directories to their respective locations under C:\libs\.
3) You'll need to EDIT the three new files in C:\libs\lib\pkgconfig\ (libssl.pc, openssl.pc, and libcrypto.pc) and change the "prefix=" line to "prefix=/C/libs".
4) You'll need to copy C:\libs\bin\libssl32.dll to C:\libs\bin\ssleay32.dll; copy C:\libs\lib\libssl32.dll.a C:\libs\lib\libssl.dll.a; and copy C:\libs\lib\libeay32.dll.a to C:\libs\lib\libcrypto.dll.a (This is due to the fact that libneon expects these to be under the new names, for reasons unbeknownst to me.)
5) Include the flag "--with-ssl=openssl" when you configure libneon (next)
Download and unzip to C:\libneon:
http://www.webdav.org/neon/neon-0.30.2.tar.gz
In the MinGW shell:
cd /C/libneon
./configure --prefix=/C/libs --enable-shared [--with-ssl=openssl]
make
make install
Download and unzip to C:\libsamplerate:
http://www.mega-nerd.com/SRC/libsamplerate-0.1.8.tar.gz
In the MinGW shell:
cd /C/libsamplerate
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libwavpack:
http://www.wavpack.com/wavpack-4.80.0.tar.bz2
Apply the recursive patch wavpack-4.80.diff.
NOTE: I had to edit the diff file splitting it up into 3 separate files, one for each "diff" and remove the "diff" lines out of each and apply each individually with patch command from the directory that "wavpack-###" subdirectory was in?!In the MinGW shell:
cd /C/libwavpack
./configure --prefix=/C/libs
make
make install
Download and unzip latest version to C:\ffmpeg:
http://ffmpeg.org/releases/ (note the "httP url)
In the MinGW shell:
cd /C/ffmpeg
./configure --prefix=/C/libs --enable-shared --enable-ffplay --enable-gpl --enable-postproc --enable-nonfree [--enable-gray] --cpu=i686
make
make install
Fauxdacious Note: (This flag list worked for me). NOTE: You'll have to change the /C/libs/bin/av*, swresample, and postproc dlls' version#s (in the file names) in the Fauxdacious_install.iss config file, if updating!
DEPRECIATED!: When trying to get all videos to play (which ended up with SDL being the culprit), I ended up also fetching the "Shared" and "Dev" versions from here:
https://ffmpeg.zeranoe.com/builds/ and copying the .a and .dll (and ffplay.exe) files over the ones I compiled into c:\libs\, however, if you get videos playing with ffplay, you can SKIP all this!
Download and unzip to C:\libbinio:
https://sourceforge.net/projects/libbinio/files/latest/download
In the MinGW shell:
cd /C/libbinio
Edit /C/libbinio/src/binwrap.cpp and ADD "#include <stdio.h>" (see: https://github.com/repoforge/rpms/blob/master/specs/libbinio/libbinio-1.4-includes.patch)!
cp /C/MinGW/share/libtool/config/ltmain.sh .
autoreconf
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libmms:
http://sourceforge.net/projects/libmms/files/libmms/0.6.4/libmms-0.6.4.tar.gz/download
Apply the patch libmms-strndup.diff (it changes multiple files).
In the MinGW shell:
cd /C/libmms
cp /C/MinGW/share/libtool/config/ltmain.sh .
autoreconf
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libmodplug:
http://sourceforge.net/projects/modplug-xmms/files/libmodplug/0.8.8.5/libmodplug-0.8.8.5.tar.gz/download
In the MinGW shell:
cd /C/libmodplug
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libsidplayfp:
https://sourceforge.net/projects/sidplay-residfp/files/libsidplayfp/1.8/libsidplayfp-1.8.6.tar.gz/download
In the MinGW shell:
cd /C/libsidplayfp
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\fluidsynth:
http://sourceforge.net/projects/fluidsynth/files/fluidsynth-1.1.6/fluidsynth-1.1.6.tar.bz2/download
Apply the patch fluidsynth.diff (it changes multiple files).
In the MinGW shell:
cd /C/fluidsynth
./autogen.sh
./configure --prefix=/C/libs
make
make install
Download and unzip to C:\libdvdread-5.0.3:
http://download.videolan.org/videolan/libdvdread/5.0.3/libdvdread-5.0.3.tar.bz2
In the MinGW shell:
cd /C/libdvdread-5.0.3
./configure --prefix=/C/libs --disable-static
make LDFLAGS=-no-undefined
make install
Download and unzip to C:\libdvdnav-5.0.3:
http://download.videolan.org/videolan/libdvdnav/5.0.3/libdvdnav-5.0.3.tar.bz2
In the MinGW shell:
cd /C/libdvdnav-5.0.3
./configure --prefix=/C/libs --disable-static
make LDFLAGS=-no-undefined
make install
Download and unzip to C:\fauxdacious:
http://phoenixcomm.net/~jturner/
In the MinGW shell:
cd /C/fauxdacious
Fauxdacious Note: You should make sure that the "-win32.*" versions of the image files are used in /C/fauxdacious/src/images/about-logo.*!
./autogen.sh
./configure --prefix=/C/aud --with-buildstamp=Fauxdacious
make
make install
Download and unzip to C:\fauxdacious-plugins:
http://phoenixcomm.net/~jturner/
In the MinGW shell:
cd /C/fauxdacious-plugins
./autogen.sh
./configure --prefix=/C/aud [--with-libsdl=2]
make
make install
cd /C/fauxdacious-plugins/src/waveout #(to add the new Windows native audio output plugin)
make
make install
NOTE: I had to go into Windows Explorer and make the directoriy c:\aud owned by me and give myself "full control" to prevent Windows from making the dll files READONLY and preventing me from recompiling and subsequent "make install"s fail w/"permission denied"!
To build the installable binary (for use on other MS-Windows systems), download and untar the file http://phoenixcomm.net/~jturner/faud.tar.bz2 in your root directory (C:\). It will create a directory called C:\faud\.
Download the Inno Setup Wizard(tm), and install it.
In the gui / editor window, open the file C:\fauxdacious-3.8\contrib\win32\installer\Fauxdacious.iss, then select [Build].[Cimpile] to create the executable binary "Fauxdacious_install.zip". By defauit it creates and puts it in a folder called "Output" in "My Documents". It combines what's in C:\fauxdacious-[vsn#]\, C:\fauxdacious-plugins-[vsn#], and C:\faud\ to build the fully-independent stand-alone binary executable. When run on another M$-Windows machine, it installs Fauxdacious, fauxdtool, and all the necessary libraries needed to run Fauxdacious (and nothing else - no crapware!). To configure Fauxdacious on systems where it is installed, the default configuration file (editable with Notepad, Wordpad, etc.) is installed as C:\Users\[user-id]\AppData\Local\fauxdacious\config. (at least on Windows-7).