[jamming] Announcing XJam 2.5
Richard Mitton
mitton at treyarch.com
Sat Jun 14 14:57:53 PDT 2008
Hi,
I've been working on a custom version of Jam for a little while, and I
figured I'd upload it for the world to enjoy -
http://www.codersnotes.com/xjam/
Firstly I've incorporated a number of the patches from the public
depot, most notably the header caching. Also slightly improved VS.NET
2005 support. But the main reason for this is that I've completely
reworked how the Jambase is set up.
Classic Jam is very much dependent on the concept of building for the
same machine that you're compiling on. This makes it quite hard if
you're developing on embedded systems, where the target machine is not
the same as the host one. I've split up the Jambase into modules,
where each target has it's own module. The user can also add new
targets/modules, without having to get their hands dirty in the Jambase.
The Jambase itself now only controls host-specific things - e.g MkDir,
GenFile, etc. It knows nothing about the idea of compiling/linking/
etc. I've made a module called 'compile' which contains rules such as
LibraryFromObjects, but still knows nothing about specific compilers
or languages.
Here's the list of modules -
autodetect.jam - if requested, will set up the appropriate compiler
for the current host
beos.jam - BeOS compiler support
borland.jam - Borland C++ support
compile.jam - Introduces the idea of compiling files into objects and
executables
install.jam - Unix /usr installation
mingw.jam - MinGW compiler support
package.jam - Package management
unix.jam - Support for the various Unix compilers
visualc.jam - Microsoft VC++ support
vms.jam - VMS compiler support
watcom.jam - OS/2 Watcom C++
yacc.jam - Lex/Yacc
If you just want the old Jam behaviour of targetting the same host
you're running on, use the new -c command switch to enable the
autodetect module. Otherwise, the idea is that your Jamfile/Jamrules
would pick the modules it wanted.
e.g. -
# Build my game on either PS2 or Windows -
if $(MY_BUILD) = ps2
{
UseModule compile ;
UseModule ps2 ;
}
if $(MY_BUILD) = pc
{
UseModule compile ;
UseModule visualc ;
}
I've kept it mostly compatible with Jam 2.5rc3, and hopefully follows
the same simply philosophies.
If anyone has any use for this I'd love to hear about it :-)
If there's enough interest I might carry on with other improvements.
Right now I've only built for NT, but it should work on other systems.
If anyone makes/tests a build, send it to me and I'll upload it too.
--
()() Richard Mitton
( '.')
(")_(") code jester .:. treyarch .:. mitton at treyarch.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://maillist.perforce.com/pipermail/jamming/attachments/20080614/b1e91216/attachment.html
More information about the jamming
mailing list