Building EDuke32 on Windows: Difference between revisions
Line 94: | Line 94: | ||
===Includes=== | ===Includes=== | ||
As already mentioned before, EDuke32 is a makefile project so you cannot include OGGVorbis and OpenAL in the '''Project | As already mentioned before, EDuke32 is a makefile project so you cannot include OGGVorbis and OpenAL in the '''Project → Properties''' menu as usual, but you will need to add the includes in the global properties: | ||
# Navigate to '''Tools → Options'''. | # Navigate to '''Tools → Options'''. |
Revision as of 05:12, 14 June 2009
Building on Windows with MinGW/GNU Make
To compile EDuke32 on Windows, you will need to install the following:
- TDM/MinGW (note: gcc 4.4.0-tdm is broken with EDuke32, get 4.3.3 from their sourceforge downloads section)
- MSYS
- NASM (extract to mingw/bin folder)
The following updates should also be installed to your MSYS directory. They can be downloaded here.
- bash
- coreutils
- make
- msysCORE
For newer builds with the Polymer render, install:
- DirectX 7 SDK for MinGW (242 KB)
- DirectX 8 SDK for MinGW (441 KB)
After everything has been installed, a shortcut should be on your desktop titled MSYS. Run the shortcut and run these commands, replacing src-dir with the folder where the EDuke32 source code resides:
mount c: /c cd /c/src-dir make
This will build the binaries for EDuke32 and Mapster32 to the source directory.
Building on Windows with Microsoft Visual C++
note: this was what worked for me, there are probablly better ways. If you want to document them go right ahead --plugwash.
get visual c++ express edition from http://www.microsoft.com/express/download/ and install it. The paths in theese instructions assume it is installed in the default location.
unfortunately ml.exe is missing from the express edition, lukilly there is a copy in the freely downloadable windows server 2003 ddk which can be obtained from http://www.microsoft.com/whdc/devtools/ddk/default.mspx . Install this and copy ml.exe to your visual studio bin directory
windows.h, windef.h, winnt.h,basetsd.h,guiddef.h, pshpack4.h, pshpack1.h, pshpack2.h, pshpack4.h, pshpack8.h, poppack.h, winbase.h, winerror.h, wingdi.h, winuser.h, tvout.h, winnls.h, wincon.h, winver.h, winreg.h, winnetwk.h, winsvc.h, mcx.h, imm.h, shlobj.h, ole2.h, objbase.h, rpc.h, rpcdce.h, rpcdcep.h, rpcnsi.h, rpcnterr.h, rpcasync.h, rpcndr.h, rpcnsip.h, wtypes.h, unknwn.h, cguid.h, urlmon.h, oleidl.h, servprov.h, msxml.h , oaidl.h, propidl.h, oleauto.h, prsht.h, commctrl.h, shlguid.h, isguids.h, exdisp.h, ocidl.h, docobj.h, shldisp.h, specstrings.h, winsock2.h, qos.h, ws2tcpip.h, ddraw.h, dinput.h, windowsx.h, shellapi.h, winresrc.h, winuser.rh, commctrl.rh, dde.rh, winnt.rh, dlgs.h, mmsystem.h, dsound.h, d3dtypes.h, user32.lib, gdi32.lib, shell32.lib, dxguid.lib, winmm.lib, wsock32.lib, commctl32.lib, glu32.lib, uuid.lib, cderr.h, dde.h, ddeml.h, lzexpand.h, nb30.h, winperf.h, winsock.h, wincrypt.h, winscard.h, winioctl.h, winsmcard.h, commdlg.h and the whole gl include directory also seem to be missing, again theese can be obtained from the windows server 2003 ddk. With the exception of cderr.h, ddeml.h, winperf.h and lzexpand.h which I got from the wnet directory and a few files that were only found in a generic crt directory in the ddk I used the win2K versions from that ddk.
I had to modify ws2tcpip.h to add the following typedef just before the final #ENDIF
typedef int socklen_t;
This was fixed in the "winxp" version of that file included with the ddk but trying to use the winxp version resulted in a demand for another header that I could not meet with bits from the ddk.
I also had to modify windows.h to not include winpref.h which I didn't have
download http://www.vorbis.com/files/1.0.1/windows/OggVorbis-win32sdk-1.0.1.zip and extracted it (I extracted it in c:\ and work on that assumption in theese instructions)
download http://connect.creativelabs.com/openal/Downloads/OpenAL11CoreSDK.zip and run the installer inside (I installed it in the default location and work on that assumption in theese instructions)
start the visual studio 2005 command prompt
clean up some environment variables that the vs command prompt forgets to clean, add the include paths for vorbis and openal to the include file path and add the path for the vorbis libs to the library path
PATH=C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\oggvorbis-win32sdk-1.0.1\include;C:\Program Files\OpenAL 1.1 SDK\include;AL\include set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;C:\oggvorbis-win32sdk-1.0.1\lib
change to the build subdirectory of your eduke32 tree and run
nmake -f Makefile.msvc cd ..\ nmake -f Makefile.msvc
Building on Windows with Microsoft Visual Studio 2008
To compile EDuke32 with VS08, you will need to install the following:
- OggVorbis-win32sdk-1.0.1.zip - Ogg Vorbis libraries
- OpenAL11CoreSDK.zip - OpenAL libraries
- Plus a DirectX SDK (note that you need the SDK- Source Development Kit, not the DDK- Driver Development Kit), DirectX March 2009 or a previous version, such as the DirectX 7 SDK which is confirmed to work.
Install each of these locally to somewhere where you can find them easily, such as the Program Files directory.
Using SVN
If you want to use an SVN to build the game read this section. If you already have the latest source files or don't want to use an SVN, skip to the next part.
First, you need to download a free SVN plugin for Visual Studio, such as:
Install AnkhSVN, you can find help for installing it from it's website.
- Launch Microsoft Visual Studio.
- Navigate through the menus: File → Subversion → Open from Subversion...
- Type in the URL of the EDuke32 SVN.
- Select the eduke32.vcproj file and click Open.
AnkhSVN now asks you where to save the project locally.
IMPORTANT! EDuke32 is a makefile project, as such, it needs to be located in a directory with only 8 characters (for example C:\EDuke32\ or D:\Source\EDuke32).
Choose the local directory, the Type drop-down menu should be set to Latest Version, click on OK to save the project on your hard drive. The program now downloads the latest files from the SVN.
When done, EDuke32 is shown as your current solution, now you can continue onto either fiddling with the source or just compiling it.
Includes
As already mentioned before, EDuke32 is a makefile project so you cannot include OGGVorbis and OpenAL in the Project → Properties menu as usual, but you will need to add the includes in the global properties:
- Navigate to Tools → Options.
- Click on Show all settings to show the settings we need to change.
- Open the Projets and Solutions category and choose VC++ Directories.
Now we need to link the Include directories.
General Include directories
Make sure the Platform is set to Win32 and select Include files from the Show directories for: -drop down menu.
Click on an empty row and add the local directory names for OGGVorbis, OpenAL and DirectX SDK. For example:
- C:\Program Files\oggvorbis-win32sdk-1.0.1\include
- C:\Program Files\OpenAL 1.1 SDK\include
- C:\Program Files\DirectX 7 SDK\include
Notice how each directory has the include subdirectory chosen ("\include\"). If your version differs, try finding the correct directory for each or the program will not compile properly.
The new linked directories are saved automatically so don't click on OK, it will only close the Options menu.
Next up, we need to link the libaries.
Library directories
Next, Select Library files from the Show directories for: -drop down menu.
Click on an empty row and add the local directory names for OGGVorbis, OpenAL and DirectX SDK. For example:
- C:\Program Files\oggvorbis-win32sdk-1.0.1\lib
- C:\Program Files\OpenAL 1.1 SDK\libs\Win32
- C:\Program Files\DirectX 7 SDK\lib
Notice how each directory has the library subdirectory chosen (either lib or libs).
Now click on OK to exit the Options menu.
Fixing OpenAL errors
If you are getting the fatal error C1083: Cannot open include file: 'AL/al.h': No such file or directory -error, you can fix this by editing two lines in the source code:
Either double click on the line on the Error List or take a look at the Solution Explorer which displays all the files in the project. Click on the Audiolib directory, then Source files directory to reveal the openal.c file.
Double-click to open the openal.c file. Browse to the lines (should be lines 28 and 29) which say this:
#include <AL/al.h> #include <AL/alc.h>
Remove the AL/ part from both lines and change the brackets to quotes (tells the program to load the files locally from the project folder) so they look like this:
#include "al.h" #include "alc.h"
Save the project and try compiling it.
Compiling
Either click on the green play button, or navigate the menus to Build → Build eduke32 and VS08 starts compiling the executables.
You will probably see alot of warnings with wrong datatype conversions but these don't affect the outcome.