=======================================================
Compiling ScummVM under Windows is not an awfully hard task, however there are some things that don't just work out of the box, so I thought it would be a good idea to write a small howto
These instructions are for VS 2005, however the steps needed are exactly the same for VS 2003 and propably VS 6.0 and earlier.
The following libraries are needed:
- SDL 1.2: http://www.libsdl.org/download-1.2.php
You need the file SDL-devel-1.2.9-VC6.zip (1.2.9 is the latest version at this time)
- NASM: http://www.kernel.org/pub/software/deve ... ies/win32/
- libogg: http://downloads.xiph.org/releases/ogg/
- libvorbis: http://downloads.xiph.org/releases/vorbis/
Note that the libraries included in the "vorbis" package won't work. You need libogg and libvorbis, not vorbis
- libmad: ftp://ftp.mars.org/pub/mpeg/
- libmpeg2: http://libmpeg2.sourceforge.net/downloads.html
Get the latest mpeg2dec release from this page, libmpeg2 is included there
- zlib: http://www.zlib.net/
You need the latest zlib compiled DLL
If you wish to compile version 0.8.0 stable or earlier, you'll also need the zlib source code plus this file:
http://www.winimage.com/zLibDll/crtdll.zip
Now, we need to compile the required libraries. Note that if you're building the libraries with VS2005, you will get a lot of deprecation warnings. These are normal and nothing to worry about, they're just Microsoft's way of saying "This is a bad code practice. Use this instead". It's not easy to turn these off without several modifications to the code, so just ignore them. Read more here:
http://msdn.microsoft.com/msdnmag/issue ... SafeCandC/
http://www.gamedev.net/community/forums ... _id=361433
http://blogs.msdn.com/oldnewthing/archi ... 48437.aspx
If you do wish to make them disappear, you need to include on top the main function of each library, before the includes, the following lines:
Code: Select all
#if (_MSC_VER >= 1400) /* VC8+ (VS2005) */
#pragma warning(disable : 4996) /* Disable all deprecation warnings */
#endif /* VC8+ (VS2005) */
NASM
====
First of all, we need nasm. So unzip the nasm archive in a directory, copy
"nasmw.exe" to "nasm.exe" (because some projects call one and others call the other) and include it in the executable path of VS. To do this, go to Tools->Options->Projects and solutions->VC++ directories. Select "Executable files" from the top right and include the directory where you unzipped nasm into.
SDL/zlib
======
SDL and zlib are already compiled, so we can skip the compilation step for those two
If you wish to compile ScummVM 0.8.0 stable and earlier, you'll also need zlib source. Go in the contrib\vstudio\vs8 directory (or vs7 if you're using VS2003), unzip crtdll.lib from the zip you downloaded earlier in the directory and compile zlibvc
libogg
=====
Compile this first, as many other libraries need it. Go to the win32 directory and build the ogg solution in there. DON'T compile the solution in the VS2003 directory, as this produces "libogg.lib" instead of "ogg.lib". A simple rename might work, but I'm not sure
libvorbis
======
Before compiling this, include the libogg include and library paths in VS. To do this, go to Tools->Options->Projects and solutions->VC++ directories and include the include directory of libogg as well as the directory with the compiled ogg library
mpeg2dec
========
After you compile this one, go to its include directory, create a folder "mpeg2dec" in there and copy all files from the include folder in this subfolder. So you should end up with 2 directories, "include" and "include\mpeg2dec" with the same files. This is needed, as ScummVM includes files from the "mpeg2dec" directory
libmad
=====
To compile this, you need to remove all the "_CRTRESTRICT" directives from the code, as VS doesn't understand this directive
FLAC
====
Not a necessary library, so you may skip this one. If you do wish to include it, go to the configuration manager and exclude "in_flac" from compilation. This is due to the fact that you don't need that library (it's for Winamp) but also it won't compile with VS2005, because of many things that VS2005 doesn't like in tagz.cpp from Winamp's SDK. You'll also need to copy ogg_static.lib from the ogg library into the obj\release\lib folder
Adding all libraries to Visual Studio
=========================
Now that we got all libraries compiled, we go to Tools->Options->Projects and solutions->VC++ directories.
In the executable files section, make sure that the path to nasm is included and that nasmw.exe in that folder has been copied to nasm.exe. Failure to do that will give you an error in VS (a custom building step has returned an error)
In the include files section, make sure that the include folders for libogg, libvorbis, libmad, zlib, mpeg2dec and SDL are in the list. If you need FLAC, include the FLAC include folder in the list too
In the library files section, make sure that the static libraries for vorbis, vorbisfile, libogg, zlib, mpeg2dec, libmad and SDL are included. If you're building 0.8.0 final or earlier, include the release folder of zlibdll too (in the zlib source folder, contrib\vstudio\vc8\x86\zlibdllrelease). If you need FLAC, include the FLAC libraries folder too
Before compiling
============
Open the solution file in dists\vc8 (or vc7 if you're using VS2003)
Before compiling, open the file sound\softsynth\ym2612.cpp in the scummvm directory with VS and save it as unicode. To do this, go to File->Save as and in the save button, click the small arrow next to it and select "Save with encoding" and select "UTF8" from the list. You need to do the same with file kyra\script_v1.cpp, although that wasn't enough for my case. I had to remove all japanese text from script_v1.cpp in order to compile it with VS. The reason for this step is that those files contain Japanese characters, so VS refuses to compile the project if those files are not saved as unicode
After compiling, don't forget to copy "sdl.dll" in the release and debug directories where scummvm.exe is located
Ready to go!
=========
OK this should be all of it (thankfully), so you should be good to go. I haven't included instructions to include FLAC, since that's not needed to build ScummVM.
Note that whenever you get a new release from the scummvm website, you need to follow the steps in the "before compiling" section to compile scummvm
Any additions or corrections to this guide are more than welcome