D2DF-SDL --------- Doom 2D Forever ( http://repo.or.cz/d2df-sdl.git ) adapted for use with the FreePascal Compiler and ported to SDL 2.0. Building --------- Requirements: * FPC >= 3.0.2; * FMODEx >= 4.26.xx or SDL_mixer >= 2.0; * libenet >= 1.3.13; * SDL >= 2.0. Create the "tmp" and "bin" directories beforehand if they don't exist already. Then run cd src/game fpc -O3 -Fi../lib/vampimg -Fi../lib/vampimg/JpegLib -Fi../lib/vampimg/ZLib -Fu../lib/vampimg -Fu../lib/vampimg/JpegLib -Fu../lib/vampimg/ZLib -FE../../bin -FU../../tmp Doom2DF.lpr If you want SDL_mixer instead of FMOD, add -dUSE_SDLMIXER. If you want the server to be able to forward ports via UPNP, add -dUSE_MINIUPNPC. If you want to debug game with Holmes, add -dENABLE_HOLMES (not supported in GLES mode). If you want to render graphics using OpenGL ES, add -dUSE_GLES1. To build a headless (no video/audio, for dedicated servers) executable, add -dHEADLESS. Replace -O3 with -g -gl to enable debugging features. Run the game with --gdb when using a debugger to prevent it from eating exceptions. Windows binaries will require the appropriate DLLs (SDL2.dll, SDL2_mixer.dll or FMODEx.dll, ENet.dll, miniupnpc.dll), unless you choose to static link them (see below). Static Linking -------------- See ( http://repo.or.cz/d2df-binlib.git ) repo for prebuild dynamic and static libraries. It is now possible to link windoze LibJIT and ENet as static libs. First, you need to clone ( http://repo.or.cz/d2df-binlib.git ) (repo with prebuilt windoze libs). Then, you can use: -dLIBJIT_WINDOZE_STATIC -- static LibJIT -dLIBENET_WINDOZE_STATIC -- static ENet -dLIBMINIUPNPC_WINDOZE_STATIC -- static MiniUPNPC Don't forget to specify lib*.a location with -Fi<...> I (ketmar) used mingw-gcc 7.1.0 to build static libs; some other .a libs were taken directly from mingw. building libs is easy: just fire msys, install all dependencies, and do: ./configure --enable-static --disable-shared && make This should produce working .a library suitable for static linking.