[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