This is a continuation of the discussion here
https://forum.megaglest.org/index.php?topic=4018.msg24398#msg24398. By "map code" I mean the code that deals with the map in general, not necessarily the map editor.
Hailstone proposed considering having the map code in a separate dll (shared library). It's a bit funny, this seems to be a time that the build its self is undergoing a lot of changes. Bork helped get pre-compiled headers working on linux and that should speed up compile times nicely, although there are still issues (discussed
here). The main thing I want is for code that is used in more than one place (i.e., the game and the map editor) to be in a shared location -- copy & paste is very bad! It leads to one copy of the code being maintained while the other is forgotten about and then there's inconsistent behavior that leaves you baffled!
I'm thinking we probably don't need to make the map code it's own shared library, but rather make the "shared_lib" project a true shared library (.dll on windows, .so on linux) instead of a statically compiled library. This would reduce the overall download size and allow the map editor to link in everything from the shared library also allowing us to have access to all of the rendering capability in shared_lib. The same is true for the g3d viewer (which we haven't supported for quite some time, unfortunately). Further exploration of this may reveal that we want to move portions of game/graphics/render.h/cpp into the shared_lib as well, but that's not something we should probably worry about too quickly.
So here is what I'm thinking (and it's related to the pre-compiled header topic). I don't understand jam very well, much less Matthias' custom build system that's built on top of it. I'm seriously considering making a motion to replace the current build system entirely with a standard autotools & make-based GNU-style build system. I realize that it may be less powerful and flexible in many aspects (aspects of which I don't fully understand), but a lot of people know it and there's a LOT of ways to get support for it when one of us gets stumped (as I haven't been able to get a hold of Matthias). We should be able to reuse most of the m4 macros (under mk/linux/mk/autoconf) and configure.ac, just exclude the mk/jam stuff and alter autogen.sh to make the standard configure for a make file.
But back to the topic on hand, what do you think? Make the shared library an actual shared library (dll/so)?