I was the last one to mess with Linux build.
I'll update build instructions for Linux after 2.06 release.
As of 2.06 and SVN, you can build Linux version from source code root directory by running:
scons BUILD="release" TARGET_ARCH="x64" -j6 ..
If you omit BUILD setting, it'll simply build some default configuration (debug, I believe).
If you omit TARGET_ARCH, then it'll build 32-bit.
If you omit ".." at the end, then you will only get deploy-style binaries in the current directory (without debugging info). If you add "..", then you will also get development-style binaries in "../darkmod/".
The ".." argument is the only non-intuitive thing now: scons needs it to be able to write outside of the current directory.
I usually use CMake at my work for building C++ projects on Windows.
However, adding it to TDM would make build more complicated for Windows coders. And tweaking MSVC-specific parameters would be harder (yes, there are such tweaks).
Also, GCC and MSVC builds are different in too many ways, it would be very hard to write a single build process on CMake for both platforms.
MSVC is not too bad after all, if you apply most of the changes to props-files instead of vcxproj, and if you have a habit of keeping vcxproj file clean.
The directories linux/win32/win64 are somewhat messy now. They could benefit from some cleaning.
However, the very idea of keeping all the dependencies in SVN is quite good for Windows platform.
The dream of moving from SVN to Git is surely caused by The Grand Github Hype But I think it will never happen to TDM.
Assets are simply too large, so they will stay in SVN forever. Having two different version control systems for a single project is a stupid thing to do.
Plus: Git is order of magnitude more complicated and less user-friendly than SVN.
There are a lot people here who are not programmers at all, and they use TortoiseSVN without much complaints. If you ask them to use Git, you will get into serious trouble
The boost thing is no longer needed to build TDM.
I hope some day tdm_update will be refactored to not depend on boost, then we can finally remove boost from SVN and be happy.
As for the docker thing.
I don't understand yet what is the benefit of it.
Here is what I see in your docker file:
RUN apt update \ && apt upgrade -y \ && dpkg --add-architecture i386 \ && apt update \ && apt install -y build-essential \ m4 \ mesa-common-dev \ python-dev \ libbz2-dev \ scons \ subversion \ libc6-dev-i386 \ g++-multilib \ libx11-dev:i386 \ libxxf86vm-dev:i386 \ libopenal-dev:i386 \ libasound2-dev:i386 \ libxext-dev:i386 \
The problem of building and installing 32-bit stuff on 64-bit Linux will be gone after TDM 2.06, because we have 64-bit version now.
The other commands in the first 4 lines are just some basic things which everyone should know if they install anything on Linux.
The last command says to install a set of packages.
I agree that we should maintain the minimal set of required packages somewhere. But Wiki or readme.txt should be enough for it.
Is it right that we can create Docker VM with some Linux properly configured to build and run TDM, and then we can deploy this VM both to Linux players and Linux developers, and they can simply run everything from the Docker container on their Linux, even if it is different version/distribution/architecture/whatever?
What about native libraries then? For example, will everyone use the same OpenGL or OpenAL library, regardless of the hardware they have?
One last note about automatic builds.
I really like the idea of doing automatic builds of TDM on all platforms. Also, it would be great to automatically run TDM, start some default mission and check that TDM does not crash =)
It would solve some problems we have now, like Linux build being broken for months without anyone to care
However, it needs some serious administration efforts.