## Notes for Building Audacious on Windows

John Lindgren
August 14, 2024

A Makefile and several patch files should accompany this document.

### Set up MSYS2 environment

Download and run the latest MSYS2 installer:
`https://repo.msys2.org/distrib/x86_64/msys2-x86_64-<DATE>.exe`

Accept the default options to install to `C:\msys64`.

Edit `C:\msys64\home\<USER>\.bashrc` and add the following lines:

> `export PATH="$PATH:/C/libs/bin:/C/aud/bin"
> export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/C/libs/lib/pkgconfig:/C/aud/lib/pkgconfig"
> export C_INCLUDE_PATH=/C/libs/include
> export CPLUS_INCLUDE_PATH=/C/libs/include
> export LIBRARY_PATH=/C/libs/lib`

In the MinGW shell (MSYS2 UCRT64, not MSYS2 MSYS):

> `pacman -Syu
> pacman -S autoconf automake git libtool make patch pkg-config
> pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-gettext mingw-w64-ucrt-x86_64-libxml2
> pacman -S mingw-w64-ucrt-x86_64-atk mingw-w64-ucrt-x86_64-cairo mingw-w64-ucrt-x86_64-pango
> pacman -S mingw-w64-ucrt-x86_64-gdk-pixbuf2 mingw-w64-ucrt-x86_64-librsvg mingw-w64-ucrt-x86_64-qt6-base
> pacman -S mingw-w64-ucrt-x86_64-qt6-imageformats mingw-w64-ucrt-x86_64-qt6-svg mingw-w64-ucrt-x86_64-qt6-translations
> pacman -S mingw-w64-ucrt-x86_64-flac mingw-w64-ucrt-x86_64-libvorbis mingw-w64-ucrt-x86_64-libcdio-paranoia
> pacman -S mingw-w64-ucrt-x86_64-fluidsynth mingw-w64-ucrt-x86_64-mpg123 mingw-w64-ucrt-x86_64-faad2
> pacman -S mingw-w64-ucrt-x86_64-wavpack mingw-w64-ucrt-x86_64-libmodplug mingw-w64-ucrt-x86_64-libbs2b
> pacman -S mingw-w64-ucrt-x86_64-libsamplerate mingw-w64-ucrt-x86_64-libsoxr mingw-w64-ucrt-x86_64-neon
> pacman -S mingw-w64-ucrt-x86_64-libcue mingw-w64-ucrt-x86_64-lame mingw-w64-ucrt-x86_64-opusfile
> pacman -S mingw-w64-ucrt-x86_64-libopenmpt mingw-w64-ucrt-x86_64-json-glib`

### Install GTK

The Makefile accompanying this document automates the process of building GTK from source.

In the MinGW shell:

> `cd <PATH TO THIS DOCUMENT>
> make -j$(nproc) gtk`

It may be necessary to run the MinGW shell with administrative privileges for GTK to build successfully.

### Install additional libraries

In the MinGW shell:

> `cd <PATH TO THIS DOCUMENT>
> make -j$(nproc) ffmpeg
> make -j$(nproc) libmms
> make -j$(nproc) libbinio
> make -j$(nproc) adplug
> make -j$(nproc) libsidplayfp`

### Install Audacious

Download and unzip to `C:\audacious`:
`https://distfiles.audacious-media-player.org/audacious-<VERSION>.tar.bz2`

In the MinGW shell:

> `cd /C/audacious
> ./configure --prefix=/C/aud --enable-gtk2
> make -j$(nproc)
> make install`

### Install Audacious Plugins

Download and unzip to `C:\audacious-plugins`:
`https://distfiles.audacious-media-player.org/audacious-plugins-<VERSION>.tar.bz2`

In the MinGW shell:

> `cd /C/audacious-plugins
> ./configure --prefix=/C/aud --enable-gtk2
> make -j$(nproc)
> make install`