Alo Sarv
lead developer

Donate via
MoneyBookers

Latest Builds

version 0.3
tar.gz tar.bz2
Boost 1.33.1 Headers
MLDonkey Downloads Import Module Development
Payment completed
Development in progress.
Developer's Diary
irc.hydranode.com/#hydranode

Friday, July 15, 2005

Upgrading the build system

Hydranode current codebase, including all plugins, test-suite and so on consists of over 200 files, containing over 2MB of code, and frankly, it's starting to get a bit over my head. So, in order to counter that, I believe it's time for another build system upgrade (if you remember, last one was like 8 months ago, to GNU autoconf system).

This time, the plan is to upgrade to Boost.Build v1 (maybe version2 in the future). It's very flexible, highly portable and powerful, which suits our needs. The main problem with build systems is that they often fail to handle large number of sub-projects gracefully, but this one seems to handle it very nicely and cleanly.

So first off, I set out a new layout of the code tree, which can be seen here. The biggest change is that hncore and hnbase are now two separate entities - hnbase providing cross-platform API and bunch of useful, general-purpose classes, and hncore implementing the p2p-related things, e.g. FilesList, MetaDb, and so on.

The other change that I'm planning to bring in is get rid of the pesky /testing hierarchy we have in SVN right now, it doesn't seem to justify it's existance. That code shall be moved to the main tree for better overview and maintainance simplification.

GUI code will be in the same code hierarchy as the engine code, and additional user interfaces can be added there as well. With this setup, we get a better overview of things, and make it easier to manage - consider that very soon we'll also have GUI along with it's own testsuite and plugins there as well.

For those ppl out there that are crying out "but I want my configure/make!" - no problem, I will provide a short configure script, as well as a standard Makefile, in order to keep things "standard"; that Makefile/configure will simply wrap around the Boost.Build-based system.

ETA: Few days - Jamfiles (Boost.Build equivalent to Makefiles) are really powerful, but that means a rather steep learning curve, but currently I'm progressing nicely - hncore compiles/links correctly on win32 at least.

In the longer future, I'm thinking about rolling a small light-weight GUI front-end to it, to further simplify configuration / building of the codebase and related libraries. The rationale is that since QT only works with GCC on win32, we basically lost the only IDE that has proper support for many projects (at least I haven't found another one that does it reasonbly good), and command.com + editor just doesn't cut it in long-term on win32 (which is the main target platform, afterall). So a lightweight bjam frontend, which does compiler-output highlighting, acts as gdb frontend and some other minor things - shouldn't be more than cpl days to roll together.

Madcat, ZzZz



Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?