Compiling zdoom
- Graf Zahl
- Lead GZDoom+Raze Developer
- Posts: 49252
- Joined: Sat Jul 19, 2003 10:19 am
- Location: Germany
SDL for Windows is garbage because it amputates the keyboard. No more international support and other limitations because fullscreen mode forces exclusive DirectInput handling for the keyboard with a hard coded English mapping - bad, very bad! One thing I like about ZDoom is that the console uses the system's keyboard settings, not English everywhere. With SDL you'd lose that like in any other Doom port.
It is painfully obvious that SDL comes from Unix/Linux.
It is painfully obvious that SDL comes from Unix/Linux.
Building with MinGW:
- Install MinGW.
- Install the latest version of w32api.
- Install the minimal DirectX 8 headers from Allegro.
- Download the Platform SDK from Microsoft so you can grab dbghelp.h -or- use the version of i_crash.cpp in the repository. W32api still doesn't come with dbghelp.h.
- Unzip the ZDoom source somewhere.
- Edit the Makefile and set FMODDIR to the directory where you installed FMOD.
- From a command line (not MSYS), CD to the directory where you unzipped the ZDoom source.
- Type "mingw32-make" and watch it go.
- If you are lucky, you now have a zdoomgcc.exe. If you are unlucky, you will run into command line length limits when it comes time to link. If that happens, you can try using MSYS instead.
And that was a very deliberate decision on my part, since I use Dvorak.Graf Zahl wrote:One thing I like about ZDoom is that the console uses the system's keyboard settings, not English everywhere.
Last edited by randi on Fri Jul 21, 2006 4:36 pm, edited 2 times in total.
I don't think the same can be said for the in-development SDL 1.3. It only seems to build completely in Windows at the moment.Graf Zahl wrote:SDL for Windows is garbage because it amputates the keyboard. No more international support and other limitations because fullscreen mode forces exclusive DirectInput handling for the keyboard with a hard coded English mapping - bad, very bad! One thing I like about ZDoom is that the console uses the system's keyboard settings, not English everywhere. With SDL you'd lose that like in any other Doom port.
It is painfully obvious that SDL comes from Unix/Linux.

