This document is a general overview of Freedoom’s dependencies
required to build it. See README
for a description of what Freedoom
is, and BUILD-SYSTEM
for the technical details on how Freedoom
is built.
Building the Freedoom IWADs pretty much simply requires the following:
-
make: While there is some attempt to keep our Makefiles portable, testing does not really happen on anything but GNU Make (patches to fix portability are most welcome!). On non-GNU systems, it might be available in a package and binary named as gmake.
-
Python: Freedoom uses several Python programs in its tree to assist with building the IWADs. Python 3.x is required, we no longer support Python 2.
-
Pillow: A Python image manipulation module that provides the features we need for scaling and composing various graphics of the game.
-
DeuTex 5.0: Freedoom depends on features developed in this version of DeuTex and will not build on earlier versions. It is available at https://github.com/Doom-Utils/deutex in source and Windows binary formats.
All or most of this software should already be available in your operating system’s software repository, with the likely exception of DeuTex, which is easy to build.
Significant work has been put into making this step easy. At the top
of the Freedoom source tree, you should be able to simply type make
and wait for it to eventually produce the IWAD files in the wads
sub-directory. Parallel make builds are safe too, such as with make
-j
.
If only interested in a specific IWAD, you can also run make
wads/freedm.wad
, make wads/freedoom1.wad
, make wads/freedoom2.wad
.
As mentioned in the prior section, the Makefile only recieves testing
with the GNU version of Make. If the primary version of your Make is
not GNU and it fails, try gmake
instead.
Freedoom has normally seen all of its development on Unix systems, nevertheless some people like to compile Freedoom on Windows. This is possible, although complicated by our choice of tooling for the project.
GNU environments for Windows such as Cygwin, MSYS2, or WSL provide sufficient shell capabilities to build Freedoom. The dependencies listed previously for Freedoom apply just as well to a Windows environment.
Instructions on how to use a GNU system and shell are out of scope of this document.
-
Git: Freedoom is developed using the Git version control system, the latest developments can be tracked with it.
-
AsciiDoc: The
*.adoc
files are all written in AsciiDoc markup, and it can be used to generate HTML versions of all these documents. This is used as part of themake dist
andmake install
targets, to generate theNEWS.html
andREADME.html
files for inclusion with official Zip files. Different implementations (eg, AsciiDoctor) may be selected by passingASCIIDOC
andASCIIDOC_MAN
environment variables tomake
. -
AsciiDoctor PDF: Our manual, maintained in
manual/manual.adoc
, has a hard dependency on this implementation of AsciiDoc for its superior-looking PDF output. -
Zip: The
make dist
target uses Zip to create release archives for FreeDM, Phase 1, and Phase 2. This can also provide an easy way to automate generating in-development versions for other people.