vgmstream/doc/BUILD.md

133 lines
5.5 KiB
Markdown
Raw Normal View History

# vgmstream build help
2016-12-11 13:26:30 +01:00
## Compilation requirements
2017-05-01 17:33:22 +02:00
**GCC / Make**: In Windows this means one of these two somewhere in PATH:
2016-12-11 13:26:30 +01:00
- MinGW-w64 (32bit version): https://sourceforge.net/projects/mingw-w64/
2017-05-01 17:33:22 +02:00
- Use this for easier standalone executables
- Latest online installer with any config should work (for example: gcc-7.2.0, i686, win32, sjlj).
2016-12-11 13:26:30 +01:00
- MSYS2 with the MinGW-w64_shell (32bit) package: https://msys2.github.io/
2017-01-22 12:29:29 +01:00
**MSVC / Visual Studio**: Microsoft's Visual C++ and MSBuild, bundled in either:
- Visual Studio (2015/2017/latest): https://www.visualstudio.com/downloads/
2017-12-24 01:30:57 +01:00
- Visual Studio Community should work (free, but must register after trial period)
2017-01-22 12:29:29 +01:00
- Visual C++ Build Tools (no IDE): http://landinghub.visualstudio.com/visual-cpp-build-tools
2016-12-11 13:26:30 +01:00
**Git**: optional, to generate version numbers:
- Git for Windows: https://git-scm.com/download/win
## Compiling modules
2017-12-28 22:30:45 +01:00
### CLI (test.exe/vgmstream-cli) / Winamp plugin (in_vgmstream) / XMPlay plugin (xmp-vgmstream)
2016-12-11 13:26:30 +01:00
**With GCC**: use the *./Makefile* in the root folder, see inside for options. For compilation flags check the *Makefile* in each folder.
You may need to manually rebuild if you change a *.h* file (use *make clean*).
2016-12-11 13:26:30 +01:00
2017-12-28 22:30:45 +01:00
In Linux, Makefiles can be used to cross-compile with the MingW headers, but may not be updated to generate native code at the moment. It should be fixable with some effort. Autotools should build it as vgmstream-cli instead (see the Audacious section).
2016-12-11 13:26:30 +01:00
2017-12-28 22:30:45 +01:00
Windows CMD example:
2016-12-11 13:26:30 +01:00
```
2017-01-22 12:29:29 +01:00
prompt $P$G$_$S
set PATH=C:\Program Files (x86)\Git\usr\bin;%PATH%
set PATH=C:\Program Files (x86)\mingw-w64\i686-5.4.0-win32-sjlj-rt_v5-rev0\mingw32\bin;%PATH%
2016-12-11 13:26:30 +01:00
cd vgmstream
mingw32-make.exe vgmstream_cli -f Makefile ^
VGM_ENABLE_FFMPEG=1 ^
2016-12-11 13:26:30 +01:00
SHELL=sh.exe CC=gcc.exe AR=ar.exe STRIP=strip.exe DLLTOOL=dlltool.exe WINDRES=windres.exe
```
2018-01-20 05:24:33 +01:00
**With MSVC**: To build in Visual Studio, run *./init-build.bat*, open *./vgmstream_full.sln* and compile. To build from the command line, run *./build.bat*.
The build script will automatically handle obtaining dependencies and making the project changes listed in the foobar2000 section (you may need to get some PowerShell .NET packages).
You can also call MSBuild directly in the command line (see the foobar2000 section for dependencies and examples)
2017-05-01 17:33:22 +02:00
### foobar2000 plugin (foo\_input\_vgmstream)
2016-12-11 13:26:30 +01:00
Requires MSVC (foobar/SDK only links to MSVC C++ DLLs) and these dependencies:
2018-01-21 01:47:17 +01:00
- foobar2000 SDK (2018), in *(vgmstream)/dependencies/foobar/*: http://www.foobar2000.org/SDK
2018-01-20 05:24:33 +01:00
- FDK-AAC, in *(vgmstream)/dependencies/fdk-aac/*: https://github.com/kode54/fdk-aac
- QAAC, in *(vgmstream)/dependencies/qaac/*: https://github.com/kode54/qaac
- WTL (if needed), in *(vgmstream)/dependencies/WTL/*: http://wtl.sourceforge.net/
2018-01-20 05:24:33 +01:00
The following project modifications are required:
2017-01-15 23:10:43 +01:00
- For *foobar2000_ATL_helpers* add *../../../WTL/Include* to the compilers's *additional includes*
FDK-AAC/QAAC can be safely disabled by removing *VGM_USE_MP4V2* and *VGM_USE_FDKAAC* in the compiler/linker options and the project dependencies, as FFmpeg is used instead to support their codecs.
You can also manually use the command line to compile with MSBuild, if you don't want to touch the .vcxproj files, register VS after trial, get PowerShell dependencies for the build script, or only have VC++/MSBuild tools.
Windows CMD example for foobar2000:
```
prompt $P$G$_$S
set PATH=C:\Program Files (x86)\Git\usr\bin;%PATH%
set PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;%PATH%
2016-12-11 13:26:30 +01:00
cd vgmstream
set CL=/I"C:\projects\WTL\Include"
set LINK="C:\projects\foobar\foobar2000\shared\shared.lib"
msbuild fb2k/foo_input_vgmstream.vcxproj ^
/t:Clean
msbuild fb2k/foo_input_vgmstream.vcxproj ^
/t:Build ^
/p:Platform=Win32 ^
/p:PlatformToolset=v140 ^
/p:Configuration=Release ^
/p:DependenciesDir=../..
```
2017-01-22 12:29:29 +01:00
### Audacious plugin
2017-12-24 01:30:57 +01:00
Requires the dev version of Audacious (and dependencies), automake/autoconf, and gcc/make (C++11). It must be compiled and installed into Audacious, where it should appear in the plugin list as "vgmstream".
2017-01-22 12:29:29 +01:00
2017-12-24 01:30:57 +01:00
The plugin needs Audacious 3.5 or higher. New Audacious releases can break plugin compatibility so it may not work with the latest version unless adapted first.
2017-05-01 17:33:22 +02:00
libvorbis and libmpg123 will be used if found, while FFmpeg and other external libraries aren't enabled, thus some formats won't work.
2017-05-01 17:33:22 +02:00
Windows builds aren't supported at the moment (should be possible but there are complex dependency chains).
Terminal example, assuming a Ubuntu-based Linux distribution:
```
2017-12-28 22:30:45 +01:00
# build requirements
2017-05-01 17:33:22 +02:00
sudo apt-get update
sudo apt-get install gcc g++ make
sudo apt-get install autoconf automake libtool
2017-12-28 22:30:45 +01:00
sudo apt-get install git
# vgmstream dependencies
sudo apt-get install libmpg123-dev libvorbis-dev
# Audacious player and dependencies
sudo apt-get install audacious
sudo apt-get install audacious-dev libglib2.0-dev libgtk2.0-dev libpango1.0-dev
2017-05-01 17:33:22 +02:00
2017-12-28 22:30:45 +01:00
# check Audacious version >= 3.5
2017-05-01 17:33:22 +02:00
pkg-config --modversion audacious
2017-12-28 22:30:45 +01:00
# build
2017-05-01 17:33:22 +02:00
git clone https://github.com/kode54/vgmstream
cd vgmstream
./bootstrap
./configure
2018-01-05 00:57:00 +01:00
make -f Makefile.autotools
2017-05-01 17:33:22 +02:00
# copy to audacious plugins
2018-01-05 00:57:00 +01:00
sudo make -f Makefile.autotools install
2017-05-01 17:33:22 +02:00
2017-12-28 22:30:45 +01:00
# optional post-cleanup
2018-01-05 00:57:00 +01:00
make -f Makefile.autotools clean
2017-05-01 17:33:22 +02:00
find . -name ".deps" -type d -exec rm -r "{}" \;
./unbootstrap
## WARNING, removes *all* untracked files not in .gitignore
git clean -fd
```
2017-01-22 12:29:29 +01:00
2017-12-28 22:30:45 +01:00
# vgmstream123 player
2018-01-05 00:57:00 +01:00
Should be buildable with Autotools, much like the Audacious plugin, though requires libao (libao-dev).
2017-12-28 22:30:45 +01:00
2018-01-21 01:47:17 +01:00
Windows builds are possible with libao.dll and includes, but some features are disabled.