Okay, I followed steps 1-6 (i didn't do 2 because while doing step one it automattically installed win32api-3.7 and when i looked at stuff advailiable on the site linked in step 2 it only had versions up to 3.6). Now my problem is that I don't quite understand 7 and 8. Now, I know that CD is the change directory command in dos but I don't understand how I am supposed to do this in the windows command line.randy wrote:Building with MinGW:
- Install MinGW.
- Install the latest version of w32api.
- Install the minimal DirectX 8 headers from Allegro.
- Download the Platform SDK from Microsoft so you can grab dbghelp.h -or- use the version of i_crash.cpp in the repository. W32api still doesn't come with dbghelp.h.
- Unzip the ZDoom source somewhere.
- Edit the Makefile and set FMODDIR to the directory where you installed FMOD.
- From a command line (not MSYS), CD to the directory where you unzipped the ZDoom source.
- Type "mingw32-make" and watch it go.
- If you are lucky, you now have a zdoomgcc.exe. If you are unlucky, you will run into command line length limits when it comes time to link. If that happens, you can try using MSYS instead.
- Krillancello
- Posts: 309
- Joined: Sat Nov 27, 2004 12:39 am
- Location: Teh Intarwebivurs
Layman's Step 7: Start > Run; type "cmd" and press [Enter]; type "cd" and the directory you unzipped the ZD sources to, separated by a space (e.g. "cd C:\ZDoom\source")Necromage wrote:Okay, I followed steps 1-6 (i didn't do 2 because while doing step one it automattically installed win32api-3.7 and when i looked at stuff advailiable on the site linked in step 2 it only had versions up to 3.6). Now my problem is that I don't quite understand 7 and 8. Now, I know that CD is the change directory command in dos but I don't understand how I am supposed to do this in the windows command line.randy wrote:Building with MinGW:
- Install MinGW.
- Install the latest version of w32api.
- Install the minimal DirectX 8 headers from Allegro.
- Download the Platform SDK from Microsoft so you can grab dbghelp.h -or- use the version of i_crash.cpp in the repository. W32api still doesn't come with dbghelp.h.
- Unzip the ZDoom source somewhere.
- Edit the Makefile and set FMODDIR to the directory where you installed FMOD.
- From a command line (not MSYS), CD to the directory where you unzipped the ZDoom source.
- Type "mingw32-make" and watch it go.
- If you are lucky, you now have a zdoomgcc.exe. If you are unlucky, you will run into command line length limits when it comes time to link. If that happens, you can try using MSYS instead.
Okay, I got that (luckly I figured out that it was actually "command" that you had to put in and not "cmd") and so now I am in the directory and I type "mingw32-make" and I get a "bad command or file name" error. So just to make sure, I get the source off the svn so the directory I think I should be in is in \trunk, which has all the makefiles and the vc solution files.
I figured it out, I needed the whole path name for mingw32-make but instead of compiling I got these errors:
Code: Select all
ccdv-posix.c:5:22: sys/wait.h: no such file in directory
ccdv-posix.c: In function 'slurpProgress':
ccdv-posix.c:95: error: 'fd_set' undeclared (first use in this function)
ccdv-posix.c:95: error: (Each undelcared identifier is reported only once
ccdv-posix.c:95: error: for each function it appears in.)
ccdv-posix.c:95: error: syntax error before "ss"
ccdv-posix.c:110: error: 'ss2' undeclared (fisrt use in this fucntion)
ccdv-posix.c:128: error: 'ss' undeclared (first use in this function)
ccdv-posix.c: In function 'main':
ccdv-posix.c:415: warning: passing arg 2 of 'execvp' from incompatible pointer type
Meh. The Makefiles can't automatically detect you're using Windows when you only have Windows 98, so it tries to build the Linux version instead. Type this before making:
Code: Select all
set OS2=Windows_NT
- Krillancello
- Posts: 309
- Joined: Sat Nov 27, 2004 12:39 am
- Location: Teh Intarwebivurs
Both "command" and "cmd" work... depending on the system. It's been a very long time since I used Win98, but the newer NT-based systems (2k, XP & 2k3), I believe, have both available.Necromage wrote:Okay, I got that (luckly I figured out that it was actually "command" that you had to put in and not "cmd") and so now I am in the directory and I type "mingw32-make" and I get a "bad command or file name" error. So just to make sure, I get the source off the svn so the directory I think I should be in is in \trunk, which has all the makefiles and the vc solution files.

I wasn't a totaly sure on what you meant by this so I tried a number of different things. First I tried putting it in the command line but that didn't work. Then I tried putting it directly into the makefile and that didn't work and so I removed the 'set' and still nothing. So then I put "OS=WINDOS_NT" and all that did was get me as far as lemon with an error of some large negative number. So, I am not sure what to do now.randy wrote:Meh. The Makefiles can't automatically detect you're using Windows when you only have Windows 98, so it tries to build the Linux version instead. Type this before making:Code: Select all
set OS2=Windows_NT
It's a typo. He meant to enter
at the command line before you enter make.
Code: Select all
set OS=Windows_NT
I tried that before and it didn't work but I tried it agian and it still didn't work. Here is what I got:
Code: Select all
C:/MINGW/BIN/MINGW3~6.EXE -C tools/lemon
MINGW3~6.EXE[1]: Entering directory 'C:/Doom/zdoom source/zdoom/trunk/tools/lemon'
ccdv: CreatProcess: The operation completed successfully.
gcc -D_WIN32 -Os -Wall -Wno-implicit -fomit-frame-pointer -c -o -lemon.o -lemon.c
MINGW3~6.EXE[1]: *** [lemon.o] Error: -1073695936
MINGW3~6.EXE[1]: Leaving directory 'C:/Doom/zdoom source/zdoom/trunk/tools/lemon'
C:\MINGW\BIN\MINGW3~2.EXE: *** [basetools] Error 2