SubDir All shared ;
SubDir All all-bin ;
SubDir ALLBIN ;
SubDir All shared ;

#
#  Set the version number for this release of the project.
#  
#  For this project, we'll record the version "number" in the $(VERSION)
#  variable as 3  separate numbers: a major, minor and patch level.
#  This approach makes it easy to access the separate components of the
#  version number using the element number modifier.
#
#  See http://public.perforce.com/public/jam/src/Jam.html#varexp for
#  information on using variable modifiers.
#
VERSION = 2 4 3 ;

#
#  To obtain a string containing the version number in a form suitable
#  for passing to the compiler as a DEFINE (see below), we use the
#  "J" modifier to "Join" the major, minor and patch numbers with '.',
#  and then we append the name of the operating system for the build.
#
#  The quoting here is a bit elaborate and needs to be explained.
#  The innermost quotes are to make this a c style string.  They
#  are backslashed so that Jam will preserve them.  The surrounding
#  unbackslashed quotes make the VERSION and OS into one string
#  from Jam's point of view.  Finally, the FQuote rule quotes the
#  entire thing in whatever way is suitable for the operating system
#  on which Jam is being run.
#
VERSION_STR = [ FQuote "\"$(VERSION:J=.) ($(OS))\"" ] ;

Echo "Build version: " $(VERSION_STR) ;

#
#  Generated objects are placed in a subdirectory of ../all-bin named
#  after the operating system on and for which we are building:
#
ALL_LOCATE_TARGET ?= [ FDirName $(All) all-bin $(OS) ] ;
Echo "Compilation products will be placed in $(ALL_LOCATE_TARGET)" ;


#
#  On various Unices, we use c++ instead of cc (the default) for compiling
#  c++ sources.  On Mac and Windows, we use the default $(C++).
#
if $(UNIX)
{
	C++ = c++ ;
}

#
#  Function names, etc in c++ object files are "mangled" by the c++ compiler
#  in order to support c++ features.  Because of this, we need to enable c++
#  style linking.  The "normal" way to do this in Jam is to simply set the
#  $(LINK) variable to $(C++), as follows:
#
LINK = $(C++) ;

#
#  Set some addtional #define symbols to pass to the c++ compiler:
#
QUOTED_DATE  = [ FQuote \"$(JAMDATE)\" ] ;
DEFINES     += JAMDATE=$(QUOTED_DATE)
               VERSION=$(VERSION_STR)
               VERSION_MAJ=$(VERSION[1]) 
               VERSION_MIN=$(VERSION[2]) ;