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]) ;