
Compiling DarkMod on 32 bit Linux
=================================

For compilation under Linux, you need the following including their
prerequisites:

  * SCONS
  * Python
  * libdevil-dev
  * libdevil1c2

In addition, when running Doom and using the DarkMod, you will also need:

  * libmng1

To actually compile, you can use the script:

  ./linuxBuild.sh

If you have less than 2 Gbyte memory, you might want to remove the "-j2"
switch from the scons line. This switch makes scons run two compiler in
parallel, and this eats quite a lot of memory and can result in very strange
compiling errors.

Compiling DarkMod on 64 bit Linux
=================================

If you run a 64 bit Linux distribution, you still need to build a 32 bit
version of DarkMod, since Doom3 itself only exists as a 32 bit version.

To get this to work, you will need to install the 32 bit compatibility libraries.

Under some distributions like SuSE these are installed by default, but on
Ubuntu/Kubuntu, you need to install the following:

  * ia32 or ia32-libs

In addition to this, you will also need libdevil-dev, libmng1 and libdevil1c2.
However, these libraries do not come in a compatibility version, only in different
versions for each architecture.

This means if you install them the regular way with your package manager, you
will automatically get the 64 bit libraries (f.i. amd64) on your system and this
will cause errors like the following:

	...  lib/bv/frustum_gcc.os -lIL
	/usr/bin/ld: skipping incompatible /usr/bin/../lib/libIL.so when searching for -lIL
	/usr/bin/ld: skipping incompatible /usr/bin/../lib/libIL.a when searching for -lIL
	/usr/bin/ld: skipping incompatible /usr/lib/libIL.so when searching for -lIL
	/usr/bin/ld: skipping incompatible /usr/lib/libIL.a when searching for -lIL
	/usr/bin/ld: cannot find -lI

To avoid this, fetch the i368 .deb package files from http://www.rpmseek.com/
and unzip them manually:

	libdevil1c2_1.6.7-5_i386.deb
	libdevil-dev_1.6.7-5_i386.deb
	libmng1_1.0.9-1_i386.deb
	libstdc++6_4.3.2-2_i386.deb

You might get slightly newer versions, but it should work. Note that this
list doesn't include the -dev variants, you should be able to just install the
matching 64 bit developer packages.

Then, as root, copy all the files that are in these packages under ./usr to your
/lib32 directory.

Also, make sure that you rename the libstdc++6_4.3_..._.so etc. file to
just the basename like so:

	/lib32/libstdc++.so

Then run:

	./linuxBuild.sh

It will pick up the correct libraries. Likewise, when running, Doom3 will
also use the right 32bit libraries.

greebo: I had to install a few more packages to get TDM to compile in Ubuntu 8.10:

	libglew1.5-dev
	libc6-dev-i386 (to fix errors about gnu/stubs-32.h missing)

Troubleshooting
===============

Linker errors
-------------

If you still get linker errors from ld, please make sure that the libraries
can be found under the right name under /lib32. Also, running:

	su ldconfig

might help.

Scons errors
------------

If you get errors from scons like this:

	scons: *** object of type 'int' has no len()

then delete the sqlite database file(s) might help:

	rm cons.signatures.dblite

