Boost logo

Boost-Commit :

From: bdawes_at_[hidden]
Date: 2008-07-29 07:43:35


Author: bemandawes
Date: 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
New Revision: 47863
URL: http://svn.boost.org/trac/boost/changeset/47863

Log:
Revert merge from trunk, 47441. Rene does not wish to do a new bjam release yet.
Removed:
   branches/release/tools/jam/test/builtin_normalize_path.jam
Properties modified:
   branches/release/tools/jam/src/ (props changed)
   branches/release/tools/jam/src/Jambase (contents, props changed)
   branches/release/tools/jam/src/boehm_gc/config.sub (props changed)
   branches/release/tools/jam/src/boost-jam.spec (contents, props changed)
   branches/release/tools/jam/src/build_vms.com (props changed)
   branches/release/tools/jam/src/debian/changelog (contents, props changed)
   branches/release/tools/jam/src/debian/control (contents, props changed)
   branches/release/tools/jam/src/debian/copyright (contents, props changed)
   branches/release/tools/jam/src/debian/jam.man.sgml (contents, props changed)
   branches/release/tools/jam/src/debian/rules (contents, props changed)
   branches/release/tools/jam/src/jamgram.y (contents, props changed)
   branches/release/tools/jam/src/jamgram.yy (contents, props changed)
Text files modified:
   branches/release/tools/jam/doc/bjam.qbk | 12
   branches/release/tools/jam/src/Jambase | 277 +++++++-------
   branches/release/tools/jam/src/boost-jam.spec | 128 +++---
   branches/release/tools/jam/src/build.bat | 5
   branches/release/tools/jam/src/build.jam | 2
   branches/release/tools/jam/src/builtins.c | 469 +++++++++---------------
   branches/release/tools/jam/src/compile.c | 16
   branches/release/tools/jam/src/debian/changelog | 144 +++---
   branches/release/tools/jam/src/debian/control | 32
   branches/release/tools/jam/src/debian/copyright | 50 +-
   branches/release/tools/jam/src/debian/jam.man.sgml | 472 ++++++++++++------------
   branches/release/tools/jam/src/debian/rules | 146 +++---
   branches/release/tools/jam/src/execnt.c | 61 +-
   branches/release/tools/jam/src/execunix.c | 20
   branches/release/tools/jam/src/expand.c | 7
   branches/release/tools/jam/src/filent.c | 25 -
   branches/release/tools/jam/src/filesys.c | 1
   branches/release/tools/jam/src/filesys.h | 5
   branches/release/tools/jam/src/hcache.c | 8
   branches/release/tools/jam/src/jambase.c | 111 +++--
   branches/release/tools/jam/src/jamgram.y | 746 ++++++++++++++++++++--------------------
   branches/release/tools/jam/src/jamgram.yy | 658 +++++++++++++++++-----------------
   branches/release/tools/jam/src/lists.c | 114 ++++-
   branches/release/tools/jam/src/make.c | 3
   branches/release/tools/jam/src/make1.c | 5
   branches/release/tools/jam/src/modules/property-set.c | 33
   branches/release/tools/jam/src/native.c | 10
   branches/release/tools/jam/src/patchlevel.h | 6
   branches/release/tools/jam/src/rules.c | 5
   branches/release/tools/jam/src/search.c | 15
   branches/release/tools/jam/src/search.h | 2
   branches/release/tools/jam/test/action_status.jam | 11
   branches/release/tools/jam/test/actions_quietly.jam | 4
   branches/release/tools/jam/test/builtin_shell.jam | 30 -
   branches/release/tools/jam/test/option_d2.jam | 2
   branches/release/tools/jam/test/option_l.jam | 3
   branches/release/tools/jam/test/option_n.jam | 2
   branches/release/tools/jam/test/parallel_actions.jam | 2
   branches/release/tools/jam/test/parallel_multifile_actions.jam | 6
   branches/release/tools/jam/test/test.jam | 9
   40 files changed, 1762 insertions(+), 1895 deletions(-)

Modified: branches/release/tools/jam/doc/bjam.qbk
==============================================================================
--- branches/release/tools/jam/doc/bjam.qbk (original)
+++ branches/release/tools/jam/doc/bjam.qbk 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -1,6 +1,6 @@
 [article Boost.Jam
     [quickbook 1.3]
- [version: 3.1.17]
+ [version: 3.1.16]
     [authors [Rivera, Rene], [Abrahams, David], [Prus, Vladimir]]
     [copyright 2003 2004 2005 2006 2007 Rene Rivera, David Abrahams, Vladimir Prus]
     [category tool-build]
@@ -21,7 +21,7 @@
 
 [/ Shortcuts ]
 
-[def :version: 3.1.17]
+[def :version: 3.1.16]
 
 [/ Images ]
 
@@ -116,7 +116,7 @@
 The toolset used to build Boost.Jam is independent of the toolsets used for Boost.Build. Only one version of Boost.Jam is needed to use Boost.Build.
 ]
 
-The supported toolsets, and whether they are auto-detected, are:
+The supported toolsets, and wether they are auto-detected, are:
 
 [table Supported Toolsets
 
@@ -758,7 +758,7 @@
 rule DEPENDS ( /targets1/ * : /targets2/ * )
 ]
 
-Builds a direct dependency: makes each of /targets1/ depend on each of /targets2/. Generally, /targets1/ will be rebuilt if /targets2/ are themselves rebuilt or are newer than /targets1/.
+Builds a direct dependency: makes each of /targets1/ depend on each of /targets2/. Generally, /targets1/ will be rebuilt if /targets2/ are themselves rebuilt are or are newer than /targets1/.
 
 [endsect]
 
@@ -954,7 +954,7 @@
 # It clears the list of targets to update, and
 # Causes the specified targets to be updated.
 
-If no target was specified with the =UPDATE= rule, no targets will be updated. To support changing of the update list in more useful ways, the rule also returns the targets previously in the update list. This makes it possible to add targets as such:
+If no target was specified with the =UPDATE= rule, no targets will be updated. To support changing of the update list in more usefull ways, the rule also returns the targets previously in the update list. This makes it possible to add targets as such:
 
 [pre
 local previous-updates = \[ UPDATE \] ;
@@ -1773,7 +1773,7 @@
 * "Grist" is just a string prefix of the form </characters/>. It is used in Jam to create unique target names based on simpler names. For example, the file name "=test.exe=" may be used by targets in separate subprojects, or for the debug and release variants of the "same" abstract target. Each distinct target bound to a file called "test.exe" has its own unique grist prefix. The Boost build system also takes full advantage of Jam's ability to divide strings on grist boundaries, sometimes concatenating multiple gristed elements at the beginning of a string. Grist is used instead of identifying targets with absolute paths for two reasons:
 
    # The location of targets cannot always be derived solely from what the user puts in a Jamfile, but sometimes depends also on the binding process. Some mechanism to distinctly identify targets with the same name is still needed.
- # Grist allows us to use a uniform abstract identifier for each built target, regardless of target file location (as allowed by setting ALL_LOCATE_TARGET).
+ # Grist allows us to use a uniform abstract identifier for each built target, regardless of target file location (as allowed by setting ALL_LOCATE_TARGET.
 
 * When grist is extracted from a name with $(var:G), the result includes the leading and trailing angle brackets. When grist is added to a name with $(var:G=expr), existing grist is first stripped. Then, if expr is non-empty, leading <s and trailing >s are added if necessary to form an expression of the form <expr2>; <expr2> is then prepended.
 

Modified: branches/release/tools/jam/src/Jambase
==============================================================================
--- branches/release/tools/jam/src/Jambase (original)
+++ branches/release/tools/jam/src/Jambase 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -18,10 +18,9 @@
 }
 SLASH ?= / ;
 
-
-# Glob for patterns in the directories starting from the given start directory,
-# up to and including the root of the file-system. We stop globbing as soon as
-# we find at least one match.
+# Glob for patterns in the directories starting from the given
+# start directory, up to and including the root of the file-system.
+# We stop globbing as soon as we find at least one match.
 #
 rule find-to-root ( dir : patterns + )
 {
@@ -34,7 +33,6 @@
     return $(globs) ;
 }
 
-
 # This global will hold the location of the user's boost-build.jam file.
 .boost-build-file = ;
 
@@ -44,16 +42,16 @@
 # Remember the value of $(BOOST_BUILD_PATH) supplied to us by the user.
 BOOST_BUILD_PATH.user-value = $(BOOST_BUILD_PATH) ;
 
-# On Unix only, when BOOST_BUILD_PATH is not supplied by the user, set it to a
-# sensible default value. This allows Boost.Build to work without any
-# environment variables, which is good in itself and also required by the Debian
-# Policy.
+# On Unix only, when BOOST_BUILD_PATH is not supplied by user, put
+# sensible default value. This allowes Boost.Build to work without
+# any environment variables, which is good in itself and also
+# required by Debian Policy.
 if ! $(BOOST_BUILD_PATH) && $(UNIX)
 {
     BOOST_BUILD_PATH = /usr/share/boost-build ;
 }
 
-
+
 rule _poke ( module-name ? : variables + : value * )
 {
     module $(<)
@@ -62,37 +60,41 @@
     }
 }
 
-
-# This rule can be invoked from an optional user's boost-build.jam file to both
-# indicate where to find the build system files, and to load them. The path
-# indicated is relative to the location of the boost-build.jam file.
+# This rule can be invoked from an optional user's boost-build.jam
+# file to both indicate where to find the build system files, and to
+# load them. The path indicated is relative to the location of the
+# boost-build.jam file.
 #
 rule boost-build ( dir ? )
 {
     if $(.bootstrap-file)
     {
- ECHO "Error: Illegal attempt to re-bootstrap the build system by invoking" ;
+ EXIT "Error: Illegal attempt to re-bootstrap the build system by invoking" ;
         ECHO ;
         ECHO " 'boost-build" $(dir) ";'" ;
         ECHO ;
         EXIT "Please consult the documentation at 'http://www.boost.org'." ;
     }
-
- # Add the given directory to the path so we can find the build system. If
- # dir is empty, has no effect.
+
+ # Add the given directory to the path so we can find the build
+ # system. If dir is empty, has no effect.
+ #
     BOOST_BUILD_PATH = $(dir:R=$(.boost-build-file:D)) $(BOOST_BUILD_PATH) ;
-
- # We might have just modified the *global* value of BOOST_BUILD_PATH. The
- # code that loads the rest of Boost.Build, in particular the site-config.jam
- # and user-config.jam configuration files uses os.environ, so we need to
- # update the value there.
+
+ # We might have just modified the *global* value of BOOST_BUILD_PATH.
+ # The code that loads the rest of Boost.Build, in particular the
+ # site-config.jam and user-config.jam files uses os.environ, so we need to
+ # update the value there.
     _poke .ENVIRON : BOOST_BUILD_PATH : $(BOOST_BUILD_PATH) ;
-
+
     # Try to find the build system bootstrap file 'bootstrap.jam'.
- local bootstrap-file = [ GLOB $(BOOST_BUILD_PATH) : bootstrap.jam ] ;
+ #
+ local bootstrap-file =
+ [ GLOB $(BOOST_BUILD_PATH) : bootstrap.jam ] ;
     .bootstrap-file = $(bootstrap-file[1]) ;
-
- # There is no bootstrap.jam we can find, exit with an error.
+
+ # There is no boost-build.jam we can find, exit with an error
+ #
     if ! $(.bootstrap-file)
     {
         ECHO "Unable to load Boost.Build: could not find build system." ;
@@ -106,43 +108,44 @@
         ECHO ;
         EXIT "Please consult the documentation at 'http://www.boost.org'." ;
     }
-
+
     if [ MATCH .*(--debug-configuration).* : $(ARGV) ]
     {
- ECHO "notice: loading Boost.Build from"
- [ NORMALIZE_PATH $(.bootstrap-file:D) ] ;
+ ECHO "notice: loading Boost.Build from"
+ [ NORMALIZE_PATH $(.bootstrap-file:D) ] ;
     }
-
+
     # Load the build system, now that we know where to start from.
+ #
     include $(.bootstrap-file) ;
 }
 
 
 if [ MATCH .*(bjam).* : $(ARGV[1]:BL) ]
- || $(BOOST_ROOT) # A temporary measure so Jam works with Boost.Build v1.
+ || $(BOOST_ROOT) # A temporary measure so Jam works with Boost.Build v1
 {
- # We attempt to load "boost-build.jam" by searching from the current
- # invocation directory up to the root of the file-system.
+ # We attempt to load "boost-build.jam" by searching from the current invocation directory
+ # up to the root of the file-system.
     #
- # boost-build.jam is expected to invoke the "boost-build" rule to load the
- # Boost.Build files.
-
+ # boost-build.jam is expected to invoke the "boost-build" rule to
+ # load the Boost.Build files.
+
     local search-path = $(BOOST_BUILD_PATH) $(BOOST_ROOT) ;
-
+
     local boost-build-files =
         [ find-to-root [ PWD ] : boost-build.jam ]
- # Another temporary measure so Jam works with Boost.Build v1.
+ # Another temporary measure so Jam works with Boost.Build v1
         [ GLOB $(search-path) : boost-build.jam ] ;
-
+
     .boost-build-file = $(boost-build-files[1]) ;
-
- # There is no boost-build.jam we can find, exit with an error, and
- # information.
+
+ # There is no boost-build.jam we can find, exit with an error, and information.
+ #
     if ! $(.boost-build-file)
     {
         ECHO "Unable to load Boost.Build: could not find \"boost-build.jam\"" ;
         ECHO --------------------------------------------------------------- ;
-
+
         if ! [ MATCH .*(bjam).* : $(ARGV[1]:BL) ]
         {
             ECHO "BOOST_ROOT must be set, either in the environment, or " ;
@@ -155,21 +158,23 @@
         ECHO "and in these directories from BOOST_BUILD_PATH and BOOST_ROOT: "$(search-path:J=", ")"." ;
         EXIT "Please consult the documentation at 'http://www.boost.org'." ;
     }
-
- if [ MATCH .*(--debug-configuration).* : $(ARGV) ]
+
+ if [ MATCH .*(--debug-configuration).* : $(ARGV) ]
     {
- ECHO "notice: found boost-build.jam at"
- [ NORMALIZE_PATH $(.boost-build-file) ] ;
+ ECHO "notice: found boost-build.jam at"
+ [ NORMALIZE_PATH $(.boost-build-file) ] ;
     }
-
+
     # Now load the boost-build.jam to get the build system loaded. This
     # incidentaly loads the users jamfile and attempts to build targets.
     #
- # We also set it up so we can tell whether we are loading the new V2 system
- # or the the old V1 system.
+ # We also set it up so we can tell wether we are loading the new V2
+ # system or the the old V1 system.
+ #
     include $(.boost-build-file) ;
-
+
     # Check that, at minimum, the bootstrap file was found.
+ #
     if ! $(.bootstrap-file)
     {
         ECHO "Unable to load Boost.Build" ;
@@ -206,7 +211,7 @@
 # 01/08/95 (seiwald) - Shell now handled with awk, not sed
 # 01/09/95 (seiwald) - Install* now take dest directory as target
 # 01/10/95 (seiwald) - All entries sorted.
-# 01/10/95 (seiwald) - NT support moved in, with LauraW's help.
+# 01/10/95 (seiwald) - NT support moved in, with LauraW's help.
 # 01/10/95 (seiwald) - VMS support moved in.
 # 02/06/95 (seiwald) - ObjectC++Flags and SubDirC++Flags added.
 # 02/07/95 (seiwald) - Iron out when HDRSEARCH uses "" or SEARCH_SOURCE.
@@ -222,14 +227,14 @@
 #
 # all - parent of first, shell, files, lib, exe
 # first - first dependent of 'all', for potential initialization
-# shell - parent of all Shell targets
+# shell - parent of all Shell targets
 # files - parent of all File targets
 # lib - parent of all Library targets
 # exe - parent of all Main targets
 # dirs - parent of all MkDir targets
 # clean - removes all Shell, File, Library, and Main targets
 # uninstall - removes all Install targets
-#
+#
 
 # Rules defined by this file:
 #
@@ -309,7 +314,7 @@
 # EXIT - blurt out targets and exit
 # INCLUDES - marks sources as headers for target (a codependency)
 # NOCARE - don't panic if the target can't be built
-# NOUPDATE - create the target if needed but never update it
+# NOUPDATE - create the target if needed but never update it
 # NOTFILE - ignore the timestamp of the target (it's not a file)
 # TEMPORARY - target need not be present if sources haven't changed
 #
@@ -342,35 +347,35 @@
     #
     local SUPPORTED_TOOLSETS = "BORLANDC" "VC7" "VISUALC" "VISUALC16" "INTELC" "WATCOM"
                                "MINGW" "LCC" ;
-
+
     # this variable holds the current toolset
     #
     TOOLSET = "" ;
-
+
     # if the JAM_TOOLSET environment variable is defined, check that it is
     # one of our supported values
     #
     if $(JAM_TOOLSET)
     {
       local t ;
-
+
       for t in $(SUPPORTED_TOOLSETS)
       {
         $(t) = $($(t):J=" ") ; # reconstitute paths with spaces in them
         if $(t) = $(JAM_TOOLSET) { TOOLSET = $(t) ; }
       }
-
+
       if ! $(TOOLSET)
       {
         ECHO "The JAM_TOOLSET environment variable is defined but its value" ;
         ECHO "is invalid, please use one of the following:" ;
         ECHO ;
-
+
         for t in $(SUPPORTED_TOOLSETS) { ECHO " " $(t) ; }
         EXIT ;
       }
     }
-
+
     # if TOOLSET is empty, we'll try to detect the toolset from other
     # environment variables to remain backwards compatible with Jam 2.3
     #
@@ -464,7 +469,7 @@
     C++FLAGS ?= $(CCFLAGS) ;
     LINK ?= $(CC) ;
     LINKFLAGS ?= $(CCFLAGS) ;
- LINKLIBS ?=
+ LINKLIBS ?=
                 \"$(VISUALC16)\\lib\\mlibce.lib\"
                 \"$(VISUALC16)\\lib\\oldnames.lib\"
                 ;
@@ -577,7 +582,7 @@
     else if $(TOOLSET) = MINGW
     {
         ECHO "Compiler is GCC with Mingw" ;
-
+
         AR ?= ar -ru ;
         CC ?= gcc ;
         CCFLAGS ?= "" ;
@@ -595,7 +600,7 @@
     else if $(TOOLSET) = LCC
     {
         ECHO "Compiler is Win32-LCC" ;
-
+
         AR ?= lcclib ;
         CC ?= lcc ;
         CCFLAGS ?= "" ;
@@ -611,7 +616,7 @@
     {
 #
 # XXX: We need better comments here !!
-#
+#
     EXIT On NT, set BCCROOT, MSVCNT, MINGW or MSVC to the root of the
         Borland or Microsoft directories. ;
     }
@@ -622,18 +627,18 @@
     # the list of supported toolsets on Windows NT and Windows 95/98
     #
     local SUPPORTED_TOOLSETS = "EMX" "WATCOM" ;
-
+
     # this variable holds the current toolset
     #
     TOOLSET = "" ;
-
+
     # if the JAM_TOOLSET environment variable is defined, check that it is
     # one of our supported values
     #
     if $(JAM_TOOLSET)
     {
       local t ;
-
+
       for t in $(SUPPORTED_TOOLSETS)
       {
         $(t) = $($(t):J=" ") ; # reconstitute paths with spaces in them
@@ -645,12 +650,12 @@
         ECHO "The JAM_TOOLSET environment variable is defined but its value" ;
         ECHO "is invalid, please use one of the following:" ;
         ECHO ;
-
+
         for t in $(SUPPORTED_TOOLSETS) { ECHO " " $(t) ; }
         EXIT ;
       }
     }
-
+
     # if TOOLSET is empty, we'll try to detect the toolset from other
     # environment variables to remain backwards compatible with Jam 2.3
     #
@@ -693,7 +698,7 @@
     SUFLIB ?= .lib ;
     SUFOBJ ?= .obj ;
     SUFEXE ?= .exe ;
-
+
     if $(TOOLSET) = WATCOM
     {
        AR ?= wlib ;
@@ -764,7 +769,7 @@
     SUFLIB ?= .olb ;
     SUFOBJ ?= .obj ;
 
- switch $(OS)
+ switch $(OS)
     {
     case OPENVMS : CCFLAGS ?= /stand=vaxc ;
     case VMS : LINKLIBS ?= sys$library:vaxcrtl.olb/lib ;
@@ -773,7 +778,7 @@
 else if $(MAC)
 {
     local OPT ;
-
+
     CW ?= "{CW}" ;
 
     MACHDRS ?=
@@ -785,19 +790,19 @@
         "$(CW):MacOS Support:Universal:Libraries:StubLibraries:Interfacelib"
         "$(CW):MacOS Support:Universal:Libraries:StubLibraries:Mathlib" ;
 
- MPWLIBS ?=
+ MPWLIBS ?=
         "$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL MPWCRuntime.lib"
         "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC MPW.Lib" ;
 
- MPWNLLIBS ?=
+ MPWNLLIBS ?=
         "$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL MPWCRuntime.lib"
         "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC MPW(NL).Lib" ;
-
+
     SIOUXHDRS ?= ;
-
- SIOUXLIBS ?=
+
+ SIOUXLIBS ?=
         "$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL RuntimePPC.lib"
- "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL SIOUX.PPC.Lib"
+ "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL SIOUX.PPC.Lib"
         "$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC.Lib" ;
 
     C++ ?= mwcppc ;
@@ -809,15 +814,15 @@
     DOTDOT ?= "::" ;
     HDRS ?= $(MACHDRS) $(MPWHDRS) ;
     LINK ?= mwlinkppc ;
- LINKFLAGS ?= -mpwtool -warn ;
- LINKLIBS ?= $(MACLIBS) $(MPWLIBS) ;
+ LINKFLAGS ?= -mpwtool -warn ;
+ LINKLIBS ?= $(MACLIBS) $(MPWLIBS) ;
     MKDIR ?= newfolder ;
     MV ?= rename -y ;
     NOARSCAN ?= true ;
     OPTIM ?= ;
     RM ?= delete -y ;
     SLASH ?= ":" ;
- STDHDRS ?= ;
+ STDHDRS ?= ;
     SUFLIB ?= .lib ;
     SUFOBJ ?= .o ;
 }
@@ -837,7 +842,7 @@
     NOARSCAN ?= true ;
     STDHDRS ?= /boot/develop/headers/posix ;
 }
-else if $(OS) = BEOS
+else if $(OS) = BEOS
 {
     BINDIR ?= /boot/apps ;
     CC ?= gcc ;
@@ -860,7 +865,7 @@
     CC ?= gcc ;
     YACC ?= "bison -y" ;
 
- case CYGWIN :
+ case CYGWIN :
     CC ?= gcc ;
     CCFLAGS += -D__cygwin__ ;
     LEX ?= flex ;
@@ -890,12 +895,12 @@
     C++ ?= gcc ;
     CCFLAGS += -D_POSIX_SOURCE ;
     HDRS += /usr/include ;
- RANLIB ?= "" ;
+ RANLIB ?= "" ;
     NOARSCAN ?= true ;
     NOARUPDATE ?= true ;
 
     case MVS :
- RANLIB ?= "" ;
+ RANLIB ?= "" ;
 
     case NEXT :
     AR ?= libtool -o ;
@@ -1012,7 +1017,7 @@
     YACCFILES ?= ;
     YACCFLAGS ?= ;
 
- HDRPATTERN =
+ HDRPATTERN =
             "^[ ]*#[ ]*include[ ]*[<\"]([^\">]*)[\">].*$" ;
 
     OSFULL = $(OS)$(OSVER)$(OSPLAT) $(OS)$(OSPLAT) $(OS)$(OSVER) $(OS) ;
@@ -1132,7 +1137,7 @@
     DEPENDS $(<) : $(>) ;
 }
 
-rule GenFile
+rule GenFile
 {
     local _t = [ FGristSourceFiles $(<) ] ;
     local _s = [ FAppendSuffix $(>[1]) : $(SUFEXE) ] ;
@@ -1183,11 +1188,11 @@
 
     local s ;
 
- if $(HDRGRIST)
- {
+ if $(HDRGRIST)
+ {
         s = $(>:G=$(HDRGRIST)) ;
- } else {
- s = $(>) ;
+ } else {
+ s = $(>) ;
     }
 
     INCLUDES $(<) : $(s) ;
@@ -1231,14 +1236,14 @@
         Install $(tt) : $(i) ;
         Chmod $(tt) ;
 
- if $(OWNER) && $(CHOWN)
- {
+ if $(OWNER) && $(CHOWN)
+ {
         Chown $(tt) ;
         OWNER on $(tt) = $(OWNER) ;
         }
 
- if $(GROUP) && $(CHGRP)
- {
+ if $(GROUP) && $(CHGRP)
+ {
         Chgrp $(tt) ;
         GROUP on $(tt) = $(GROUP) ;
         }
@@ -1339,11 +1344,11 @@
         MakeLocate $(_l) $(_l)($(_s:BS)) : $(LOCATE_TARGET) ;
     }
 
- if $(NOARSCAN)
- {
+ if $(NOARSCAN)
+ {
         # If we can't scan the library to timestamp its contents,
         # we have to just make the library depend directly on the
- # on-disk object files.
+ # on-disk object files.
 
         DEPENDS $(_l) : $(_s) ;
     }
@@ -1441,12 +1446,12 @@
 
     NOUPDATE $(<) ;
 
- if $(<) != $(DOT) && ! $($(<)-mkdir)
+ if $(<) != $(DOT) && ! $($(<)-mkdir)
     {
         local s ;
 
         # Cheesy gate to prevent multiple invocations on same dir
- # MkDir1 has the actions
+ # MkDir1 has the actions
         # Arrange for jam dirs
 
         $(<)-mkdir = true ;
@@ -1503,7 +1508,7 @@
     # the regexp pattern $(HDRSCAN) and then invokes $(HDRRULE)
     # with the scanned file as the target and the found headers
     # as the sources. HDRSEARCH is the value of SEARCH used for
- # the found header files. Finally, if jam must deal with
+ # the found header files. Finally, if jam must deal with
     # header files of the same name in different directories,
     # they can be distinguished with HDRGRIST.
 
@@ -1598,17 +1603,17 @@
     #
     # SubDir TOP d1 [ ... ]
     #
- # This introduces a Jamfile that is part of a project tree
+ # This introduces a Jamfile that is part of a project tree
     # rooted at $(TOP). It (only once) includes the project-specific
     # rules file $(TOP)/Jamrules and then sets search & locate stuff.
     #
- # If the variable $(TOPRULES) is set (where TOP is the first arg
+ # If the variable $(TOPRULES) is set (where TOP is the first arg
     # to SubDir), that file is included instead of $(TOP)/Jamrules.
     #
- # d1 ... are the directory elements that lead to this directory
+ # d1 ... are the directory elements that lead to this directory
     # from $(TOP). We construct the system dependent path from these
     # directory elements in order to set search&locate stuff.
- #
+ #
 
     if ! $($(<[1]))
     {
@@ -1698,7 +1703,7 @@
     }
 
     _s = [ FDirName $(<[2-]) ] ;
-
+
     include $(JAMFILE:D=$(_s):R=$($(<[1]))) ;
 }
 
@@ -1756,13 +1761,13 @@
     return $(_g) ;
 }
 
-rule FGristFiles
+rule FGristFiles
 {
     if ! $(SOURCE_GRIST)
     {
         return $(<) ;
     }
- else
+ else
     {
         return $(<:G=$(SOURCE_GRIST)) ;
     }
@@ -1770,7 +1775,7 @@
 
 rule FGristSourceFiles
 {
- # Produce source file name name with grist in it,
+ # Produce source file name name with grist in it,
     # if SOURCE_GRIST is set.
 
     # Leave header files alone, because they have a global
@@ -1780,7 +1785,7 @@
     {
         return $(<) ;
     }
- else
+ else
     {
         local _i _o ;
 
@@ -1821,10 +1826,10 @@
     # path (using ../../ etc) back to that root directory.
     # Sets result in $(<)
 
- if ! $(<[1])
+ if ! $(<[1])
     {
         _d = $(DOT) ;
- }
+ }
     else
     {
         _d = $(DOTDOT) ;
@@ -1872,7 +1877,7 @@
     else if $(MAC)
     {
         _s = $(DOT) ;
-
+
         for _i in $(<)
         {
             _s = $(_i:R=$(_s)) ;
@@ -1880,7 +1885,7 @@
     }
     else
     {
- _s = $(<[1]) ;
+ _s = $(<[1]) ;
 
         for _i in $(<[2-])
         {
@@ -1935,7 +1940,7 @@
 rule FAppendSuffix
 {
        # E.g., "FAppendSuffix yacc lex foo.bat : $(SUFEXE) ;"
- # returns (yacc,lex,foo.bat) on Unix and
+ # returns (yacc,lex,foo.bat) on Unix and
        # (yacc.exe,lex.exe,foo.bat) on NT.
 
     if $(>)
@@ -1963,7 +1968,7 @@
 
 rule unmakeDir
 {
- if $(>[1]:D) && $(>[1]:D) != $(>[1]) && $(>[1]:D) != \\\\
+ if $(>[1]:D) && $(>[1]:D) != $(>[1]) && $(>[1]:D) != \\\\
     {
         unmakeDir $(<) : $(>[1]:D) $(>[1]:BS) $(>[2-]) ;
     }
@@ -1977,10 +1982,10 @@
 rule FConvertToSlashes
 {
   local _d, _s, _i ;
-
+
   unmakeDir _d : $(<) ;
-
- _s = $(_d[1]) ;
+
+ _s = $(_d[1]) ;
   for _i in $(_d[2-])
   {
     _s = $(_s)/$(_i) ;
@@ -2059,7 +2064,7 @@
 
 actions Install
 {
- $(CP) $(>) $(<)
+ $(CP) $(>) $(<)
 }
 
 actions Lex
@@ -2074,7 +2079,7 @@
 
 actions Link bind NEEDLIBS
 {
- $(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)
+ $(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)
 }
 
 actions MkDir1
@@ -2247,7 +2252,7 @@
   {
     actions together piecemeal Archive
     {
- $(AR) $(<) +-$(>)
+ $(AR) $(<) +-$(>)
     }
 
     actions Cc
@@ -2274,7 +2279,7 @@
   {
     actions together piecemeal Archive
     {
- $(AR) /out:$(<) $(>)
+ $(AR) /out:$(<) $(>)
     }
 
     actions Cc
@@ -2298,13 +2303,13 @@
 # OS2 specific actions
 #
 
-else if $(OS2)
+else if $(OS2)
 {
   if $(TOOLSET) = WATCOM
   {
     actions together piecemeal Archive
     {
- $(AR) $(<) +-$(>)
+ $(AR) $(<) +-$(>)
     }
 
     actions Cc
@@ -2352,19 +2357,19 @@
 
 else if $(VMS)
 {
- actions updated together piecemeal Archive
+ actions updated together piecemeal Archive
     {
     lib/replace $(<) $(>[1]) ,$(>[2-])
     }
 
     actions Cc
- {
- $(CC)/obj=$(<) $(CCFLAGS) $(OPTIM) $(SLASHINC) $(>)
+ {
+ $(CC)/obj=$(<) $(CCFLAGS) $(OPTIM) $(SLASHINC) $(>)
     }
 
     actions C++
- {
- $(C++)/obj=$(<) $(C++FLAGS) $(OPTIM) $(SLASHINC) $(>)
+ {
+ $(C++)/obj=$(<) $(C++FLAGS) $(OPTIM) $(SLASHINC) $(>)
     }
 
     actions piecemeal together existing Clean
@@ -2404,7 +2409,7 @@
 
 else if $(MAC)
 {
- actions together Archive
+ actions together Archive
     {
     $(LINK) -library -o $(<) $(>)
     }
@@ -2412,13 +2417,13 @@
     actions Cc
     {
     set -e MWCincludes $(MACINC)
- $(CC) -o $(<) $(CCFLAGS) $(OPTIM) $(>)
+ $(CC) -o $(<) $(CCFLAGS) $(OPTIM) $(>)
     }
 
     actions C++
- {
+ {
     set -e MWCincludes $(MACINC)
- $(CC) -o $(<) $(C++FLAGS) $(OPTIM) $(>)
+ $(CC) -o $(<) $(C++FLAGS) $(OPTIM) $(>)
     }
 
     actions Link bind NEEDLIBS

Modified: branches/release/tools/jam/src/boost-jam.spec
==============================================================================
--- branches/release/tools/jam/src/boost-jam.spec (original)
+++ branches/release/tools/jam/src/boost-jam.spec 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -1,64 +1,64 @@
-Name: boost-jam
-Version: 3.1.17
-Summary: Build tool
-Release: 1
-Source: %{name}-%{version}.tgz
-
-License: Boost Software License, Version 1.0
-Group: Development/Tools
-URL: http://www.boost.org
-Packager: Rene Rivera <grafik_at_[hidden]>
-BuildRoot: /var/tmp/%{name}-%{version}.root
-
-%description
-Boost Jam is a build tool based on FTJam, which in turn is based on
-Perforce Jam. It contains significant improvements made to facilitate
-its use in the Boost Build System, but should be backward compatible
-with Perforce Jam.
-
-Authors:
- Perforce Jam : Cristopher Seiwald
- FT Jam : David Turner
- Boost Jam : David Abrahams
-
-Copyright:
- /+\
- +\ Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
- \+/
- License is hereby granted to use this software and distribute it
- freely, as long as this copyright notice is retained and modifications
- are clearly marked.
- ALL WARRANTIES ARE HEREBY DISCLAIMED.
-
-Also:
- Copyright 2001-2006 David Abrahams.
- Copyright 2002-2006 Rene Rivera.
- Copyright 2003-2006 Vladimir Prus.
-
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-%prep
-%setup -n %{name}-%{version}
-
-%build
-LOCATE_TARGET=bin ./build.sh $BOOST_JAM_TOOLSET
-
-%install
-rm -rf $RPM_BUILD_ROOT
-mkdir -p $RPM_BUILD_ROOT%{_bindir}
-mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
-install -m 755 bin/bjam $RPM_BUILD_ROOT%{_bindir}/bjam-%{version}
-ln -sf bjam-%{version} $RPM_BUILD_ROOT%{_bindir}/bjam
-cp -R *.html *.png *.css LICENSE*.txt images jam $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
-
-find $RPM_BUILD_ROOT -name CVS -type d -exec rm -r {} \;
-
-%files
-%defattr(-,root,root)
-%attr(755,root,root) /usr/bin/*
-%doc %{_docdir}/%{name}-%{version}
-
-
-%clean
-rm -rf $RPM_BUILD_ROOT
+Name: boost-jam
+Version: 3.1.16
+Summary: Build tool
+Release: 1
+Source: %{name}-%{version}.tgz
+
+License: Boost Software License, Version 1.0
+Group: Development/Tools
+URL: http://www.boost.org
+Packager: Rene Rivera <grafik_at_[hidden]>
+BuildRoot: /var/tmp/%{name}-%{version}.root
+
+%description
+Boost Jam is a build tool based on FTJam, which in turn is based on
+Perforce Jam. It contains significant improvements made to facilitate
+its use in the Boost Build System, but should be backward compatible
+with Perforce Jam.
+
+Authors:
+ Perforce Jam : Cristopher Seiwald
+ FT Jam : David Turner
+ Boost Jam : David Abrahams
+
+Copyright:
+ /+\
+ +\ Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
+ \+/
+ License is hereby granted to use this software and distribute it
+ freely, as long as this copyright notice is retained and modifications
+ are clearly marked.
+ ALL WARRANTIES ARE HEREBY DISCLAIMED.
+
+Also:
+ Copyright 2001-2006 David Abrahams.
+ Copyright 2002-2006 Rene Rivera.
+ Copyright 2003-2006 Vladimir Prus.
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+
+%prep
+%setup -n %{name}-%{version}
+
+%build
+LOCATE_TARGET=bin ./build.sh $BOOST_JAM_TOOLSET
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT%{_bindir}
+mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
+install -m 755 bin/bjam $RPM_BUILD_ROOT%{_bindir}/bjam-%{version}
+ln -sf bjam-%{version} $RPM_BUILD_ROOT%{_bindir}/bjam
+cp -R *.html *.png *.css LICENSE*.txt images jam $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
+
+find $RPM_BUILD_ROOT -name CVS -type d -exec rm -r {} \;
+
+%files
+%defattr(-,root,root)
+%attr(755,root,root) /usr/bin/*
+%doc %{_docdir}/%{name}-%{version}
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT

Modified: branches/release/tools/jam/src/build.bat
==============================================================================
--- branches/release/tools/jam/src/build.bat (original)
+++ branches/release/tools/jam/src/build.bat 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -20,8 +20,7 @@
 ECHO ### You can specify the toolset as the argument, i.e.:
 ECHO ### .\build.bat msvc
 ECHO ###
-ECHO ### Toolsets supported by this script are: borland, como, gcc, gcc-nocygwin,
-ECHO ### intel-win32, metrowerks, mingw, msvc, vc7, vc8, vc9
+ECHO ### Toolsets supported by this script are: borland, como, gcc, gcc-nocygwin, intel-win32, metrowerks, mingw, msvc, vc7, vc8
 ECHO ###
 set _error_=
 endlocal
@@ -41,7 +40,7 @@
 
 
 :Test_Option
-REM Tests whether the given string is in the form of an option: "--*"
+REM Tests wether the given string is in the form of an option: "--*"
 setlocal & endlocal
 setlocal
 set test=%1

Modified: branches/release/tools/jam/src/build.jam
==============================================================================
--- branches/release/tools/jam/src/build.jam (original)
+++ branches/release/tools/jam/src/build.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -13,7 +13,7 @@
 ./ ?= "" ;
 
 # Info about what we are building.
-_VERSION_ = 3 1 17 ;
+_VERSION_ = 3 1 16 ;
 NAME = boost-jam ;
 VERSION = $(_VERSION_:J=$(.)) ;
 RELEASE = 1 ;

Modified: branches/release/tools/jam/src/builtins.c
==============================================================================
--- branches/release/tools/jam/src/builtins.c (original)
+++ branches/release/tools/jam/src/builtins.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -66,7 +66,7 @@
 RULE* bind_builtin( char* name, LIST*(*f)(PARSE*, FRAME*), int flags, char** args )
 {
     argument_list* arg_list = 0;
-
+
     if ( args )
     {
         arg_list = args_new();
@@ -130,7 +130,7 @@
         bind_builtin( "REBUILDS" ,
                       builtin_rebuilds, 0, args );
     }
-
+
     duplicate_rule( "Leaves" ,
       bind_builtin( "LEAVES" ,
                     builtin_flags, T_FLAG_LEAVES, 0 ) );
@@ -174,7 +174,7 @@
                     builtin_flags, T_FLAG_FAIL_EXPECTED, 0 );
 
       bind_builtin( "RMOLD" , builtin_flags, T_FLAG_RMOLD, 0 );
-
+
       {
           char * args[] = { "targets", "*", 0 };
           bind_builtin( "UPDATE", builtin_update, 0, args );
@@ -315,7 +315,7 @@
 
 #ifdef HAVE_PYTHON
       {
- char * args[] = { "python-module", ":", "function", ":",
+ char * args[] = { "python-module", ":", "function", ":",
                             "jam-module", ":", "rule-name", 0 };
           bind_builtin( "PYTHON_IMPORT_RULE",
               builtin_python_import_rule, 0, args );
@@ -410,8 +410,8 @@
 /*
  * builtin_depends() - DEPENDS/INCLUDES rule
  *
- * The DEPENDS builtin rule appends each of the listed sources on the
- * dependency list of each of the listed targets. It binds both the
+ * The DEPENDS builtin rule appends each of the listed sources on the
+ * dependency list of each of the listed targets. It binds both the
  * targets and sources as TARGETs.
  */
 
@@ -483,7 +483,7 @@
 /*
  * builtin_echo() - ECHO rule
  *
- * The ECHO builtin rule echoes the targets to the user. No other
+ * The ECHO builtin rule echoes the targets to the user. No other
  * actions are taken.
  */
 
@@ -494,7 +494,6 @@
 {
         list_print( lol_get( frame->args, 0 ) );
         printf( "\n" );
- fflush( stdout );
         return L0;
 }
 
@@ -560,8 +559,7 @@
         *p = tolower(*p);
     }
 }
-
-
+
 static void
 builtin_glob_back(
     void *closure,
@@ -570,12 +568,12 @@
     time_t time )
 {
     PROFILE_ENTER(BUILTIN_GLOB_BACK);
-
+
     struct globbing *globbing = (struct globbing *)closure;
     LIST *l;
     PATHNAME f;
     string buf[1];
-
+
     /* Null out directory for matching. */
     /* We wish we had file_dirscan() pass up a PATHNAME. */
 
@@ -609,19 +607,19 @@
             break;
         }
     }
-
+
     string_free( buf );
-
+
     PROFILE_EXIT(BUILTIN_GLOB_BACK);
 }
 
 static LIST* downcase_list( LIST *in )
 {
     LIST* result = 0;
-
+
     string s[1];
     string_new( s );
-
+
     while (in)
     {
         string_copy( s, in->string );
@@ -629,7 +627,7 @@
         result = list_append( result, list_new( 0, newstr( s->value ) ) );
         in = in->next;
     }
-
+
     string_free( s );
     return result;
 }
@@ -641,16 +639,16 @@
 {
     LIST *l = lol_get( frame->args, 0 );
     LIST *r = lol_get( frame->args, 1 );
-
+
     struct globbing globbing;
 
     globbing.results = L0;
     globbing.patterns = r;
-
+
     globbing.case_insensitive
 # if defined( OS_NT ) || defined( OS_CYGWIN )
        = l; /* always case-insensitive if any files can be found */
-# else
+# else
        = lol_get( frame->args, 2 );
 # endif
 
@@ -658,7 +656,7 @@
     {
         globbing.patterns = downcase_list( r );
     }
-
+
     for( ; l; l = list_next( l ) )
         file_dirscan( l->string, builtin_glob_back, &globbing );
 
@@ -688,10 +686,9 @@
     if (time > 0)
         return list_new(list, newstr(file));
     else
- return list;
+ return list;
 }
 
-
 LIST* glob1(char* dirname, char* pattern)
 {
     LIST* plist = list_new(L0, pattern);
@@ -699,11 +696,11 @@
 
     globbing.results = L0;
     globbing.patterns = plist;
-
+
     globbing.case_insensitive
 # if defined( OS_NT ) || defined( OS_CYGWIN )
        = plist; /* always case-insensitive if any files can be found */
-# else
+# else
        = L0;
 # endif
 
@@ -711,7 +708,7 @@
     {
         globbing.patterns = downcase_list( plist );
     }
-
+
     file_dirscan( dirname, builtin_glob_back, &globbing );
 
     if ( globbing.case_insensitive )
@@ -734,13 +731,13 @@
     {
         /* No metacharacters. Check if the path exists. */
         result = append_if_exists(result, pattern);
- }
+ }
     else
     {
         /* Have metacharacters in the pattern. Split into dir/name */
         PATHNAME path[1];
- path_parse(pattern, path);
-
+ path_parse(pattern, path);
+
         if (path->f_dir.ptr)
         {
             LIST* dirs = L0;
@@ -749,7 +746,7 @@
             string_new(dirname);
             string_new(basename);
 
- string_append_range(dirname, path->f_dir.ptr,
+ string_append_range(dirname, path->f_dir.ptr,
                                 path->f_dir.ptr + path->f_dir.len);
 
             path->f_grist.ptr = 0;
@@ -766,12 +763,12 @@
             {
                 dirs = list_new(dirs, dirname->value);
             }
-
+
             if (has_wildcards(basename->value))
             {
                 for(; dirs; dirs = dirs->next)
                 {
- result = list_append(result,
+ result = list_append(result,
                                          glob1(dirs->string, basename->value));
                 }
             }
@@ -782,9 +779,9 @@
 
                 /** No wildcard in basename. */
                 for(; dirs; dirs = dirs->next)
- {
+ {
                     path->f_dir.ptr = dirs->string;
- path->f_dir.len = strlen(dirs->string);
+ path->f_dir.len = strlen(dirs->string);
                     path_build(path, file_string, 0);
 
                     result = append_if_exists(result, file_string->value);
@@ -808,7 +805,6 @@
     return result;
 }
 
-
 LIST *
 builtin_glob_recursive(
     PARSE *parse,
@@ -825,7 +821,6 @@
     return result;
 }
 
-
 /*
  * builtin_match() - MATCH rule, regexp matching
  */
@@ -837,7 +832,7 @@
 {
         LIST *l, *r;
         LIST *result = 0;
-
+
         string buf[1];
         string_new(buf);
 
@@ -878,30 +873,28 @@
         return result;
 }
 
-
 LIST *
 builtin_hdrmacro(
     PARSE *parse,
     FRAME *frame )
 {
   LIST* l = lol_get( frame->args, 0 );
-
+
   for ( ; l; l = list_next(l) )
   {
     TARGET* t = bindtarget( l->string );
 
- /* scan file for header filename macro definitions */
+ /* scan file for header filename macro definitions */
     if ( DEBUG_HEADER )
       printf( "scanning '%s' for header file macro definitions\n",
               l->string );
 
     macro_headers( t );
   }
-
+
   return L0;
 }
 
-
 /* builtin_rulenames() - RULENAMES ( MODULE ? )
  *
  * Returns a list of the non-local rule names in the given MODULE. If
@@ -933,7 +926,6 @@
     return result;
 }
 
-
 /* builtin_varnames() - VARNAMES ( MODULE ? )
  *
  * Returns a list of the variable names in the given MODULE. If
@@ -941,7 +933,6 @@
  * global module.
  */
 
-
 /* helper function for builtin_varnames(), below. Used with
  * hashenumerate, will prepend the key of each element to a list
  */
@@ -952,7 +943,6 @@
     *result = list_new( *result, copystr( *(char**)np ) );
 }
 
-
 static struct hash *get_running_module_vars()
 {
     struct hash *dummy, *vars = NULL;
@@ -964,7 +954,6 @@
     return vars;
 }
 
-
 LIST *
 builtin_varnames(
     PARSE *parse,
@@ -976,8 +965,8 @@
 
     /* The running module _always_ has its 'variables' member set to NULL
      * due to the way enter_module and var_hash_swap work */
- struct hash *vars =
- source_module == frame->module ?
+ struct hash *vars =
+ source_module == frame->module ?
             get_running_module_vars() : source_module->variables;
 
     if ( vars )
@@ -985,7 +974,6 @@
     return result;
 }
 
-
 /*
  * builtin_delete_module() - MODULE ?
  *
@@ -1004,27 +992,28 @@
     return result;
 }
 
-
 static void unknown_rule( FRAME *frame, char* key, char *module_name, char *rule_name )
 {
     backtrace_line( frame->prev );
     printf( "%s error: rule \"%s\" unknown in module \"%s\"\n", key, rule_name, module_name );
     backtrace( frame->prev );
     exit(1);
+
 }
 
-
 /*
  * builtin_import() - IMPORT ( SOURCE_MODULE ? : SOURCE_RULES * : TARGET_MODULE ? : TARGET_RULES * : LOCALIZE ? )
  *
- * The IMPORT rule imports rules from the SOURCE_MODULE into the TARGET_MODULE
- * as local rules. If either SOURCE_MODULE or TARGET_MODULE is not supplied, it
- * refers to the global module. SOURCE_RULES specifies which rules from the
- * SOURCE_MODULE to import; TARGET_RULES specifies the names to give those rules
- * in TARGET_MODULE. If SOURCE_RULES contains a name which doesn't correspond to
- * a rule in SOURCE_MODULE, or if it contains a different number of items than
- * TARGET_RULES, an error is issued. If LOCALIZE is specified, the rules will be
- * executed in TARGET_MODULE, with corresponding access to its module local
+ * The IMPORT rule imports rules from the SOURCE_MODULE into the
+ * TARGET_MODULE as local rules. If either SOURCE_MODULE or
+ * TARGET_MODULE is not supplied, it refers to the global
+ * module. SOURCE_RULES specifies which rules from the SOURCE_MODULE
+ * to import; TARGET_RULES specifies the names to give those rules in
+ * TARGET_MODULE. If SOURCE_RULES contains a name which doesn't
+ * correspond to a rule in SOURCE_MODULE, or if it contains a
+ * different number of items than TARGET_RULES, an error is issued.
+ * if LOCALIZE is specified, the rules will be executed in
+ * TARGET_MODULE, with corresponding access to its module local
  * variables.
  */
 LIST *
@@ -1040,9 +1029,9 @@
 
     module_t* target_module = bindmodule( target_module_list ? target_module_list->string : 0 );
     module_t* source_module = bindmodule( source_module_list ? source_module_list->string : 0 );
-
+
     LIST *source_name, *target_name;
-
+
     for ( source_name = source_rules, target_name = target_rules;
           source_name && target_name;
           source_name = list_next( source_name )
@@ -1050,20 +1039,20 @@
     {
         RULE r_, *r = &r_, *imported;
         r_.name = source_name->string;
-
+
         if ( !source_module->rules
              || !hashcheck( source_module->rules, (HASHDATA**)&r )
             )
         {
             unknown_rule( frame, "IMPORT", source_module->name, r_.name );
         }
-
+
         imported = import_rule( r, target_module, target_name->string );
         if ( localize )
             imported->module = target_module;
         imported->exported = 0; /* this rule is really part of some other module; just refer to it here, but don't let it out */
     }
-
+
     if ( source_name || target_name )
     {
         backtrace_line( frame->prev );
@@ -1097,21 +1086,21 @@
     LIST *rules = lol_get( frame->args, 1 );
 
     module_t* m = bindmodule( module_list ? module_list->string : 0 );
-
+
+
     for ( ; rules; rules = list_next( rules ) )
     {
         RULE r_, *r = &r_;
         r_.name = rules->string;
-
+
         if ( !m->rules || !hashcheck( m->rules, (HASHDATA**)&r ) )
             unknown_rule( frame, "EXPORT", m->name, r_.name );
-
+
         r->exported = 1;
     }
     return L0;
 }
 
-
 /* Retrieve the file and line number that should be indicated for a
  * given procedure in debug output or an error backtrace
  */
@@ -1136,7 +1125,6 @@
     }
 }
 
-
 void print_source_line( PARSE* p )
 {
     char* file;
@@ -1149,7 +1137,6 @@
         printf( "%s:%d:", file, line);
 }
 
-
 /* Print a single line of error backtrace for the given frame */
 void backtrace_line( FRAME *frame )
 {
@@ -1164,7 +1151,6 @@
     }
 }
 
-
 /* Print the entire backtrace from the given frame to the Jambase
  * which invoked it.
  */
@@ -1177,7 +1163,6 @@
     }
 }
 
-
 /* A Jam version of the backtrace function, taking no arguments and
  * returning a list of quadruples: FILENAME LINE MODULE. RULENAME
  * describing each frame. Note that the module-name is always
@@ -1204,7 +1189,6 @@
     return result;
 }
 
-
 /*
  * builtin_caller_module() - CALLER_MODULE ( levels ? )
  *
@@ -1232,20 +1216,19 @@
     else
     {
         LIST* result;
-
+
         string name;
         string_copy( &name, frame->module->name );
         string_pop_back( &name );
 
         result = list_new( L0, newstr(name.value) );
-
+
         string_free( &name );
-
+
         return result;
     }
 }
 
-
 /*
  * Return the current working directory.
  *
@@ -1257,11 +1240,10 @@
     return pwd();
 }
 
-
 /*
  * Adds targets to the list of target that jam will attempt to update.
  */
-LIST*
+LIST*
 builtin_update( PARSE *parse, FRAME *frame)
 {
     LIST* result = list_copy( L0, targets_to_update() );
@@ -1272,7 +1254,6 @@
     return result;
 }
 
-
 LIST*
 builtin_search_for_target( PARSE *parse, FRAME *frame )
 {
@@ -1283,7 +1264,6 @@
     return list_new( L0, t->name );
 }
 
-
 LIST *builtin_import_module( PARSE *parse, FRAME *frame )
 {
     LIST* arg1 = lol_get( frame->args, 0 );
@@ -1305,7 +1285,6 @@
     return imported_modules(source_module);
 }
 
-
 LIST *builtin_instance( PARSE *parse, FRAME *frame )
 {
     LIST* arg1 = lol_get( frame->args, 0 );
@@ -1318,7 +1297,6 @@
     return L0;
 }
 
-
 LIST*
 builtin_sort( PARSE *parse, FRAME *frame )
 {
@@ -1327,131 +1305,113 @@
     return list_sort(arg1);
 }
 
-
 LIST *builtin_normalize_path( PARSE *parse, FRAME *frame )
 {
     LIST* arg = lol_get( frame->args, 0 );
 
- /* First, we iterate over all '/'-separated elements, starting from the end
- of string. If we see a '..', we remove a previous path elements. If we
- see '.', we remove it. The removal is done by overwriting data using '\1'
- in the string. After the whole string has been processed, we do a second
- pass, removing all the entered '\1' characters.
+ /* First, we iterate over all '/'-separated elements, starting from
+ the end of string. If we see '..', we remove previous path elements.
+ If we see '.', we remove it.
+ The removal is done by putting '\1' in the string. After all the string
+ is processed, we do a second pass, removing '\1' characters.
     */
+
+ string in[1], out[1], tmp[1];
+ char* end; /* Last character of the part of string still to be processed. */
+ char* current; /* Working pointer. */
+ int dotdots = 0; /* Number of '..' elements seen and not processed yet. */
+ int rooted = arg->string[0] == '/';
+ char* result;
 
- string in[1];
- string out[1];
- char * end; /* Last character of the part of string still to be processed. */
- char * current; /* Working pointer. */
- int dotdots = 0; /* Number of '..' elements seen and not processed yet. */
- int rooted = 0;
- char * result = 0;
-
- /* Make a copy of input: we should not change it. Prepend a '/' before it as
- a guard for the algorithm later on and remember whether it was originally
- rooted or not. */
-
+ /* Make a copy of input: we should not change it. */
     string_new(in);
- string_push_back(in, '/');
- for (; arg; arg = list_next(arg) )
- {
- if (arg->string[0] != '\0')
- {
- if (in->size == 1)
- rooted = ( (arg->string[0] == '/' ) || (arg->string[0] == '\\') );
- else
- string_append(in, "/");
- string_append(in, arg->string);
- }
+ if (!rooted)
+ string_push_back(in, '/');
+ while (arg)
+ {
+ string_append(in, arg->string);
+ arg = list_next(arg);
+ if (arg)
+ string_append(in, "/");
     }
 
- /* Convert \ into /. On Windows, paths using / and \ are equivalent, and we
- want this function to obtain a canonic representation. */
-
- for (current = in->value, end = in->value + in->size;
- current < end; ++current)
+ /* Convert \ into /. On windows, paths using / and \ are equivalent,
+ and we want this function to obtain canonic representation. */
+ for (current = in->value, end = in->value + in->size;
+ current < end; ++current)
         if (*current == '\\')
             *current = '/';
 
- /* Now we remove any extra path elements by overwriting them with '\1'
- characters and cound how many more unused '..' path elements there are
- remaining. Note that each remaining path element with always starts with
- a '/' character. */
-
- for (end = in->value + in->size - 1; end >= in->value; )
- {
+
+ end = in->value + in->size - 1;
+ current = end;
+
+ for(;end >= in->value;) {
         /* Set 'current' to the next occurence of '/', which always exists. */
- for (current = end; *current != '/'; --current)
+ for(current = end; *current != '/'; --current)
             ;
-
- if (current == end)
- {
- /* Found a trailing or duplicate '/'. Remove it. */
+
+ if (current == end && current != in->value) {
+ /* Found a trailing slash. Remove it. */
             *current = '\1';
- }
- else if (end - current == 1 && *(current+1) == '.')
- {
- /* Found '/.'. Remove them all. */
+ } else if (current == end && *(current+1) == '/') {
+ /* Found duplicated slash. Remove it. */
             *current = '\1';
- *(current+1) = '\1';
- }
- else if (end - current == 2 && *(current+1) == '.' && *(current+2) == '.')
- {
- /* Found '/..'. Remove them all. */
+ } else if (end - current == 1 && strncmp(current, "/.", 2) == 0) {
+ /* Found '/.'. Drop them all. */
+ *current = '\1';
+ *(current+1) = '\1';
+ } else if (end - current == 2 && strncmp(current, "/..", 3) == 0) {
+ /* Found '/..' */
             *current = '\1';
- *(current+1) = '\1';
- *(current+2) = '\1';
+ *(current+1) = '\1';
+ *(current+2) = '\1';
             ++dotdots;
- }
- else if (dotdots)
- {
+ } else if (dotdots) {
+ char* p = current;
             memset(current, '\1', end-current+1);
             --dotdots;
- }
+ }
         end = current-1;
     }
 
- string_new(out);
-
- /* Now we know that we need to add exactly dotdots '..' path elements to the
- front and that our string is either empty or has a '/' as its first
- significant character. If we have any dotdots remaining then the passed
- path must not have been rooted or else it is invalid we return an empty
- list. */
-
- if (dotdots)
- {
- if (rooted) return L0;
- do
- string_append(out, "/..");
- while (--dotdots);
- }
-
- /* Now we actually remove all the path characters marked for removal. */
 
+ string_new(tmp);
+ while(dotdots--)
+ string_append(tmp, "/..");
+ string_append(tmp, in->value);
+ string_copy(in, tmp->value);
+ string_free(tmp);
+
+
+ string_new(out);
+ /* The resulting path is either empty or has '/' as the first significant
+ element. If the original path was not rooted, we need to drop first '/'.
+ If the original path was rooted, and we've got empty path, need to add '/'
+ */
+ if (!rooted) {
+ current = strchr(in->value, '/');
+ if (current)
+ *current = '\1';
+ }
+
     for (current = in->value; *current; ++current)
         if (*current != '\1')
             string_push_back(out, *current);
 
- /* Here we know that our string contains no '\1' characters and is either
- empty or has a '/' as its initial character. If the original path was not
- rooted and we have a non-empty path we need to drop the initial '/'. If
- the original path was rooted and we have an empty path we need to add
- back the '/'. */
-
- result = newstr( out->size ? out->value + !rooted : (rooted ? "/" : "."));
-
- string_free(out);
+
+ result = newstr(out->size ? out->value : (rooted ? "/" : "."));
     string_free(in);
+ string_free(out);
 
     return list_new(0, result);
-}
 
+}
 
 LIST *builtin_native_rule( PARSE *parse, FRAME *frame )
 {
- LIST* module_name = lol_get( frame->args, 0 );
- LIST* rule_name = lol_get( frame->args, 1 );
+ LIST* module_name = lol_get( frame->args, 0 );
+ LIST* rule_name = lol_get( frame->args, 1 );
 
     module_t* module = bindmodule(module_name->string);
 
@@ -1464,20 +1424,19 @@
     else
     {
         backtrace_line( frame->prev );
- printf( "error: no native rule \"%s\" defined in module \"%s\"\n",
+ printf( "error: no native rule \"%s\" defined in module \"%s\"\n",
                 n.name, module->name);
         backtrace( frame->prev );
         exit(1);
     }
- return L0;
+ return L0;
 }
 
-
 LIST *builtin_has_native_rule( PARSE *parse, FRAME *frame )
 {
- LIST* module_name = lol_get( frame->args, 0 );
- LIST* rule_name = lol_get( frame->args, 1 );
- LIST* version = lol_get( frame->args, 2 );
+ LIST* module_name = lol_get( frame->args, 0 );
+ LIST* rule_name = lol_get( frame->args, 1 );
+ LIST* version = lol_get( frame->args, 2 );
 
     module_t* module = bindmodule(module_name->string);
 
@@ -1489,14 +1448,14 @@
         if (np->version == expected_version)
             return list_new(0, newstr("true"));
     }
- return L0;
+ return L0;
 }
 
 
 LIST *builtin_user_module( PARSE *parse, FRAME *frame )
 {
- LIST* module_name = lol_get( frame->args, 0 );
- for(; module_name; module_name = module_name->next)
+ LIST* module_name = lol_get( frame->args, 0 );
+ for(; module_name; module_name = module_name->next)
     {
         module_t* m = bindmodule( module_name->string);
         m->user_module = 1;
@@ -1507,7 +1466,7 @@
 LIST *builtin_nearest_user_location( PARSE *parse, FRAME *frame )
 {
     LIST* result = 0;
- FRAME* nearest_user_frame =
+ FRAME* nearest_user_frame =
         frame->module->user_module ? frame : frame->prev_user;
 
     if (nearest_user_frame)
@@ -1543,10 +1502,10 @@
 LIST *builtin_python_import_rule( PARSE *parse, FRAME *frame )
 {
     static int first_time = 1;
- char* python_module = lol_get( frame->args, 0 )->string;
- char* python_function = lol_get( frame->args, 1 )->string;
- char* jam_module = lol_get( frame->args, 2 )->string;
- char* jam_rule = lol_get( frame->args, 3 )->string;
+ char* python_module = lol_get( frame->args, 0 )->string;
+ char* python_function = lol_get( frame->args, 1 )->string;
+ char* jam_module = lol_get( frame->args, 2 )->string;
+ char* jam_rule = lol_get( frame->args, 3 )->string;
 
    PyObject *pName, *pModule, *pDict, *pFunc;
 
@@ -1566,9 +1525,9 @@
            exit_module( outer_module );
            enter_module( root_module());
        }
-
+
        extra = var_get("EXTRA_PYTHONPATH");
-
+
        if ( outer_module != root_module())
        {
             exit_module( root_module());
@@ -1582,14 +1541,14 @@
            string_append(buf, "import sys\nsys.path.append(\"");
            string_append(buf, extra->string);
            string_append(buf, "\")\n");
- PyRun_SimpleString(buf->value);
- string_free(buf);
- }
+ PyRun_SimpleString(buf->value);
+ string_free(buf);
+ }
    }
 
 
    pName = PyString_FromString(python_module);
-
+
    pModule = PyImport_Import(pName);
    Py_DECREF(pName);
 
@@ -1628,7 +1587,7 @@
 {
     LIST* l = L0;
     lol_init( lol );
-
+
     while ( elements && *elements )
     {
         if ( !strcmp( *elements, ":" ) )
@@ -1642,7 +1601,7 @@
         }
         ++elements;
     }
-
+
     if ( l != L0 )
         lol_add( lol, l );
 }
@@ -1660,7 +1619,7 @@
     LIST *result;
     PARSE *p;
     char* rulename;
-
+
     /* Build up the list of arg lists */
 
     frame_init( inner );
@@ -1680,7 +1639,7 @@
             PyObject* a = PyTuple_GetItem(args, i);
             if (PyString_Check(a))
             {
- lol_add(inner->args,
+ lol_add(inner->args,
                         list_new(0, newstr(PyString_AsString(a))));
             }
             else if (PySequence_Check(a))
@@ -1702,7 +1661,7 @@
                     Py_DECREF(e);
                 }
                 lol_add(inner->args, l);
- }
+ }
         }
     }
 
@@ -1730,15 +1689,15 @@
 
     if (!PyArg_ParseTuple(args, "ssO:import_rule", &module, &rule, &func))
         return NULL;
-
+
     if (!PyCallable_Check(func))
     {
- PyErr_SetString(PyExc_RuntimeError,
+ PyErr_SetString(PyExc_RuntimeError,
                         "Non-callable object passed to bjam.import_rule");
         return NULL;
     }
-
- m = bindmodule(*module ? module : 0);
+
+ m = bindmodule(module);
     r = bindrule(rule, m);
 
     /* Make pFunc owned */
@@ -1756,7 +1715,7 @@
    - an action body
    - a list of variable that will be bound inside the action
    - integer flags.
- Defines an action on bjam side.
+ Defines an action on bjam side.
 */
 PyObject*
 bjam_define_action(PyObject* self, PyObject *args)
@@ -1770,17 +1729,17 @@
     int n;
     int i;
 
- if (!PyArg_ParseTuple(args, "ssO!i:define_action", &name, &body,
+ if (!PyArg_ParseTuple(args, "ssO!i:define_action", &name, &body,
                           &PyList_Type, &bindlist_python, &flags))
         return NULL;
-
+
     n = PyList_Size (bindlist_python);
     for (i = 0; i < n; ++i)
     {
         PyObject *next = PyList_GetItem(bindlist_python, i);
         if (!PyString_Check(next))
         {
- PyErr_SetString(PyExc_RuntimeError,
+ PyErr_SetString(PyExc_RuntimeError,
                             "bind list has non-string type");
             return NULL;
         }
@@ -1790,7 +1749,7 @@
     new_rule_actions(root_module(), name, newstr(body), bindlist, flags);
 
     Py_INCREF(Py_None);
- return Py_None;
+ return Py_None;
 }
 
 /* Returns the value of a variable in root Jam module. */
@@ -1830,7 +1789,7 @@
         char buf[32];
         get_source_line( f->procedure, &file, &line );
         sprintf( buf, "%d", line );
-
+
         /* PyTuple_SetItem steals reference. */
         PyTuple_SetItem(tuple, 0, PyString_FromString(file));
         PyTuple_SetItem(tuple, 1, PyString_FromString(buf));
@@ -1846,80 +1805,9 @@
 #endif
 
 #ifdef HAVE_POPEN
-
 #if defined(_MSC_VER) || defined(__BORLANDC__)
- #define popen windows_popen_wrapper
+ #define popen _popen
     #define pclose _pclose
-
- /*
- * This wrapper is a workaround for a funny _popen() feature on Windows
- * where it eats external quotes in some cases. The bug seems to be related
- * to the quote stripping functionality used by the Windows cmd.exe
- * interpreter when its /S is not specified.
- *
- * Cleaned up quote from the cmd.exe help screen as displayed on Windows XP
- * SP3:
- *
- * 1. If all of the following conditions are met, then quote characters on
- * the command line are preserved:
- *
- * - no /S switch
- * - exactly two quote characters
- * - no special characters between the two quote characters, where
- * special is one of: &<>()@^|
- * - there are one or more whitespace characters between the two quote
- * characters
- * - the string between the two quote characters is the name of an
- * executable file.
- *
- * 2. Otherwise, old behavior is to see if the first character is a quote
- * character and if so, strip the leading character and remove the last
- * quote character on the command line, preserving any text after the
- * last quote character.
- *
- * This causes some commands containing quotes not to be executed correctly.
- * For example:
- *
- * "\Long folder name\aaa.exe" --name="Jurko" --no-surname
- *
- * would get its outermost quotes stripped and would be executed as:
- *
- * \Long folder name\aaa.exe" --name="Jurko --no-surname
- *
- * which would report an error about '\Long' not being a valid command.
- *
- * cmd.exe help seems to indicate it would be enough to add an extra space
- * character in front of the command to avoid this but this does not work,
- * most likely due to the shell first stripping all leading whitespace
- * characters from the command.
- *
- * Solution implemented here is to quote the whole command in case it
- * contains any quote characters. Note thought this will not work correctly
- * should Windows ever 'fix' this feature.
- * (03.06.2008.) (Jurko)
- */
- static FILE * windows_popen_wrapper( char * command, char * mode )
- {
- int extra_command_quotes_needed = ( strchr( command, '"' ) != 0 );
- string quoted_command;
- FILE * result;
-
- if ( extra_command_quotes_needed )
- {
- string_new( &quoted_command );
- string_append( &quoted_command, "\"" );
- string_append( &quoted_command, command );
- string_append( &quoted_command, "\"" );
- command = quoted_command.value;
- }
-
- result = _popen( command, "r" );
-
- if ( extra_command_quotes_needed )
- string_free( &quoted_command );
-
- return result;
- }
 #endif
 
 LIST *builtin_shell( PARSE *parse, FRAME *frame )
@@ -1933,7 +1821,7 @@
     int exit_status = -1;
     int exit_status_opt = 0;
     int no_output_opt = 0;
-
+
     /* Process the variable args options. */
     {
         int a = 1;
@@ -1952,17 +1840,14 @@
         }
     }
 
- /* The following fflush() call seems to be indicated as a workaround for
- popen() bug on POSIX implementations realted to synhronizing input stream
- positions for the called and the calling process. */
- fflush( NULL );
+ string_new( &s );
+
+ fflush(NULL);
 
- p = popen( command->string, "r" );
+ p = popen(command->string, "r");
     if ( p == NULL )
         return L0;
 
- string_new( &s );
-
     while ( (ret = fread(buffer, sizeof(char), sizeof(buffer)-1, p)) > 0 )
     {
         buffer[ret] = 0;
@@ -1972,19 +1857,19 @@
         }
     }
 
- exit_status = pclose( p );
+ exit_status = pclose(p);
 
     /* The command output is returned first. */
     result = list_new( L0, newstr(s.value) );
     string_free(&s);
-
+
     /* The command exit result next. */
     if ( exit_status_opt )
     {
- sprintf( buffer, "%d", exit_status );
+ sprintf (buffer, "%d", exit_status);
         result = list_new( result, newstr( buffer ) );
     }
-
+
     return result;
 }
 

Modified: branches/release/tools/jam/src/compile.c
==============================================================================
--- branches/release/tools/jam/src/compile.c (original)
+++ branches/release/tools/jam/src/compile.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -372,9 +372,8 @@
 
         pushsettings( t->settings );
         /* We don't expect that file to be included is generated by some
- action. Therefore, pass 0 as third argument.
- If the name resolves to directory, let it error out. */
- t->boundname = search( t->name, &t->time, 0, 0 );
+ action. Therefore, pass 0 as third argument. */
+ t->boundname = search( t->name, &t->time, 0 );
         popsettings( t->settings );
 
         parse_file( t->boundname, frame );
@@ -1118,12 +1117,13 @@
 }
 
 /*
- * Call the given rule with the specified parameters. The parameters should be
- * of type LIST* and end with a NULL pointer. This differs from 'evaluate_rule'
- * in that frame for the called rule is prepared inside 'call_rule'.
+ * Call the given rule with the specified parameters.
+ * The parameters should be of LIST* and end with NULL pointer.
+ * This differs from the 'evaluate_rule' in that frame
+ * for called rule is prepared in 'call_rule'.
  *
- * This function is useful when a builtin rule (in C) wants to call another
- * rule which might be implemented in Jam.
+ * This function is usefull when builtin rule (in C) wants to
+ * call another rule, which might be implemented in Jam.
  */
 LIST *call_rule( char *rulename, FRAME* caller_frame, ...)
 {

Modified: branches/release/tools/jam/src/debian/changelog
==============================================================================
--- branches/release/tools/jam/src/debian/changelog (original)
+++ branches/release/tools/jam/src/debian/changelog 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -1,72 +1,72 @@
-bjam (3.1.12-1) unstable; urgency=low
-
- * New upstream release.
-
- -- Rene Rivera <grafik_at_[hidden]> Sat, 01 Oct 2005 00:00:00 +0000
-
-bjam (3.1.11-1) unstable; urgency=low
-
- * New upstream release.
-
- -- Rene Rivera <grafik_at_[hidden]> Sat, 30 Apr 2005 00:00:00 +0000
-
-bjam (3.1.10-1) unstable; urgency=low
-
- * New upstream release.
-
- -- Rene Rivera <grafik_at_[hidden]> Tue, 1 Jun 2004 05:42:35 +0000
-
-bjam (3.1.9-2) unstable; urgency=low
-
- * Use default value of BOOST_BUILD_PATH is not is set in environment.
-
- -- Vladimir Prus <ghost_at_[hidden]> Wed, 17 Dec 2003 16:44:35 +0300
-
-bjam (3.1.9-1) unstable; urgency=low
-
- * Implement NATIVE_FILE builtin and several native rules.
-
- -- Vladimir Prus <ghost_at_[hidden]> Thu, 11 Dec 2003 13:15:26 +0300
-
-bjam (3.1.8-1) unstable; urgency=low
-
- * New upstream release.
-
- -- Vladimir Prus <ghost_at_[hidden]> Tue, 4 Nov 2003 20:50:43 +0300
-
-bjam (3.1.7-1) unstable; urgency=low
-
- * New upstream release.
-
- -- Vladimir Prus <ghost_at_[hidden]> Thu, 11 Sep 2003 10:45:44 +0400
-
-bjam (3.1.6-1) unstable; urgency=low
-
- * New upstream release.
-
- -- Vladimir Prus <ghost_at_[hidden]> Tue, 1 Jul 2003 09:12:18 +0400
-
-bjam (3.1.5-1) unstable; urgency=low
-
- * New upstream release.
-
- -- Vladimir Prus <ghost_at_[hidden]> Mon, 19 May 2003 14:05:13 +0400
-
-bjam (3.1.3-2) unstable; urgency=low
-
- * Changed Debian package to be similar to Jam's package.
-
- -- Vladimir Prus <ghost_at_[hidden]> Thu, 10 Oct 2002 18:43:26 +0400
-
-bjam (3.1.3-1) unstable; urgency=low
-
- * New upstream release.
-
- -- Vladimir Prus <ghost_at_[hidden]> Fri, 4 Oct 2002 18:16:54 +0400
-
-bjam (3.1.2-1) unstable; urgency=low
-
- * Initial Release.
-
- -- Vladimir Prus <ghost_at_[hidden]> Wed, 14 Aug 2002 14:08:00 +0400
-
+bjam (3.1.12-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Rene Rivera <grafik_at_[hidden]> Sat, 01 Oct 2005 00:00:00 +0000
+
+bjam (3.1.11-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Rene Rivera <grafik_at_[hidden]> Sat, 30 Apr 2005 00:00:00 +0000
+
+bjam (3.1.10-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Rene Rivera <grafik_at_[hidden]> Tue, 1 Jun 2004 05:42:35 +0000
+
+bjam (3.1.9-2) unstable; urgency=low
+
+ * Use default value of BOOST_BUILD_PATH is not is set in environment.
+
+ -- Vladimir Prus <ghost_at_[hidden]> Wed, 17 Dec 2003 16:44:35 +0300
+
+bjam (3.1.9-1) unstable; urgency=low
+
+ * Implement NATIVE_FILE builtin and several native rules.
+
+ -- Vladimir Prus <ghost_at_[hidden]> Thu, 11 Dec 2003 13:15:26 +0300
+
+bjam (3.1.8-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Vladimir Prus <ghost_at_[hidden]> Tue, 4 Nov 2003 20:50:43 +0300
+
+bjam (3.1.7-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Vladimir Prus <ghost_at_[hidden]> Thu, 11 Sep 2003 10:45:44 +0400
+
+bjam (3.1.6-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Vladimir Prus <ghost_at_[hidden]> Tue, 1 Jul 2003 09:12:18 +0400
+
+bjam (3.1.5-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Vladimir Prus <ghost_at_[hidden]> Mon, 19 May 2003 14:05:13 +0400
+
+bjam (3.1.3-2) unstable; urgency=low
+
+ * Changed Debian package to be similar to Jam's package.
+
+ -- Vladimir Prus <ghost_at_[hidden]> Thu, 10 Oct 2002 18:43:26 +0400
+
+bjam (3.1.3-1) unstable; urgency=low
+
+ * New upstream release.
+
+ -- Vladimir Prus <ghost_at_[hidden]> Fri, 4 Oct 2002 18:16:54 +0400
+
+bjam (3.1.2-1) unstable; urgency=low
+
+ * Initial Release.
+
+ -- Vladimir Prus <ghost_at_[hidden]> Wed, 14 Aug 2002 14:08:00 +0400
+

Modified: branches/release/tools/jam/src/debian/control
==============================================================================
--- branches/release/tools/jam/src/debian/control (original)
+++ branches/release/tools/jam/src/debian/control 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -1,16 +1,16 @@
-Source: bjam
-Section: devel
-Priority: optional
-Maintainer: Vladimir Prus <ghost_at_[hidden]>
-Build-Depends: debhelper (>> 3.0.0), docbook-to-man, bison
-Standards-Version: 3.5.2
-
-Package: bjam
-Architecture: any
-Depends: ${shlibs:Depends}
-Description: Build tool
- Boost.Jam is a portable build tool with its own interpreted language, which
- allows to implement rather complex logic in a readable way and without
- resorting to external programs. It is a descendant of Jam/MR tool modified to
- suit the needs of Boost.Build. In particular, modules and rule parameters
- were added, as well as several new builtins.
+Source: bjam
+Section: devel
+Priority: optional
+Maintainer: Vladimir Prus <ghost_at_[hidden]>
+Build-Depends: debhelper (>> 3.0.0), docbook-to-man, bison
+Standards-Version: 3.5.2
+
+Package: bjam
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Build tool
+ Boost.Jam is a portable build tool with its own interpreted language, which
+ allows to implement rather complex logic in a readable way and without
+ resorting to external programs. It is a descendant of Jam/MR tool modified to
+ suit the needs of Boost.Build. In particular, modules and rule parameters
+ were added, as well as several new builtins.

Modified: branches/release/tools/jam/src/debian/copyright
==============================================================================
--- branches/release/tools/jam/src/debian/copyright (original)
+++ branches/release/tools/jam/src/debian/copyright 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -1,25 +1,25 @@
-This package was debianized by Vladimir Prus <ghost_at_[hidden]> on
-Wed, 17 July 2002, 19:27:00 +0400.
-
-Copyright:
-
- /+\
- +\ Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
- \+/
-
- This is Release 2.4 of Jam/MR, a make-like program.
-
- License is hereby granted to use this software and distribute it
- freely, as long as this copyright notice is retained and modifications
- are clearly marked.
-
- ALL WARRANTIES ARE HEREBY DISCLAIMED.
-
-Some portions are also:
-
- Copyright 2001-2006 David Abrahams.
- Copyright 2002-2006 Rene Rivera.
- Copyright 2003-2006 Vladimir Prus.
-
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+This package was debianized by Vladimir Prus <ghost_at_[hidden]> on
+Wed, 17 July 2002, 19:27:00 +0400.
+
+Copyright:
+
+ /+\
+ +\ Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc.
+ \+/
+
+ This is Release 2.4 of Jam/MR, a make-like program.
+
+ License is hereby granted to use this software and distribute it
+ freely, as long as this copyright notice is retained and modifications
+ are clearly marked.
+
+ ALL WARRANTIES ARE HEREBY DISCLAIMED.
+
+Some portions are also:
+
+ Copyright 2001-2006 David Abrahams.
+ Copyright 2002-2006 Rene Rivera.
+ Copyright 2003-2006 Vladimir Prus.
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)

Modified: branches/release/tools/jam/src/debian/jam.man.sgml
==============================================================================
--- branches/release/tools/jam/src/debian/jam.man.sgml (original)
+++ branches/release/tools/jam/src/debian/jam.man.sgml 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -1,236 +1,236 @@
-<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
-
-<!-- Process this file with docbook-to-man to generate an nroff manual
- page: `docbook-to-man manpage.sgml > manpage.1'. You may view
- the manual page with: `docbook-to-man manpage.sgml | nroff -man |
- less'. A typical entry in a Makefile or Makefile.am is:
-
-manpage.1: manpage.sgml
- docbook-to-man $< > $@
- -->
-
- <!ENTITY dhfirstname "<firstname>Yann</firstname>">
- <!ENTITY dhsurname "<surname>Dirson</surname>">
- <!-- Please adjust the date whenever revising the manpage. -->
- <!ENTITY dhdate "<date>mai 23, 2001</date>">
- <!ENTITY dhemail "<email>dirson_at_[hidden]</email>">
- <!ENTITY dhusername "Yann Dirson">
- <!ENTITY dhpackage "jam">
-
- <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
- <!ENTITY gnu "<acronym>GNU</acronym>">
-]>
-
-<refentry>
- <refentryinfo>
- <address>
- &dhemail;
- </address>
- <author>
- &dhfirstname;
- &dhsurname;
- </author>
- <copyright>
- <year>2001</year>
- <holder>&dhusername;</holder>
- </copyright>
- &dhdate;
- </refentryinfo>
-
- <refmeta>
- <refentrytitle>JAM</refentrytitle>
- <manvolnum>1</manvolnum>
- </refmeta>
-
- <refnamediv>
- <refname>Jam/MR</refname>
- <refpurpose>Make(1) Redux</refpurpose>
- </refnamediv>
-
- <refsynopsisdiv>
- <cmdsynopsis>
- <command>jam</command>
-
- <arg><option>-a</option></arg>
- <arg><option>-n</option></arg>
- <arg><option>-v</option></arg>
-
- <arg><option>-d <replaceable/debug/</option></arg>
- <arg><option>-f <replaceable/jambase/</option></arg>
- <arg><option>-j <replaceable/jobs/</option></arg>
- <arg><option>-o <replaceable/actionsfile/</option></arg>
- <arg><option>-s <replaceable/var/=<replaceable/value/</option></arg>
- <arg><option>-t <replaceable/target/</option></arg>
-
- <arg repeat><option><replaceable/target/</option></arg>
- </cmdsynopsis>
- </refsynopsisdiv>
-
- <refsect1>
- <title>DESCRIPTION</title>
-
- <para>Jam is a program construction tool, like make(1).</para>
-
- <para>Jam recursively builds target files from source files, using
- dependency information and updating actions expressed in the
- Jambase file, which is written in jam's own interpreted language.
- The default Jambase is compiled into jam and provides a
- boilerplate for common use, relying on a user-provide file
- "Jamfile" to enumerate actual targets and sources.</para>
- </refsect1>
-
- <refsect1>
- <title>OPTIONS</title>
-
- <variablelist>
- <varlistentry>
- <term><option/-a/</term>
- <listitem>
- <para>Build all targets anyway, even if they are up-to-date.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>-d <replaceable/n/</option></term>
- <listitem>
- <para>Enable cummulative debugging levels from 1 to
- <replaceable/n/. Interesting values are:
-
- <glosslist>
- <glossentry><glossterm/1/ <glossdef><simpara/Show
- actions (the default)/</glossdef></glossentry>
-
- <glossentry><glossterm/2/ <glossdef><simpara/Show
- "quiet" actions and display all action
- text/</glossdef></glossentry>
-
- <glossentry><glossterm/3/ <glossdef><simpara>Show
- dependency analysis, and target/source
- timestamps/paths</simpara></glossdef></glossentry>
-
- <glossentry><glossterm/4/ <glossdef><simpara/Show shell
- arguments/</glossdef></glossentry>
-
- <glossentry><glossterm/5/ <glossdef><simpara/Show rule
- invocations and variable
- expansions/</glossdef></glossentry>
-
- <glossentry><glossterm/6/ <glossdef><simpara>Show
- directory/header file/archive
- scans</simpara></glossdef></glossentry>
-
- <glossentry><glossterm/7/ <glossdef><simpara/Show
- variable settings/</glossdef></glossentry>
-
- <glossentry><glossterm/8/ <glossdef><simpara/Show
- variable fetches/</glossdef></glossentry>
-
- <glossentry><glossterm/9/ <glossdef><simpara/Show
- variable manipulation, scanner
- tokens/</glossdef></glossentry>
- </glosslist>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>-d +<replaceable/n/</option></term>
- <listitem>
- <para>Enable debugging level <replaceable/n/.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option/-d 0/</term>
- <listitem>
- <para>Turn off all debugging levels. Only errors are not
- suppressed.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>-f <replaceable/jambase/</option></term>
- <listitem>
- <para>Read <replaceable/jambase/ instead of using the
- built-in Jambase. Only one <option/-f/ flag is permitted,
- but the <replaceable/jambase/ may explicitly include other
- files.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>-j <replaceable/n/</option></term>
- <listitem>
- <para>Run up to <replaceable/n/ shell commands concurrently
- (UNIX and NT only). The default is 1.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option/-n/</term>
- <listitem>
- <para>Don't actually execute the updating actions, but do
- everything else. This changes the debug level default to
- <option/-d2/.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>-o <replaceable/file/</option></term>
- <listitem>
- <para>Write the updating actions to the specified file
- instead of running them (or outputting them, as on the
- Mac).</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>-s <replaceable/var/=<replaceable/value/</option></term>
- <listitem>
- <para>Set the variable <replaceable/var/ to
- <replaceable/value/, overriding both internal variables and
- variables imported from the environment. </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option>-t <replaceable/target/</option></term>
- <listitem>
- <para>Rebuild <replaceable/target/ and everything that
- depends on it, even if it is up-to-date.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><option/-v/</term>
- <listitem>
- <para>Print the version of jam and exit.</para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </refsect1>
-
- <refsect1>
- <title>SEE ALSO</title>
-
- <para>Jam is documented fully in HTML pages available on Debian
- systems from
- <filename>/usr/share/doc/jam/Jam.html</filename>.</para>
- </refsect1>
-
- <refsect1>
- <title>AUTHOR</title>
-
- <para>This manual page was created by &dhusername; &dhemail; from
- the <filename/Jam.html/ documentation, for the &debian; system
- (but may be used by others).</para>
- </refsect1>
-</refentry>
-
-<!-- Keep this comment at the end of the file
-Local variables:
-sgml-omittag:t
-sgml-shorttag:t
-End:
--->
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
+ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+ less'. A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+ docbook-to-man $< > $@
+ -->
+
+ <!ENTITY dhfirstname "<firstname>Yann</firstname>">
+ <!ENTITY dhsurname "<surname>Dirson</surname>">
+ <!-- Please adjust the date whenever revising the manpage. -->
+ <!ENTITY dhdate "<date>mai 23, 2001</date>">
+ <!ENTITY dhemail "<email>dirson_at_[hidden]</email>">
+ <!ENTITY dhusername "Yann Dirson">
+ <!ENTITY dhpackage "jam">
+
+ <!ENTITY debian "<productname>Debian GNU/Linux</productname>">
+ <!ENTITY gnu "<acronym>GNU</acronym>">
+]>
+
+<refentry>
+ <refentryinfo>
+ <address>
+ &dhemail;
+ </address>
+ <author>
+ &dhfirstname;
+ &dhsurname;
+ </author>
+ <copyright>
+ <year>2001</year>
+ <holder>&dhusername;</holder>
+ </copyright>
+ &dhdate;
+ </refentryinfo>
+
+ <refmeta>
+ <refentrytitle>JAM</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </refmeta>
+
+ <refnamediv>
+ <refname>Jam/MR</refname>
+ <refpurpose>Make(1) Redux</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <cmdsynopsis>
+ <command>jam</command>
+
+ <arg><option>-a</option></arg>
+ <arg><option>-n</option></arg>
+ <arg><option>-v</option></arg>
+
+ <arg><option>-d <replaceable/debug/</option></arg>
+ <arg><option>-f <replaceable/jambase/</option></arg>
+ <arg><option>-j <replaceable/jobs/</option></arg>
+ <arg><option>-o <replaceable/actionsfile/</option></arg>
+ <arg><option>-s <replaceable/var/=<replaceable/value/</option></arg>
+ <arg><option>-t <replaceable/target/</option></arg>
+
+ <arg repeat><option><replaceable/target/</option></arg>
+ </cmdsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>DESCRIPTION</title>
+
+ <para>Jam is a program construction tool, like make(1).</para>
+
+ <para>Jam recursively builds target files from source files, using
+ dependency information and updating actions expressed in the
+ Jambase file, which is written in jam's own interpreted language.
+ The default Jambase is compiled into jam and provides a
+ boilerplate for common use, relying on a user-provide file
+ "Jamfile" to enumerate actual targets and sources.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>OPTIONS</title>
+
+ <variablelist>
+ <varlistentry>
+ <term><option/-a/</term>
+ <listitem>
+ <para>Build all targets anyway, even if they are up-to-date.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-d <replaceable/n/</option></term>
+ <listitem>
+ <para>Enable cummulative debugging levels from 1 to
+ <replaceable/n/. Interesting values are:
+
+ <glosslist>
+ <glossentry><glossterm/1/ <glossdef><simpara/Show
+ actions (the default)/</glossdef></glossentry>
+
+ <glossentry><glossterm/2/ <glossdef><simpara/Show
+ "quiet" actions and display all action
+ text/</glossdef></glossentry>
+
+ <glossentry><glossterm/3/ <glossdef><simpara>Show
+ dependency analysis, and target/source
+ timestamps/paths</simpara></glossdef></glossentry>
+
+ <glossentry><glossterm/4/ <glossdef><simpara/Show shell
+ arguments/</glossdef></glossentry>
+
+ <glossentry><glossterm/5/ <glossdef><simpara/Show rule
+ invocations and variable
+ expansions/</glossdef></glossentry>
+
+ <glossentry><glossterm/6/ <glossdef><simpara>Show
+ directory/header file/archive
+ scans</simpara></glossdef></glossentry>
+
+ <glossentry><glossterm/7/ <glossdef><simpara/Show
+ variable settings/</glossdef></glossentry>
+
+ <glossentry><glossterm/8/ <glossdef><simpara/Show
+ variable fetches/</glossdef></glossentry>
+
+ <glossentry><glossterm/9/ <glossdef><simpara/Show
+ variable manipulation, scanner
+ tokens/</glossdef></glossentry>
+ </glosslist>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-d +<replaceable/n/</option></term>
+ <listitem>
+ <para>Enable debugging level <replaceable/n/.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option/-d 0/</term>
+ <listitem>
+ <para>Turn off all debugging levels. Only errors are not
+ suppressed.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-f <replaceable/jambase/</option></term>
+ <listitem>
+ <para>Read <replaceable/jambase/ instead of using the
+ built-in Jambase. Only one <option/-f/ flag is permitted,
+ but the <replaceable/jambase/ may explicitly include other
+ files.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-j <replaceable/n/</option></term>
+ <listitem>
+ <para>Run up to <replaceable/n/ shell commands concurrently
+ (UNIX and NT only). The default is 1.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option/-n/</term>
+ <listitem>
+ <para>Don't actually execute the updating actions, but do
+ everything else. This changes the debug level default to
+ <option/-d2/.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-o <replaceable/file/</option></term>
+ <listitem>
+ <para>Write the updating actions to the specified file
+ instead of running them (or outputting them, as on the
+ Mac).</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-s <replaceable/var/=<replaceable/value/</option></term>
+ <listitem>
+ <para>Set the variable <replaceable/var/ to
+ <replaceable/value/, overriding both internal variables and
+ variables imported from the environment. </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option>-t <replaceable/target/</option></term>
+ <listitem>
+ <para>Rebuild <replaceable/target/ and everything that
+ depends on it, even if it is up-to-date.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><option/-v/</term>
+ <listitem>
+ <para>Print the version of jam and exit.</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>SEE ALSO</title>
+
+ <para>Jam is documented fully in HTML pages available on Debian
+ systems from
+ <filename>/usr/share/doc/jam/Jam.html</filename>.</para>
+ </refsect1>
+
+ <refsect1>
+ <title>AUTHOR</title>
+
+ <para>This manual page was created by &dhusername; &dhemail; from
+ the <filename/Jam.html/ documentation, for the &debian; system
+ (but may be used by others).</para>
+ </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+sgml-omittag:t
+sgml-shorttag:t
+End:
+-->

Modified: branches/release/tools/jam/src/debian/rules
==============================================================================
--- branches/release/tools/jam/src/debian/rules (original)
+++ branches/release/tools/jam/src/debian/rules 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -1,73 +1,73 @@
-#!/usr/bin/make -f
-# Sample debian/rules that uses debhelper.
-# GNU copyright 1997 to 1999 by Joey Hess.
-# GNU copyright 2001 by Yann Dirson.
-
-# This is the debian/rules file for packages jam and ftjam
-# It should be usable with both packages without any change
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-# This is the debhelper compatability version to use.
-export DH_COMPAT=3
-
-topdir=$(shell pwd)
-
-jam=bjam
-binname=bjam
-
-build: build-stamp
-build-stamp: debian/jam.1
- dh_testdir
-
- ./build.sh
-
- touch build-stamp
-
-%.1: %.man.sgml
- /usr/bin/docbook-to-man $< > $@
-
-clean:
- dh_testdir
- dh_testroot
- rm -f build-stamp
- rm -rf bin.*
- rm -f jam0 debian/jam.1
- dh_clean
-
-install: build
- dh_testdir
- dh_testroot
- dh_clean -k
- dh_installdirs
-
- install -d ${topdir}/debian/${jam}/usr/bin
- install -m755 bin.linuxx86/bjam ${topdir}/debian/${jam}/usr/bin/
- install -d ${topdir}/debian/${jam}/usr/share/man/man1/
- install -m644 debian/jam.1 ${topdir}/debian/${jam}/usr/share/man/man1/${binname}.1
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
- dh_testdir
- dh_testroot
- dh_installdocs README RELNOTES Jambase *.html
-# dh_installemacsen
-# dh_undocumented
- dh_installchangelogs
- dh_strip
- dh_compress
- dh_fixperms
- dh_installdeb
- dh_shlibdeps
- dh_gencontrol
- dh_md5sums
- dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+# GNU copyright 2001 by Yann Dirson.
+
+# This is the debian/rules file for packages jam and ftjam
+# It should be usable with both packages without any change
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# This is the debhelper compatability version to use.
+export DH_COMPAT=3
+
+topdir=$(shell pwd)
+
+jam=bjam
+binname=bjam
+
+build: build-stamp
+build-stamp: debian/jam.1
+ dh_testdir
+
+ ./build.sh
+
+ touch build-stamp
+
+%.1: %.man.sgml
+ /usr/bin/docbook-to-man $< > $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp
+ rm -rf bin.*
+ rm -f jam0 debian/jam.1
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ install -d ${topdir}/debian/${jam}/usr/bin
+ install -m755 bin.linuxx86/bjam ${topdir}/debian/${jam}/usr/bin/
+ install -d ${topdir}/debian/${jam}/usr/share/man/man1/
+ install -m644 debian/jam.1 ${topdir}/debian/${jam}/usr/share/man/man1/${binname}.1
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installdocs README RELNOTES Jambase *.html
+# dh_installemacsen
+# dh_undocumented
+ dh_installchangelogs
+ dh_strip
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure

Modified: branches/release/tools/jam/src/execnt.c
==============================================================================
--- branches/release/tools/jam/src/execnt.c (original)
+++ branches/release/tools/jam/src/execnt.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -479,12 +479,12 @@
     /* wait for a command to complete, while snarfing up any output */
     do
     {
- /* check for a complete command, briefly */
- i = try_wait(500);
         /* read in the output of all running commands */
         read_output();
         /* close out pending debug style dialogs */
         close_alerts();
+ /* check for a complete command, briefly */
+ if ( i < 0 ) i = try_wait(500);
         /* check if a command ran out of time */
         if ( i < 0 ) i = try_kill_one();
     }
@@ -499,7 +499,7 @@
         /* the time data for the command */
         record_times(cmdtab[i].pi.hProcess, &time);
 
- /* clear the temp file */
+ /* Clear the temp file */
         if ( cmdtab[i].tempfile_bat )
         {
             unlink( cmdtab[ i ].tempfile_bat );
@@ -507,9 +507,6 @@
             cmdtab[i].tempfile_bat = NULL;
         }
 
- /* find out the process exit code */
- GetExitCodeProcess( cmdtab[i].pi.hProcess, &cmdtab[i].exitcode );
-
         /* the dispossition of the command */
         if( intr )
             rstat = EXEC_CMD_INTR;
@@ -887,39 +884,43 @@
     }
 }
 
-/* Waits for a single child process command to complete, or the timeout,
- whichever comes first. Returns the index of the completed command in the
- cmdtab array, or -1. */
+/* waits for a single child process command to complete, or the
+ timeout, whichever is first. returns the index of the completed
+ command, or -1. */
 static int try_wait(int timeoutMillis)
 {
- int i;
- int num_active;
- int wait_api_result;
+ int i, num_active, waiting;
     HANDLE active_handles[MAXJOBS];
     int active_procs[MAXJOBS];
 
- /* prepare a list of all active processes to wait for */
- for ( num_active = 0, i = 0; i < globs.jobs; ++i )
+ for ( waiting = 1; waiting; )
     {
- if ( cmdtab[i].pi.hProcess )
+ /* find the first completed child process */
+ for ( num_active = 0, i = 0; i < globs.jobs; ++i )
         {
+ /* if we have an already dead process, return it. */
+ cmdtab[i].exitcode = 0;
+ if ( GetExitCodeProcess( cmdtab[i].pi.hProcess, &cmdtab[i].exitcode ) )
+ {
+ if ( STILL_ACTIVE != cmdtab[i].exitcode )
+ {
+ return i;
+ }
+ }
+ /* it's running, add it to the list to watch for */
             active_handles[num_active] = cmdtab[i].pi.hProcess;
             active_procs[num_active] = i;
- ++num_active;
+ num_active += 1;
+ }
+
+ /* wait for a child to complete, or for our timeout window to expire */
+ if ( waiting )
+ {
+ WaitForMultipleObjects( num_active, active_handles, FALSE, timeoutMillis );
+ waiting = 0;
         }
     }
-
- /* wait for a child to complete, or for our timeout window to expire */
- wait_api_result = WaitForMultipleObjects( num_active, active_handles,
- FALSE, timeoutMillis );
- if ( ( WAIT_OBJECT_0 <= wait_api_result ) &&
- ( wait_api_result < WAIT_OBJECT_0 + num_active ) )
- {
- /* terminated process detected - return its index */
- return active_procs[ wait_api_result - WAIT_OBJECT_0 ];
- }
-
- /* timeout */
+
     return -1;
 }
 
@@ -940,7 +941,9 @@
                 close_alert(cmdtab[i].pi.hProcess);
                 /* we have a "runaway" job, kill it */
                 kill_process_tree(0,cmdtab[i].pi.hProcess);
- /* and return it marked as a timeout */
+ /* and return it as complete, with the failure code */
+ GetExitCodeProcess( cmdtab[i].pi.hProcess, &cmdtab[i].exitcode );
+ /* mark it as a timeout */
                 cmdtab[i].exit_reason = EXIT_TIMEOUT;
                 return i;
             }

Modified: branches/release/tools/jam/src/execunix.c
==============================================================================
--- branches/release/tools/jam/src/execunix.c (original)
+++ branches/release/tools/jam/src/execunix.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -25,10 +25,6 @@
 # ifdef USE_EXECUNIX
 # include <sys/times.h>
 
-# if defined(__APPLE__)
-# define NO_VFORK
-# endif
-
 # ifdef NO_VFORK
 # define vfork() fork()
 # endif
@@ -215,8 +211,6 @@
 
         if ((cmdtab[slot].pid = vfork()) == 0)
            {
- int pid = getpid();
-
             close(out[0]);
             close(err[0]);
 
@@ -245,19 +239,17 @@
                 r_limit.rlim_max = globs.timeout;
                 setrlimit(RLIMIT_CPU, &r_limit);
             }
- setpgid(pid,pid);
- execvp( argv[0], argv );
- perror( "execvp" );
- _exit(127);
- }
+ setpgid(cmdtab[slot].pid, cmdtab[slot].pid);
+
+ execvp( argv[0], argv );
+ _exit(127);
+ }
         else if( cmdtab[slot].pid == -1 )
         {
             perror( "vfork" );
             exit( EXITBAD );
         }
 
- setpgid(cmdtab[slot].pid, cmdtab[slot].pid);
-
         /* close write end of pipes */
         close(out[1]);
         close(err[1]);
@@ -466,7 +458,7 @@
                 if (FD_ISSET(cmdtab[i].fd[OUT], &fds))
                     out = read_descriptor(i, OUT);
 
- if ((globs.pipe_action != 0) && (FD_ISSET(cmdtab[i].fd[ERR], &fds)))
+ if (FD_ISSET(cmdtab[i].fd[ERR], &fds))
                     err = read_descriptor(i, ERR);
 
                 /* if feof on either descriptor, then we're done */

Modified: branches/release/tools/jam/src/expand.c
==============================================================================
--- branches/release/tools/jam/src/expand.c (original)
+++ branches/release/tools/jam/src/expand.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -749,12 +749,7 @@
     assert(l != 0);
     assert(list_next(l) == 0);
     # ifdef OS_CYGWIN
- /* On some installations of cygwin the drive letter is expanded to other case. */
- /* This has been reported to be the case if cygwin has been installed to C:\ */
- /* as opposed to C:\cygwin */
- /* Since case of the drive letter will not matter, we allow for both. */
- assert( 0 == strcmp( l->string, "c:\\foo\\bar" )
- || 0 == strcmp( l->string, "C:\\foo\\bar") );
+ assert( !strcmp( l->string, "c:\\foo\\bar" ) );
     # else
     assert( !strcmp( l->string, cygpath ) );
     # endif

Modified: branches/release/tools/jam/src/filent.c
==============================================================================
--- branches/release/tools/jam/src/filent.c (original)
+++ branches/release/tools/jam/src/filent.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -87,33 +87,18 @@
         int ret;
         struct _finddata_t finfo[1];
         LIST* files = L0;
- int d_length = strlen( d->name );
 
         memset( (char *)&f, '\0', sizeof( f ) );
         
         f.f_dir.ptr = d->name;
- f.f_dir.len = d_length;
-
+ f.f_dir.len = strlen(d->name);
+
         /* Now enter contents of directory */
 
- /* Prepare file search specification for the findfirst() API. */
- if ( d_length == 0 )
- string_copy( filespec, ".\\*" );
- else
- {
- /*
- * We can not simply assume the given folder name will never include
- * its trailing path separator or otherwise we would not support the
- * Windows root folder specified without its drive letter, i.e. '\'.
- */
- char trailingChar = d->name[ d_length - 1 ] ;
- string_copy( filespec, d->name );
- if ( ( trailingChar != '\\' ) && ( trailingChar != '/' ) )
- string_append( filespec, "\\" );
- string_append( filespec, "*" );
- }
+ string_copy( filespec, *d->name ? d->name : "." );
+ string_append( filespec, "/*" );
 
- if ( DEBUG_BINDSCAN )
+ if( DEBUG_BINDSCAN )
             printf( "scan directory %s\n", dir );
 
         # if defined(__BORLANDC__) && __BORLANDC__ < 0x550

Modified: branches/release/tools/jam/src/filesys.c
==============================================================================
--- branches/release/tools/jam/src/filesys.c (original)
+++ branches/release/tools/jam/src/filesys.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -19,7 +19,6 @@
             printf( "dir = '%.*s' ", f->f_dir.len, f->f_dir.ptr );
         if( f->f_base.len )
             printf( "base = '%.*s' ", f->f_base.len, f->f_base.ptr );
- printf( "\n" );
     }
         
     /* Start with the grist. If the current grist isn't */

Modified: branches/release/tools/jam/src/filesys.h
==============================================================================
--- branches/release/tools/jam/src/filesys.h (original)
+++ branches/release/tools/jam/src/filesys.h 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -41,13 +41,8 @@
 } ;
 typedef struct file_info_t file_info_t ;
 
-/* Creates a pointer to information about file
- 'filename', creating it as necessary. If
- created, the structure will be default initialized. */
 file_info_t * file_info(char * filename);
 
-/* Returns information about a file, queries the OS
- if needed. */
 file_info_t * file_query(char * filename);
 
 void file_done();

Modified: branches/release/tools/jam/src/hcache.c
==============================================================================
--- branches/release/tools/jam/src/hcache.c (original)
+++ branches/release/tools/jam/src/hcache.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -80,11 +80,9 @@
             TARGET *t = bindtarget( hcachevar->string );
 
             pushsettings( t->settings );
- /* Don't expect cache file to be generated, so pass 0
- as third argument to search.
- Expect the location to be specified via LOCATE,
- so pass 0 as fourth arugment. */
- t->boundname = search( t->name, &t->time, 0, 0 );
+ /* Don't expect cache file to be generated, so pass 0
+ as third argument to search. */
+ t->boundname = search( t->name, &t->time, 0 );
             popsettings( t->settings );
 
             if (hcachevar) {

Modified: branches/release/tools/jam/src/jambase.c
==============================================================================
--- branches/release/tools/jam/src/jambase.c (original)
+++ branches/release/tools/jam/src/jambase.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -34,7 +34,7 @@
 "{\n",
 "if $(.bootstrap-file)\n",
 "{\n",
-"ECHO \"Error: Illegal attempt to re-bootstrap the build system by invoking\" ;\n",
+"EXIT \"Error: Illegal attempt to re-bootstrap the build system by invoking\" ;\n",
 "ECHO ;\n",
 "ECHO \" 'boost-build\" $(dir) \";'\" ;\n",
 "ECHO ;\n",
@@ -42,7 +42,8 @@
 "}\n",
 "BOOST_BUILD_PATH = $(dir:R=$(.boost-build-file:D)) $(BOOST_BUILD_PATH) ;\n",
 "_poke .ENVIRON : BOOST_BUILD_PATH : $(BOOST_BUILD_PATH) ;\n",
-"local bootstrap-file = [ GLOB $(BOOST_BUILD_PATH) : bootstrap.jam ] ;\n",
+"local bootstrap-file =\n",
+"[ GLOB $(BOOST_BUILD_PATH) : bootstrap.jam ] ;\n",
 ".bootstrap-file = $(bootstrap-file[1]) ;\n",
 "if ! $(.bootstrap-file)\n",
 "{\n",
@@ -59,13 +60,13 @@
 "}\n",
 "if [ MATCH .*(--debug-configuration).* : $(ARGV) ]\n",
 "{\n",
-"ECHO \"notice: loading Boost.Build from\"\n",
+"ECHO \"notice: loading Boost.Build from\" \n",
 "[ NORMALIZE_PATH $(.bootstrap-file:D) ] ;\n",
 "}\n",
 "include $(.bootstrap-file) ;\n",
 "}\n",
 "if [ MATCH .*(bjam).* : $(ARGV[1]:BL) ]\n",
-"|| $(BOOST_ROOT) # A temporary measure so Jam works with Boost.Build v1.\n",
+"|| $(BOOST_ROOT) # A temporary measure so Jam works with Boost.Build v1\n",
 "{\n",
 "local search-path = $(BOOST_BUILD_PATH) $(BOOST_ROOT) ;\n",
 "local boost-build-files =\n",
@@ -87,9 +88,9 @@
 "ECHO \"and in these directories from BOOST_BUILD_PATH and BOOST_ROOT: \"$(search-path:J=\", \")\".\" ;\n",
 "EXIT \"Please consult the documentation at 'http://www.boost.org'.\" ;\n",
 "}\n",
-"if [ MATCH .*(--debug-configuration).* : $(ARGV) ]\n",
+"if [ MATCH .*(--debug-configuration).* : $(ARGV) ] \n",
 "{\n",
-"ECHO \"notice: found boost-build.jam at\"\n",
+"ECHO \"notice: found boost-build.jam at\" \n",
 "[ NORMALIZE_PATH $(.boost-build-file) ] ;\n",
 "}\n",
 "include $(.boost-build-file) ;\n",
@@ -216,7 +217,7 @@
 "C++FLAGS ?= $(CCFLAGS) ;\n",
 "LINK ?= $(CC) ;\n",
 "LINKFLAGS ?= $(CCFLAGS) ;\n",
-"LINKLIBS ?=\n",
+"LINKLIBS ?= \n",
 "\\\"$(VISUALC16)\\\\lib\\\\mlibce.lib\\\"\n",
 "\\\"$(VISUALC16)\\\\lib\\\\oldnames.lib\\\"\n",
 ";\n",
@@ -477,7 +478,7 @@
 "SUFEXE ?= .exe ;\n",
 "SUFLIB ?= .olb ;\n",
 "SUFOBJ ?= .obj ;\n",
-"switch $(OS)\n",
+"switch $(OS) \n",
 "{\n",
 "case OPENVMS : CCFLAGS ?= /stand=vaxc ;\n",
 "case VMS : LINKLIBS ?= sys$library:vaxcrtl.olb/lib ;\n",
@@ -494,16 +495,16 @@
 "MACLIBS ?=\n",
 "\"$(CW):MacOS Support:Universal:Libraries:StubLibraries:Interfacelib\"\n",
 "\"$(CW):MacOS Support:Universal:Libraries:StubLibraries:Mathlib\" ;\n",
-"MPWLIBS ?=\n",
+"MPWLIBS ?= \n",
 "\"$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL MPWCRuntime.lib\"\n",
 "\"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC MPW.Lib\" ;\n",
-"MPWNLLIBS ?=\n",
+"MPWNLLIBS ?= \n",
 "\"$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL MPWCRuntime.lib\"\n",
 "\"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC MPW(NL).Lib\" ;\n",
 "SIOUXHDRS ?= ;\n",
-"SIOUXLIBS ?=\n",
+"SIOUXLIBS ?= \n",
 "\"$(CW):MacOS Support:Libraries:Runtime:Runtime PPC:MSL RuntimePPC.lib\"\n",
-"\"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL SIOUX.PPC.Lib\"\n",
+"\"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL SIOUX.PPC.Lib\" \n",
 "\"$(CW):MSL:MSL_C:MSL_MacOS:Lib:PPC:MSL C.PPC.Lib\" ;\n",
 "C++ ?= mwcppc ;\n",
 "C++FLAGS ?= -w off -nomapcr ;\n",
@@ -514,15 +515,15 @@
 "DOTDOT ?= \"::\" ;\n",
 "HDRS ?= $(MACHDRS) $(MPWHDRS) ;\n",
 "LINK ?= mwlinkppc ;\n",
-"LINKFLAGS ?= -mpwtool -warn ;\n",
-"LINKLIBS ?= $(MACLIBS) $(MPWLIBS) ;\n",
+"LINKFLAGS ?= -mpwtool -warn ; \n",
+"LINKLIBS ?= $(MACLIBS) $(MPWLIBS) ; \n",
 "MKDIR ?= newfolder ;\n",
 "MV ?= rename -y ;\n",
 "NOARSCAN ?= true ;\n",
 "OPTIM ?= ;\n",
 "RM ?= delete -y ;\n",
 "SLASH ?= \":\" ;\n",
-"STDHDRS ?= ;\n",
+"STDHDRS ?= ; \n",
 "SUFLIB ?= .lib ;\n",
 "SUFOBJ ?= .o ;\n",
 "}\n",
@@ -542,7 +543,7 @@
 "NOARSCAN ?= true ;\n",
 "STDHDRS ?= /boot/develop/headers/posix ;\n",
 "}\n",
-"else if $(OS) = BEOS\n",
+"else if $(OS) = BEOS \n",
 "{\n",
 "BINDIR ?= /boot/apps ;\n",
 "CC ?= gcc ;\n",
@@ -563,7 +564,7 @@
 "case AMIGA :\n",
 "CC ?= gcc ;\n",
 "YACC ?= \"bison -y\" ;\n",
-"case CYGWIN :\n",
+"case CYGWIN : \n",
 "CC ?= gcc ;\n",
 "CCFLAGS += -D__cygwin__ ;\n",
 "LEX ?= flex ;\n",
@@ -588,11 +589,11 @@
 "C++ ?= gcc ;\n",
 "CCFLAGS += -D_POSIX_SOURCE ;\n",
 "HDRS += /usr/include ;\n",
-"RANLIB ?= \"\" ;\n",
+"RANLIB ?= \"\" ; \n",
 "NOARSCAN ?= true ;\n",
 "NOARUPDATE ?= true ;\n",
 "case MVS :\n",
-"RANLIB ?= \"\" ;\n",
+"RANLIB ?= \"\" ; \n",
 "case NEXT :\n",
 "AR ?= libtool -o ;\n",
 "RANLIB ?= \"\" ;\n",
@@ -690,7 +691,7 @@
 "YACC ?= ;\n",
 "YACCFILES ?= ;\n",
 "YACCFLAGS ?= ;\n",
-"HDRPATTERN =\n",
+"HDRPATTERN = \n",
 "\"^[ ]*#[ ]*include[ ]*[<\\\"]([^\\\">]*)[\\\">].*$\" ;\n",
 "OSFULL = $(OS)$(OSVER)$(OSPLAT) $(OS)$(OSPLAT) $(OS)$(OSVER) $(OS) ;\n",
 "DEPENDS all : shell files lib exe obj ;\n",
@@ -776,7 +777,7 @@
 "{\n",
 "DEPENDS $(<) : $(>) ;\n",
 "}\n",
-"rule GenFile\n",
+"rule GenFile \n",
 "{\n",
 "local _t = [ FGristSourceFiles $(<) ] ;\n",
 "local _s = [ FAppendSuffix $(>[1]) : $(SUFEXE) ] ;\n",
@@ -802,11 +803,11 @@
 "rule HdrRule\n",
 "{\n",
 "local s ;\n",
-"if $(HDRGRIST)\n",
-"{\n",
+"if $(HDRGRIST) \n",
+"{ \n",
 "s = $(>:G=$(HDRGRIST)) ;\n",
-"} else {\n",
-"s = $(>) ;\n",
+"} else { \n",
+"s = $(>) ; \n",
 "}\n",
 "INCLUDES $(<) : $(s) ;\n",
 "SEARCH on $(s) = $(HDRSEARCH) ;\n",
@@ -830,13 +831,13 @@
 "Depends $(tt) : $(i) ;\n",
 "Install $(tt) : $(i) ;\n",
 "Chmod $(tt) ;\n",
-"if $(OWNER) && $(CHOWN)\n",
-"{\n",
+"if $(OWNER) && $(CHOWN) \n",
+"{ \n",
 "Chown $(tt) ;\n",
 "OWNER on $(tt) = $(OWNER) ;\n",
 "}\n",
-"if $(GROUP) && $(CHGRP)\n",
-"{\n",
+"if $(GROUP) && $(CHGRP) \n",
+"{ \n",
 "Chgrp $(tt) ;\n",
 "GROUP on $(tt) = $(GROUP) ;\n",
 "}\n",
@@ -909,8 +910,8 @@
 "{\n",
 "MakeLocate $(_l) $(_l)($(_s:BS)) : $(LOCATE_TARGET) ;\n",
 "}\n",
-"if $(NOARSCAN)\n",
-"{\n",
+"if $(NOARSCAN) \n",
+"{ \n",
 "DEPENDS $(_l) : $(_s) ;\n",
 "}\n",
 "else\n",
@@ -971,7 +972,7 @@
 "rule MkDir\n",
 "{\n",
 "NOUPDATE $(<) ;\n",
-"if $(<) != $(DOT) && ! $($(<)-mkdir)\n",
+"if $(<) != $(DOT) && ! $($(<)-mkdir) \n",
 "{\n",
 "local s ;\n",
 "$(<)-mkdir = true ;\n",
@@ -1156,13 +1157,13 @@
 "}\n",
 "return $(_g) ;\n",
 "}\n",
-"rule FGristFiles\n",
+"rule FGristFiles \n",
 "{\n",
 "if ! $(SOURCE_GRIST)\n",
 "{\n",
 "return $(<) ;\n",
 "}\n",
-"else\n",
+"else \n",
 "{\n",
 "return $(<:G=$(SOURCE_GRIST)) ;\n",
 "}\n",
@@ -1173,7 +1174,7 @@
 "{\n",
 "return $(<) ;\n",
 "}\n",
-"else\n",
+"else \n",
 "{\n",
 "local _i _o ;\n",
 "for _i in $(<)\n",
@@ -1200,10 +1201,10 @@
 "rule FSubDir\n",
 "{\n",
 "local _i _d ;\n",
-"if ! $(<[1])\n",
+"if ! $(<[1]) \n",
 "{\n",
 "_d = $(DOT) ;\n",
-"}\n",
+"} \n",
 "else\n",
 "{\n",
 "_d = $(DOTDOT) ;\n",
@@ -1244,7 +1245,7 @@
 "}\n",
 "else\n",
 "{\n",
-"_s = $(<[1]) ;\n",
+"_s = $(<[1]) ; \n",
 "for _i in $(<[2-])\n",
 "{\n",
 "_s = $(_i:R=$(_s)) ;\n",
@@ -1300,7 +1301,7 @@
 "}\n",
 "rule unmakeDir\n",
 "{\n",
-"if $(>[1]:D) && $(>[1]:D) != $(>[1]) && $(>[1]:D) != \\\\\\\\\n",
+"if $(>[1]:D) && $(>[1]:D) != $(>[1]) && $(>[1]:D) != \\\\\\\\ \n",
 "{\n",
 "unmakeDir $(<) : $(>[1]:D) $(>[1]:BS) $(>[2-]) ;\n",
 "}\n",
@@ -1313,7 +1314,7 @@
 "{\n",
 "local _d, _s, _i ;\n",
 "unmakeDir _d : $(<) ;\n",
-"_s = $(_d[1]) ;\n",
+"_s = $(_d[1]) ; \n",
 "for _i in $(_d[2-])\n",
 "{\n",
 "_s = $(_s)/$(_i) ;\n",
@@ -1370,7 +1371,7 @@
 "}\n",
 "actions Install\n",
 "{\n",
-"$(CP) $(>) $(<)\n",
+"$(CP) $(>) $(<) \n",
 "}\n",
 "actions Lex\n",
 "{\n",
@@ -1382,7 +1383,7 @@
 "}\n",
 "actions Link bind NEEDLIBS\n",
 "{\n",
-"$(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS)\n",
+"$(LINK) $(LINKFLAGS) -o $(<) $(UNDEFS) $(>) $(NEEDLIBS) $(LINKLIBS) \n",
 "}\n",
 "actions MkDir1\n",
 "{\n",
@@ -1519,7 +1520,7 @@
 "{\n",
 "actions together piecemeal Archive\n",
 "{\n",
-"$(AR) $(<) +-$(>)\n",
+"$(AR) $(<) +-$(>) \n",
 "}\n",
 "actions Cc\n",
 "{\n",
@@ -1542,7 +1543,7 @@
 "{\n",
 "actions together piecemeal Archive\n",
 "{\n",
-"$(AR) /out:$(<) $(>)\n",
+"$(AR) /out:$(<) $(>) \n",
 "}\n",
 "actions Cc\n",
 "{\n",
@@ -1558,13 +1559,13 @@
 "}\n",
 "}\n",
 "}\n",
-"else if $(OS2)\n",
+"else if $(OS2) \n",
 "{\n",
 "if $(TOOLSET) = WATCOM\n",
 "{\n",
 "actions together piecemeal Archive\n",
 "{\n",
-"$(AR) $(<) +-$(>)\n",
+"$(AR) $(<) +-$(>) \n",
 "}\n",
 "actions Cc\n",
 "{\n",
@@ -1601,17 +1602,17 @@
 "}\n",
 "else if $(VMS)\n",
 "{\n",
-"actions updated together piecemeal Archive\n",
+"actions updated together piecemeal Archive \n",
 "{\n",
 "lib/replace $(<) $(>[1]) ,$(>[2-])\n",
 "}\n",
 "actions Cc\n",
-"{\n",
-"$(CC)/obj=$(<) $(CCFLAGS) $(OPTIM) $(SLASHINC) $(>)\n",
+"{ \n",
+"$(CC)/obj=$(<) $(CCFLAGS) $(OPTIM) $(SLASHINC) $(>) \n",
 "}\n",
 "actions C++\n",
-"{\n",
-"$(C++)/obj=$(<) $(C++FLAGS) $(OPTIM) $(SLASHINC) $(>)\n",
+"{ \n",
+"$(C++)/obj=$(<) $(C++FLAGS) $(OPTIM) $(SLASHINC) $(>) \n",
 "}\n",
 "actions piecemeal together existing Clean\n",
 "{\n",
@@ -1640,19 +1641,19 @@
 "}\n",
 "else if $(MAC)\n",
 "{\n",
-"actions together Archive\n",
+"actions together Archive \n",
 "{\n",
 "$(LINK) -library -o $(<) $(>)\n",
 "}\n",
 "actions Cc\n",
 "{\n",
 "set -e MWCincludes $(MACINC)\n",
-"$(CC) -o $(<) $(CCFLAGS) $(OPTIM) $(>)\n",
+"$(CC) -o $(<) $(CCFLAGS) $(OPTIM) $(>) \n",
 "}\n",
 "actions C++\n",
-"{\n",
+"{ \n",
 "set -e MWCincludes $(MACINC)\n",
-"$(CC) -o $(<) $(C++FLAGS) $(OPTIM) $(>)\n",
+"$(CC) -o $(<) $(C++FLAGS) $(OPTIM) $(>) \n",
 "}\n",
 "actions Link bind NEEDLIBS\n",
 "{\n",

Modified: branches/release/tools/jam/src/jamgram.y
==============================================================================
--- branches/release/tools/jam/src/jamgram.y (original)
+++ branches/release/tools/jam/src/jamgram.y 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -1,373 +1,373 @@
-%token _BANG_t
-%token _BANG_EQUALS_t
-%token _AMPER_t
-%token _AMPERAMPER_t
-%token _LPAREN_t
-%token _RPAREN_t
-%token _PLUS_EQUALS_t
-%token _COLON_t
-%token _SEMIC_t
-%token _LANGLE_t
-%token _LANGLE_EQUALS_t
-%token _EQUALS_t
-%token _RANGLE_t
-%token _RANGLE_EQUALS_t
-%token _QUESTION_EQUALS_t
-%token _LBRACKET_t
-%token _RBRACKET_t
-%token ACTIONS_t
-%token BIND_t
-%token CASE_t
-%token CLASS_t
-%token DEFAULT_t
-%token ELSE_t
-%token EXISTING_t
-%token FOR_t
-%token IF_t
-%token IGNORE_t
-%token IN_t
-%token INCLUDE_t
-%token LOCAL_t
-%token MODULE_t
-%token ON_t
-%token PIECEMEAL_t
-%token QUIETLY_t
-%token RETURN_t
-%token RULE_t
-%token SWITCH_t
-%token TOGETHER_t
-%token UPDATED_t
-%token WHILE_t
-%token _LBRACE_t
-%token _BAR_t
-%token _BARBAR_t
-%token _RBRACE_t
-/*
- * Copyright 1993, 2000 Christopher Seiwald.
- *
- * This file is part of Jam - see jam.c for Copyright information.
- */
-
-/* This file is ALSO:
- * Copyright 2001-2004 David Abrahams.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- */
-
-/*
- * jamgram.yy - jam grammar
- *
- * 04/13/94 (seiwald) - added shorthand L0 for null list pointer
- * 06/01/94 (seiwald) - new 'actions existing' does existing sources
- * 08/23/94 (seiwald) - Support for '+=' (append to variable)
- * 08/31/94 (seiwald) - Allow ?= as alias for "default =".
- * 09/15/94 (seiwald) - if conditionals take only single arguments, so
- * that 'if foo == bar' gives syntax error (use =).
- * 02/11/95 (seiwald) - when scanning arguments to rules, only treat
- * punctuation keywords as keywords. All arg lists
- * are terminated with punctuation keywords.
- *
- * 09/11/00 (seiwald) - Support for function calls:
- *
- * Rules now return lists (LIST *), rather than void.
- *
- * New "[ rule ]" syntax evals rule into a LIST.
- *
- * Lists are now generated by compile_list() and
- * compile_append(), and any other rule that indirectly
- * makes a list, rather than being built directly here,
- * so that lists values can contain rule evaluations.
- *
- * New 'return' rule sets the return value, though
- * other statements also may have return values.
- *
- * 'run' production split from 'block' production so
- * that empty blocks can be handled separately.
- */
-
-%token ARG STRING
-
-%left _BARBAR_t _BAR_t
-%left _AMPERAMPER_t _AMPER_t
-%left _EQUALS_t _BANG_EQUALS_t IN_t
-%left _LANGLE_t _LANGLE_EQUALS_t _RANGLE_t _RANGLE_EQUALS_t
-%left _BANG_t
-
-%{
-#include "jam.h"
-
-#include "lists.h"
-#include "parse.h"
-#include "scan.h"
-#include "compile.h"
-#include "newstr.h"
-#include "rules.h"
-
-# define YYMAXDEPTH 10000 /* for OSF and other less endowed yaccs */
-
-# define F0 (LIST *(*)(PARSE *, FRAME *))0
-# define P0 (PARSE *)0
-# define S0 (char *)0
-
-# define pappend( l,r ) parse_make( compile_append,l,r,P0,S0,S0,0 )
-# define peval( c,l,r ) parse_make( compile_eval,l,r,P0,S0,S0,c )
-# define pfor( s,l,r,x ) parse_make( compile_foreach,l,r,P0,s,S0,x )
-# define pif( l,r,t ) parse_make( compile_if,l,r,t,S0,S0,0 )
-# define pincl( l ) parse_make( compile_include,l,P0,P0,S0,S0,0 )
-# define plist( s ) parse_make( compile_list,P0,P0,P0,s,S0,0 )
-# define plocal( l,r,t ) parse_make( compile_local,l,r,t,S0,S0,0 )
-# define pmodule( l,r ) parse_make( compile_module,l,r,P0,S0,S0,0 )
-# define pclass( l,r ) parse_make( compile_class,l,r,P0,S0,S0,0 )
-# define pnull() parse_make( compile_null,P0,P0,P0,S0,S0,0 )
-# define pon( l,r ) parse_make( compile_on,l,r,P0,S0,S0,0 )
-# define prule( s,p ) parse_make( compile_rule,p,P0,P0,s,S0,0 )
-# define prules( l,r ) parse_make( compile_rules,l,r,P0,S0,S0,0 )
-# define pset( l,r,a ) parse_make( compile_set,l,r,P0,S0,S0,a )
-# define pset1( l,r,t,a ) parse_make( compile_settings,l,r,t,S0,S0,a )
-# define psetc( s,p,a,l ) parse_make( compile_setcomp,p,a,P0,s,S0,l )
-# define psete( s,l,s1,f ) parse_make( compile_setexec,l,P0,P0,s,s1,f )
-# define pswitch( l,r ) parse_make( compile_switch,l,r,P0,S0,S0,0 )
-# define pwhile( l,r ) parse_make( compile_while,l,r,P0,S0,S0,0 )
-
-# define pnode( l,r ) parse_make( F0,l,r,P0,S0,S0,0 )
-# define psnode( s,l ) parse_make( F0,l,P0,P0,s,S0,0 )
-
-%}
-
-%%
-
-run : /* empty */
- /* do nothing */
- | rules
- { parse_save( $1.parse ); }
- ;
-
-/*
- * block - zero or more rules
- * rules - one or more rules
- * rule - any one of jam's rules
- * right-recursive so rules execute in order.
- */
-
-block : null
- { $$.parse = $1.parse; }
- | rules
- { $$.parse = $1.parse; }
- ;
-
-rules : rule
- { $$.parse = $1.parse; }
- | rule rules
- { $$.parse = prules( $1.parse, $2.parse ); }
- | LOCAL_t list assign_list_opt _SEMIC_t block
- { $$.parse = plocal( $2.parse, $3.parse, $5.parse ); }
- ;
-
-null : /* empty */
- { $$.parse = pnull(); }
- ;
-
-assign_list_opt : _EQUALS_t list
- { $$.parse = $2.parse; $$.number = ASSIGN_SET; }
- | null
- { $$.parse = $1.parse; $$.number = ASSIGN_APPEND; }
- ;
-
-arglist_opt : _LPAREN_t lol _RPAREN_t
- { $$.parse = $2.parse; }
- |
- { $$.parse = P0; }
- ;
-
-local_opt : LOCAL_t
- { $$.number = 1; }
- | /* empty */
- { $$.number = 0; }
- ;
-
-rule : _LBRACE_t block _RBRACE_t
- { $$.parse = $2.parse; }
- | INCLUDE_t list _SEMIC_t
- { $$.parse = pincl( $2.parse ); }
- | ARG lol _SEMIC_t
- { $$.parse = prule( $1.string, $2.parse ); }
- | arg assign list _SEMIC_t
- { $$.parse = pset( $1.parse, $3.parse, $2.number ); }
- | arg ON_t list assign list _SEMIC_t
- { $$.parse = pset1( $1.parse, $3.parse, $5.parse, $4.number ); }
- | RETURN_t list _SEMIC_t
- { $$.parse = $2.parse; }
- | FOR_t local_opt ARG IN_t list _LBRACE_t block _RBRACE_t
- { $$.parse = pfor( $3.string, $5.parse, $7.parse, $2.number ); }
- | SWITCH_t list _LBRACE_t cases _RBRACE_t
- { $$.parse = pswitch( $2.parse, $4.parse ); }
- | IF_t expr _LBRACE_t block _RBRACE_t
- { $$.parse = pif( $2.parse, $4.parse, pnull() ); }
- | MODULE_t list _LBRACE_t block _RBRACE_t
- { $$.parse = pmodule( $2.parse, $4.parse ); }
- | CLASS_t lol _LBRACE_t block _RBRACE_t
- { $$.parse = pclass( $2.parse, $4.parse ); }
- | WHILE_t expr _LBRACE_t block _RBRACE_t
- { $$.parse = pwhile( $2.parse, $4.parse ); }
- | IF_t expr _LBRACE_t block _RBRACE_t ELSE_t rule
- { $$.parse = pif( $2.parse, $4.parse, $7.parse ); }
- | local_opt RULE_t ARG arglist_opt rule
- { $$.parse = psetc( $3.string, $5.parse, $4.parse, $1.number ); }
- | ON_t arg rule
- { $$.parse = pon( $2.parse, $3.parse ); }
- | ACTIONS_t eflags ARG bindlist _LBRACE_t
- { yymode( SCAN_STRING ); }
- STRING
- { yymode( SCAN_NORMAL ); }
- _RBRACE_t
- { $$.parse = psete( $3.string,$4.parse,$7.string,$2.number ); }
- ;
-
-/*
- * assign - = or +=
- */
-
-assign : _EQUALS_t
- { $$.number = ASSIGN_SET; }
- | _PLUS_EQUALS_t
- { $$.number = ASSIGN_APPEND; }
- | _QUESTION_EQUALS_t
- { $$.number = ASSIGN_DEFAULT; }
- | DEFAULT_t _EQUALS_t
- { $$.number = ASSIGN_DEFAULT; }
- ;
-
-/*
- * expr - an expression for if
- */
-expr : arg
- { $$.parse = peval( EXPR_EXISTS, $1.parse, pnull() ); }
- | expr _EQUALS_t expr
- { $$.parse = peval( EXPR_EQUALS, $1.parse, $3.parse ); }
- | expr _BANG_EQUALS_t expr
- { $$.parse = peval( EXPR_NOTEQ, $1.parse, $3.parse ); }
- | expr _LANGLE_t expr
- { $$.parse = peval( EXPR_LESS, $1.parse, $3.parse ); }
- | expr _LANGLE_EQUALS_t expr
- { $$.parse = peval( EXPR_LESSEQ, $1.parse, $3.parse ); }
- | expr _RANGLE_t expr
- { $$.parse = peval( EXPR_MORE, $1.parse, $3.parse ); }
- | expr _RANGLE_EQUALS_t expr
- { $$.parse = peval( EXPR_MOREEQ, $1.parse, $3.parse ); }
- | expr _AMPER_t expr
- { $$.parse = peval( EXPR_AND, $1.parse, $3.parse ); }
- | expr _AMPERAMPER_t expr
- { $$.parse = peval( EXPR_AND, $1.parse, $3.parse ); }
- | expr _BAR_t expr
- { $$.parse = peval( EXPR_OR, $1.parse, $3.parse ); }
- | expr _BARBAR_t expr
- { $$.parse = peval( EXPR_OR, $1.parse, $3.parse ); }
- | arg IN_t list
- { $$.parse = peval( EXPR_IN, $1.parse, $3.parse ); }
- | _BANG_t expr
- { $$.parse = peval( EXPR_NOT, $2.parse, pnull() ); }
- | _LPAREN_t expr _RPAREN_t
- { $$.parse = $2.parse; }
- ;
-
-
-/*
- * cases - action elements inside a 'switch'
- * case - a single action element inside a 'switch'
- * right-recursive rule so cases can be examined in order.
- */
-
-cases : /* empty */
- { $$.parse = P0; }
- | case cases
- { $$.parse = pnode( $1.parse, $2.parse ); }
- ;
-
-case : CASE_t ARG _COLON_t block
- { $$.parse = psnode( $2.string, $4.parse ); }
- ;
-
-/*
- * lol - list of lists
- * right-recursive rule so that lists can be added in order.
- */
-
-lol : list
- { $$.parse = pnode( P0, $1.parse ); }
- | list _COLON_t lol
- { $$.parse = pnode( $3.parse, $1.parse ); }
- ;
-
-/*
- * list - zero or more args in a LIST
- * listp - list (in puncutation only mode)
- * arg - one ARG or function call
- */
-
-list : listp
- { $$.parse = $1.parse; yymode( SCAN_NORMAL ); }
- ;
-
-listp : /* empty */
- { $$.parse = pnull(); yymode( SCAN_PUNCT ); }
- | listp arg
- { $$.parse = pappend( $1.parse, $2.parse ); }
- ;
-
-arg : ARG
- { $$.parse = plist( $1.string ); }
- | _LBRACKET_t { yymode( SCAN_NORMAL ); } func _RBRACKET_t
- { $$.parse = $3.parse; }
- ;
-
-/*
- * func - a function call (inside [])
- * This needs to be split cleanly out of 'rule'
- */
-
-func : arg lol
- { $$.parse = prule( $1.string, $2.parse ); }
- | ON_t arg arg lol
- { $$.parse = pon( $2.parse, prule( $3.string, $4.parse ) ); }
- | ON_t arg RETURN_t list
- { $$.parse = pon( $2.parse, $4.parse ); }
- ;
-
-
-/*
- * eflags - zero or more modifiers to 'executes'
- * eflag - a single modifier to 'executes'
- */
-
-eflags : /* empty */
- { $$.number = 0; }
- | eflags eflag
- { $$.number = $1.number | $2.number; }
- ;
-
-eflag : UPDATED_t
- { $$.number = EXEC_UPDATED; }
- | TOGETHER_t
- { $$.number = EXEC_TOGETHER; }
- | IGNORE_t
- { $$.number = EXEC_IGNORE; }
- | QUIETLY_t
- { $$.number = EXEC_QUIETLY; }
- | PIECEMEAL_t
- { $$.number = EXEC_PIECEMEAL; }
- | EXISTING_t
- { $$.number = EXEC_EXISTING; }
- ;
-
-
-/*
- * bindlist - list of variable to bind for an action
- */
-
-bindlist : /* empty */
- { $$.parse = pnull(); }
- | BIND_t list
- { $$.parse = $2.parse; }
- ;
-
-
+%token _BANG_t
+%token _BANG_EQUALS_t
+%token _AMPER_t
+%token _AMPERAMPER_t
+%token _LPAREN_t
+%token _RPAREN_t
+%token _PLUS_EQUALS_t
+%token _COLON_t
+%token _SEMIC_t
+%token _LANGLE_t
+%token _LANGLE_EQUALS_t
+%token _EQUALS_t
+%token _RANGLE_t
+%token _RANGLE_EQUALS_t
+%token _QUESTION_EQUALS_t
+%token _LBRACKET_t
+%token _RBRACKET_t
+%token ACTIONS_t
+%token BIND_t
+%token CASE_t
+%token CLASS_t
+%token DEFAULT_t
+%token ELSE_t
+%token EXISTING_t
+%token FOR_t
+%token IF_t
+%token IGNORE_t
+%token IN_t
+%token INCLUDE_t
+%token LOCAL_t
+%token MODULE_t
+%token ON_t
+%token PIECEMEAL_t
+%token QUIETLY_t
+%token RETURN_t
+%token RULE_t
+%token SWITCH_t
+%token TOGETHER_t
+%token UPDATED_t
+%token WHILE_t
+%token _LBRACE_t
+%token _BAR_t
+%token _BARBAR_t
+%token _RBRACE_t
+/*
+ * Copyright 1993, 2000 Christopher Seiwald.
+ *
+ * This file is part of Jam - see jam.c for Copyright information.
+ */
+
+/* This file is ALSO:
+ * Copyright 2001-2004 David Abrahams.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+/*
+ * jamgram.yy - jam grammar
+ *
+ * 04/13/94 (seiwald) - added shorthand L0 for null list pointer
+ * 06/01/94 (seiwald) - new 'actions existing' does existing sources
+ * 08/23/94 (seiwald) - Support for '+=' (append to variable)
+ * 08/31/94 (seiwald) - Allow ?= as alias for "default =".
+ * 09/15/94 (seiwald) - if conditionals take only single arguments, so
+ * that 'if foo == bar' gives syntax error (use =).
+ * 02/11/95 (seiwald) - when scanning arguments to rules, only treat
+ * punctuation keywords as keywords. All arg lists
+ * are terminated with punctuation keywords.
+ *
+ * 09/11/00 (seiwald) - Support for function calls:
+ *
+ * Rules now return lists (LIST *), rather than void.
+ *
+ * New "[ rule ]" syntax evals rule into a LIST.
+ *
+ * Lists are now generated by compile_list() and
+ * compile_append(), and any other rule that indirectly
+ * makes a list, rather than being built directly here,
+ * so that lists values can contain rule evaluations.
+ *
+ * New 'return' rule sets the return value, though
+ * other statements also may have return values.
+ *
+ * 'run' production split from 'block' production so
+ * that empty blocks can be handled separately.
+ */
+
+%token ARG STRING
+
+%left _BARBAR_t _BAR_t
+%left _AMPERAMPER_t _AMPER_t
+%left _EQUALS_t _BANG_EQUALS_t IN_t
+%left _LANGLE_t _LANGLE_EQUALS_t _RANGLE_t _RANGLE_EQUALS_t
+%left _BANG_t
+
+%{
+#include "jam.h"
+
+#include "lists.h"
+#include "parse.h"
+#include "scan.h"
+#include "compile.h"
+#include "newstr.h"
+#include "rules.h"
+
+# define YYMAXDEPTH 10000 /* for OSF and other less endowed yaccs */
+
+# define F0 (LIST *(*)(PARSE *, FRAME *))0
+# define P0 (PARSE *)0
+# define S0 (char *)0
+
+# define pappend( l,r ) parse_make( compile_append,l,r,P0,S0,S0,0 )
+# define peval( c,l,r ) parse_make( compile_eval,l,r,P0,S0,S0,c )
+# define pfor( s,l,r,x ) parse_make( compile_foreach,l,r,P0,s,S0,x )
+# define pif( l,r,t ) parse_make( compile_if,l,r,t,S0,S0,0 )
+# define pincl( l ) parse_make( compile_include,l,P0,P0,S0,S0,0 )
+# define plist( s ) parse_make( compile_list,P0,P0,P0,s,S0,0 )
+# define plocal( l,r,t ) parse_make( compile_local,l,r,t,S0,S0,0 )
+# define pmodule( l,r ) parse_make( compile_module,l,r,P0,S0,S0,0 )
+# define pclass( l,r ) parse_make( compile_class,l,r,P0,S0,S0,0 )
+# define pnull() parse_make( compile_null,P0,P0,P0,S0,S0,0 )
+# define pon( l,r ) parse_make( compile_on,l,r,P0,S0,S0,0 )
+# define prule( s,p ) parse_make( compile_rule,p,P0,P0,s,S0,0 )
+# define prules( l,r ) parse_make( compile_rules,l,r,P0,S0,S0,0 )
+# define pset( l,r,a ) parse_make( compile_set,l,r,P0,S0,S0,a )
+# define pset1( l,r,t,a ) parse_make( compile_settings,l,r,t,S0,S0,a )
+# define psetc( s,p,a,l ) parse_make( compile_setcomp,p,a,P0,s,S0,l )
+# define psete( s,l,s1,f ) parse_make( compile_setexec,l,P0,P0,s,s1,f )
+# define pswitch( l,r ) parse_make( compile_switch,l,r,P0,S0,S0,0 )
+# define pwhile( l,r ) parse_make( compile_while,l,r,P0,S0,S0,0 )
+
+# define pnode( l,r ) parse_make( F0,l,r,P0,S0,S0,0 )
+# define psnode( s,l ) parse_make( F0,l,P0,P0,s,S0,0 )
+
+%}
+
+%%
+
+run : /* empty */
+ /* do nothing */
+ | rules
+ { parse_save( $1.parse ); }
+ ;
+
+/*
+ * block - zero or more rules
+ * rules - one or more rules
+ * rule - any one of jam's rules
+ * right-recursive so rules execute in order.
+ */
+
+block : null
+ { $$.parse = $1.parse; }
+ | rules
+ { $$.parse = $1.parse; }
+ ;
+
+rules : rule
+ { $$.parse = $1.parse; }
+ | rule rules
+ { $$.parse = prules( $1.parse, $2.parse ); }
+ | LOCAL_t list assign_list_opt _SEMIC_t block
+ { $$.parse = plocal( $2.parse, $3.parse, $5.parse ); }
+ ;
+
+null : /* empty */
+ { $$.parse = pnull(); }
+ ;
+
+assign_list_opt : _EQUALS_t list
+ { $$.parse = $2.parse; $$.number = ASSIGN_SET; }
+ | null
+ { $$.parse = $1.parse; $$.number = ASSIGN_APPEND; }
+ ;
+
+arglist_opt : _LPAREN_t lol _RPAREN_t
+ { $$.parse = $2.parse; }
+ |
+ { $$.parse = P0; }
+ ;
+
+local_opt : LOCAL_t
+ { $$.number = 1; }
+ | /* empty */
+ { $$.number = 0; }
+ ;
+
+rule : _LBRACE_t block _RBRACE_t
+ { $$.parse = $2.parse; }
+ | INCLUDE_t list _SEMIC_t
+ { $$.parse = pincl( $2.parse ); }
+ | ARG lol _SEMIC_t
+ { $$.parse = prule( $1.string, $2.parse ); }
+ | arg assign list _SEMIC_t
+ { $$.parse = pset( $1.parse, $3.parse, $2.number ); }
+ | arg ON_t list assign list _SEMIC_t
+ { $$.parse = pset1( $1.parse, $3.parse, $5.parse, $4.number ); }
+ | RETURN_t list _SEMIC_t
+ { $$.parse = $2.parse; }
+ | FOR_t local_opt ARG IN_t list _LBRACE_t block _RBRACE_t
+ { $$.parse = pfor( $3.string, $5.parse, $7.parse, $2.number ); }
+ | SWITCH_t list _LBRACE_t cases _RBRACE_t
+ { $$.parse = pswitch( $2.parse, $4.parse ); }
+ | IF_t expr _LBRACE_t block _RBRACE_t
+ { $$.parse = pif( $2.parse, $4.parse, pnull() ); }
+ | MODULE_t list _LBRACE_t block _RBRACE_t
+ { $$.parse = pmodule( $2.parse, $4.parse ); }
+ | CLASS_t lol _LBRACE_t block _RBRACE_t
+ { $$.parse = pclass( $2.parse, $4.parse ); }
+ | WHILE_t expr _LBRACE_t block _RBRACE_t
+ { $$.parse = pwhile( $2.parse, $4.parse ); }
+ | IF_t expr _LBRACE_t block _RBRACE_t ELSE_t rule
+ { $$.parse = pif( $2.parse, $4.parse, $7.parse ); }
+ | local_opt RULE_t ARG arglist_opt rule
+ { $$.parse = psetc( $3.string, $5.parse, $4.parse, $1.number ); }
+ | ON_t arg rule
+ { $$.parse = pon( $2.parse, $3.parse ); }
+ | ACTIONS_t eflags ARG bindlist _LBRACE_t
+ { yymode( SCAN_STRING ); }
+ STRING
+ { yymode( SCAN_NORMAL ); }
+ _RBRACE_t
+ { $$.parse = psete( $3.string,$4.parse,$7.string,$2.number ); }
+ ;
+
+/*
+ * assign - = or +=
+ */
+
+assign : _EQUALS_t
+ { $$.number = ASSIGN_SET; }
+ | _PLUS_EQUALS_t
+ { $$.number = ASSIGN_APPEND; }
+ | _QUESTION_EQUALS_t
+ { $$.number = ASSIGN_DEFAULT; }
+ | DEFAULT_t _EQUALS_t
+ { $$.number = ASSIGN_DEFAULT; }
+ ;
+
+/*
+ * expr - an expression for if
+ */
+expr : arg
+ { $$.parse = peval( EXPR_EXISTS, $1.parse, pnull() ); }
+ | expr _EQUALS_t expr
+ { $$.parse = peval( EXPR_EQUALS, $1.parse, $3.parse ); }
+ | expr _BANG_EQUALS_t expr
+ { $$.parse = peval( EXPR_NOTEQ, $1.parse, $3.parse ); }
+ | expr _LANGLE_t expr
+ { $$.parse = peval( EXPR_LESS, $1.parse, $3.parse ); }
+ | expr _LANGLE_EQUALS_t expr
+ { $$.parse = peval( EXPR_LESSEQ, $1.parse, $3.parse ); }
+ | expr _RANGLE_t expr
+ { $$.parse = peval( EXPR_MORE, $1.parse, $3.parse ); }
+ | expr _RANGLE_EQUALS_t expr
+ { $$.parse = peval( EXPR_MOREEQ, $1.parse, $3.parse ); }
+ | expr _AMPER_t expr
+ { $$.parse = peval( EXPR_AND, $1.parse, $3.parse ); }
+ | expr _AMPERAMPER_t expr
+ { $$.parse = peval( EXPR_AND, $1.parse, $3.parse ); }
+ | expr _BAR_t expr
+ { $$.parse = peval( EXPR_OR, $1.parse, $3.parse ); }
+ | expr _BARBAR_t expr
+ { $$.parse = peval( EXPR_OR, $1.parse, $3.parse ); }
+ | arg IN_t list
+ { $$.parse = peval( EXPR_IN, $1.parse, $3.parse ); }
+ | _BANG_t expr
+ { $$.parse = peval( EXPR_NOT, $2.parse, pnull() ); }
+ | _LPAREN_t expr _RPAREN_t
+ { $$.parse = $2.parse; }
+ ;
+
+
+/*
+ * cases - action elements inside a 'switch'
+ * case - a single action element inside a 'switch'
+ * right-recursive rule so cases can be examined in order.
+ */
+
+cases : /* empty */
+ { $$.parse = P0; }
+ | case cases
+ { $$.parse = pnode( $1.parse, $2.parse ); }
+ ;
+
+case : CASE_t ARG _COLON_t block
+ { $$.parse = psnode( $2.string, $4.parse ); }
+ ;
+
+/*
+ * lol - list of lists
+ * right-recursive rule so that lists can be added in order.
+ */
+
+lol : list
+ { $$.parse = pnode( P0, $1.parse ); }
+ | list _COLON_t lol
+ { $$.parse = pnode( $3.parse, $1.parse ); }
+ ;
+
+/*
+ * list - zero or more args in a LIST
+ * listp - list (in puncutation only mode)
+ * arg - one ARG or function call
+ */
+
+list : listp
+ { $$.parse = $1.parse; yymode( SCAN_NORMAL ); }
+ ;
+
+listp : /* empty */
+ { $$.parse = pnull(); yymode( SCAN_PUNCT ); }
+ | listp arg
+ { $$.parse = pappend( $1.parse, $2.parse ); }
+ ;
+
+arg : ARG
+ { $$.parse = plist( $1.string ); }
+ | _LBRACKET_t { yymode( SCAN_NORMAL ); } func _RBRACKET_t
+ { $$.parse = $3.parse; }
+ ;
+
+/*
+ * func - a function call (inside [])
+ * This needs to be split cleanly out of 'rule'
+ */
+
+func : arg lol
+ { $$.parse = prule( $1.string, $2.parse ); }
+ | ON_t arg arg lol
+ { $$.parse = pon( $2.parse, prule( $3.string, $4.parse ) ); }
+ | ON_t arg RETURN_t list
+ { $$.parse = pon( $2.parse, $4.parse ); }
+ ;
+
+
+/*
+ * eflags - zero or more modifiers to 'executes'
+ * eflag - a single modifier to 'executes'
+ */
+
+eflags : /* empty */
+ { $$.number = 0; }
+ | eflags eflag
+ { $$.number = $1.number | $2.number; }
+ ;
+
+eflag : UPDATED_t
+ { $$.number = EXEC_UPDATED; }
+ | TOGETHER_t
+ { $$.number = EXEC_TOGETHER; }
+ | IGNORE_t
+ { $$.number = EXEC_IGNORE; }
+ | QUIETLY_t
+ { $$.number = EXEC_QUIETLY; }
+ | PIECEMEAL_t
+ { $$.number = EXEC_PIECEMEAL; }
+ | EXISTING_t
+ { $$.number = EXEC_EXISTING; }
+ ;
+
+
+/*
+ * bindlist - list of variable to bind for an action
+ */
+
+bindlist : /* empty */
+ { $$.parse = pnull(); }
+ | BIND_t list
+ { $$.parse = $2.parse; }
+ ;
+
+

Modified: branches/release/tools/jam/src/jamgram.yy
==============================================================================
--- branches/release/tools/jam/src/jamgram.yy (original)
+++ branches/release/tools/jam/src/jamgram.yy 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -1,329 +1,329 @@
-/*
- * Copyright 1993, 2000 Christopher Seiwald.
- *
- * This file is part of Jam - see jam.c for Copyright information.
- */
-
-/* This file is ALSO:
- * Copyright 2001-2004 David Abrahams.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
- */
-
-/*
- * jamgram.yy - jam grammar
- *
- * 04/13/94 (seiwald) - added shorthand L0 for null list pointer
- * 06/01/94 (seiwald) - new 'actions existing' does existing sources
- * 08/23/94 (seiwald) - Support for '+=' (append to variable)
- * 08/31/94 (seiwald) - Allow ?= as alias for "default =".
- * 09/15/94 (seiwald) - if conditionals take only single arguments, so
- * that 'if foo == bar' gives syntax error (use =).
- * 02/11/95 (seiwald) - when scanning arguments to rules, only treat
- * punctuation keywords as keywords. All arg lists
- * are terminated with punctuation keywords.
- *
- * 09/11/00 (seiwald) - Support for function calls:
- *
- * Rules now return lists (LIST *), rather than void.
- *
- * New "[ rule ]" syntax evals rule into a LIST.
- *
- * Lists are now generated by compile_list() and
- * compile_append(), and any other rule that indirectly
- * makes a list, rather than being built directly here,
- * so that lists values can contain rule evaluations.
- *
- * New 'return' rule sets the return value, though
- * other statements also may have return values.
- *
- * 'run' production split from 'block' production so
- * that empty blocks can be handled separately.
- */
-
-%token ARG STRING
-
-%left `||` `|`
-%left `&&` `&`
-%left `=` `!=` `in`
-%left `<` `<=` `>` `>=`
-%left `!`
-
-%{
-#include "jam.h"
-
-#include "lists.h"
-#include "parse.h"
-#include "scan.h"
-#include "compile.h"
-#include "newstr.h"
-#include "rules.h"
-
-# define YYMAXDEPTH 10000 /* for OSF and other less endowed yaccs */
-
-# define F0 (LIST *(*)(PARSE *, FRAME *))0
-# define P0 (PARSE *)0
-# define S0 (char *)0
-
-# define pappend( l,r ) parse_make( compile_append,l,r,P0,S0,S0,0 )
-# define peval( c,l,r ) parse_make( compile_eval,l,r,P0,S0,S0,c )
-# define pfor( s,l,r,x ) parse_make( compile_foreach,l,r,P0,s,S0,x )
-# define pif( l,r,t ) parse_make( compile_if,l,r,t,S0,S0,0 )
-# define pincl( l ) parse_make( compile_include,l,P0,P0,S0,S0,0 )
-# define plist( s ) parse_make( compile_list,P0,P0,P0,s,S0,0 )
-# define plocal( l,r,t ) parse_make( compile_local,l,r,t,S0,S0,0 )
-# define pmodule( l,r ) parse_make( compile_module,l,r,P0,S0,S0,0 )
-# define pclass( l,r ) parse_make( compile_class,l,r,P0,S0,S0,0 )
-# define pnull() parse_make( compile_null,P0,P0,P0,S0,S0,0 )
-# define pon( l,r ) parse_make( compile_on,l,r,P0,S0,S0,0 )
-# define prule( s,p ) parse_make( compile_rule,p,P0,P0,s,S0,0 )
-# define prules( l,r ) parse_make( compile_rules,l,r,P0,S0,S0,0 )
-# define pset( l,r,a ) parse_make( compile_set,l,r,P0,S0,S0,a )
-# define pset1( l,r,t,a ) parse_make( compile_settings,l,r,t,S0,S0,a )
-# define psetc( s,p,a,l ) parse_make( compile_setcomp,p,a,P0,s,S0,l )
-# define psete( s,l,s1,f ) parse_make( compile_setexec,l,P0,P0,s,s1,f )
-# define pswitch( l,r ) parse_make( compile_switch,l,r,P0,S0,S0,0 )
-# define pwhile( l,r ) parse_make( compile_while,l,r,P0,S0,S0,0 )
-
-# define pnode( l,r ) parse_make( F0,l,r,P0,S0,S0,0 )
-# define psnode( s,l ) parse_make( F0,l,P0,P0,s,S0,0 )
-
-%}
-
-%%
-
-run : /* empty */
- /* do nothing */
- | rules
- { parse_save( $1.parse ); }
- ;
-
-/*
- * block - zero or more rules
- * rules - one or more rules
- * rule - any one of jam's rules
- * right-recursive so rules execute in order.
- */
-
-block : null
- { $$.parse = $1.parse; }
- | rules
- { $$.parse = $1.parse; }
- ;
-
-rules : rule
- { $$.parse = $1.parse; }
- | rule rules
- { $$.parse = prules( $1.parse, $2.parse ); }
- | `local` list assign_list_opt `;` block
- { $$.parse = plocal( $2.parse, $3.parse, $5.parse ); }
- ;
-
-null : /* empty */
- { $$.parse = pnull(); }
- ;
-
-assign_list_opt : `=` list
- { $$.parse = $2.parse; $$.number = ASSIGN_SET; }
- | null
- { $$.parse = $1.parse; $$.number = ASSIGN_APPEND; }
- ;
-
-arglist_opt : `(` lol `)`
- { $$.parse = $2.parse; }
- |
- { $$.parse = P0; }
- ;
-
-local_opt : `local`
- { $$.number = 1; }
- | /* empty */
- { $$.number = 0; }
- ;
-
-rule : `{` block `}`
- { $$.parse = $2.parse; }
- | `include` list `;`
- { $$.parse = pincl( $2.parse ); }
- | ARG lol `;`
- { $$.parse = prule( $1.string, $2.parse ); }
- | arg assign list `;`
- { $$.parse = pset( $1.parse, $3.parse, $2.number ); }
- | arg `on` list assign list `;`
- { $$.parse = pset1( $1.parse, $3.parse, $5.parse, $4.number ); }
- | `return` list `;`
- { $$.parse = $2.parse; }
- | `for` local_opt ARG `in` list `{` block `}`
- { $$.parse = pfor( $3.string, $5.parse, $7.parse, $2.number ); }
- | `switch` list `{` cases `}`
- { $$.parse = pswitch( $2.parse, $4.parse ); }
- | `if` expr `{` block `}`
- { $$.parse = pif( $2.parse, $4.parse, pnull() ); }
- | `module` list `{` block `}`
- { $$.parse = pmodule( $2.parse, $4.parse ); }
- | `class` lol `{` block `}`
- { $$.parse = pclass( $2.parse, $4.parse ); }
- | `while` expr `{` block `}`
- { $$.parse = pwhile( $2.parse, $4.parse ); }
- | `if` expr `{` block `}` `else` rule
- { $$.parse = pif( $2.parse, $4.parse, $7.parse ); }
- | local_opt `rule` ARG arglist_opt rule
- { $$.parse = psetc( $3.string, $5.parse, $4.parse, $1.number ); }
- | `on` arg rule
- { $$.parse = pon( $2.parse, $3.parse ); }
- | `actions` eflags ARG bindlist `{`
- { yymode( SCAN_STRING ); }
- STRING
- { yymode( SCAN_NORMAL ); }
- `}`
- { $$.parse = psete( $3.string,$4.parse,$7.string,$2.number ); }
- ;
-
-/*
- * assign - = or +=
- */
-
-assign : `=`
- { $$.number = ASSIGN_SET; }
- | `+=`
- { $$.number = ASSIGN_APPEND; }
- | `?=`
- { $$.number = ASSIGN_DEFAULT; }
- | `default` `=`
- { $$.number = ASSIGN_DEFAULT; }
- ;
-
-/*
- * expr - an expression for if
- */
-expr : arg
- { $$.parse = peval( EXPR_EXISTS, $1.parse, pnull() ); }
- | expr `=` expr
- { $$.parse = peval( EXPR_EQUALS, $1.parse, $3.parse ); }
- | expr `!=` expr
- { $$.parse = peval( EXPR_NOTEQ, $1.parse, $3.parse ); }
- | expr `<` expr
- { $$.parse = peval( EXPR_LESS, $1.parse, $3.parse ); }
- | expr `<=` expr
- { $$.parse = peval( EXPR_LESSEQ, $1.parse, $3.parse ); }
- | expr `>` expr
- { $$.parse = peval( EXPR_MORE, $1.parse, $3.parse ); }
- | expr `>=` expr
- { $$.parse = peval( EXPR_MOREEQ, $1.parse, $3.parse ); }
- | expr `&` expr
- { $$.parse = peval( EXPR_AND, $1.parse, $3.parse ); }
- | expr `&&` expr
- { $$.parse = peval( EXPR_AND, $1.parse, $3.parse ); }
- | expr `|` expr
- { $$.parse = peval( EXPR_OR, $1.parse, $3.parse ); }
- | expr `||` expr
- { $$.parse = peval( EXPR_OR, $1.parse, $3.parse ); }
- | arg `in` list
- { $$.parse = peval( EXPR_IN, $1.parse, $3.parse ); }
- | `!` expr
- { $$.parse = peval( EXPR_NOT, $2.parse, pnull() ); }
- | `(` expr `)`
- { $$.parse = $2.parse; }
- ;
-
-
-/*
- * cases - action elements inside a 'switch'
- * case - a single action element inside a 'switch'
- * right-recursive rule so cases can be examined in order.
- */
-
-cases : /* empty */
- { $$.parse = P0; }
- | case cases
- { $$.parse = pnode( $1.parse, $2.parse ); }
- ;
-
-case : `case` ARG `:` block
- { $$.parse = psnode( $2.string, $4.parse ); }
- ;
-
-/*
- * lol - list of lists
- * right-recursive rule so that lists can be added in order.
- */
-
-lol : list
- { $$.parse = pnode( P0, $1.parse ); }
- | list `:` lol
- { $$.parse = pnode( $3.parse, $1.parse ); }
- ;
-
-/*
- * list - zero or more args in a LIST
- * listp - list (in puncutation only mode)
- * arg - one ARG or function call
- */
-
-list : listp
- { $$.parse = $1.parse; yymode( SCAN_NORMAL ); }
- ;
-
-listp : /* empty */
- { $$.parse = pnull(); yymode( SCAN_PUNCT ); }
- | listp arg
- { $$.parse = pappend( $1.parse, $2.parse ); }
- ;
-
-arg : ARG
- { $$.parse = plist( $1.string ); }
- | `[` { yymode( SCAN_NORMAL ); } func `]`
- { $$.parse = $3.parse; }
- ;
-
-/*
- * func - a function call (inside [])
- * This needs to be split cleanly out of 'rule'
- */
-
-func : arg lol
- { $$.parse = prule( $1.string, $2.parse ); }
- | `on` arg arg lol
- { $$.parse = pon( $2.parse, prule( $3.string, $4.parse ) ); }
- | `on` arg `return` list
- { $$.parse = pon( $2.parse, $4.parse ); }
- ;
-
-
-/*
- * eflags - zero or more modifiers to 'executes'
- * eflag - a single modifier to 'executes'
- */
-
-eflags : /* empty */
- { $$.number = 0; }
- | eflags eflag
- { $$.number = $1.number | $2.number; }
- ;
-
-eflag : `updated`
- { $$.number = EXEC_UPDATED; }
- | `together`
- { $$.number = EXEC_TOGETHER; }
- | `ignore`
- { $$.number = EXEC_IGNORE; }
- | `quietly`
- { $$.number = EXEC_QUIETLY; }
- | `piecemeal`
- { $$.number = EXEC_PIECEMEAL; }
- | `existing`
- { $$.number = EXEC_EXISTING; }
- ;
-
-
-/*
- * bindlist - list of variable to bind for an action
- */
-
-bindlist : /* empty */
- { $$.parse = pnull(); }
- | `bind` list
- { $$.parse = $2.parse; }
- ;
-
-
+/*
+ * Copyright 1993, 2000 Christopher Seiwald.
+ *
+ * This file is part of Jam - see jam.c for Copyright information.
+ */
+
+/* This file is ALSO:
+ * Copyright 2001-2004 David Abrahams.
+ * Distributed under the Boost Software License, Version 1.0.
+ * (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
+ */
+
+/*
+ * jamgram.yy - jam grammar
+ *
+ * 04/13/94 (seiwald) - added shorthand L0 for null list pointer
+ * 06/01/94 (seiwald) - new 'actions existing' does existing sources
+ * 08/23/94 (seiwald) - Support for '+=' (append to variable)
+ * 08/31/94 (seiwald) - Allow ?= as alias for "default =".
+ * 09/15/94 (seiwald) - if conditionals take only single arguments, so
+ * that 'if foo == bar' gives syntax error (use =).
+ * 02/11/95 (seiwald) - when scanning arguments to rules, only treat
+ * punctuation keywords as keywords. All arg lists
+ * are terminated with punctuation keywords.
+ *
+ * 09/11/00 (seiwald) - Support for function calls:
+ *
+ * Rules now return lists (LIST *), rather than void.
+ *
+ * New "[ rule ]" syntax evals rule into a LIST.
+ *
+ * Lists are now generated by compile_list() and
+ * compile_append(), and any other rule that indirectly
+ * makes a list, rather than being built directly here,
+ * so that lists values can contain rule evaluations.
+ *
+ * New 'return' rule sets the return value, though
+ * other statements also may have return values.
+ *
+ * 'run' production split from 'block' production so
+ * that empty blocks can be handled separately.
+ */
+
+%token ARG STRING
+
+%left `||` `|`
+%left `&&` `&`
+%left `=` `!=` `in`
+%left `<` `<=` `>` `>=`
+%left `!`
+
+%{
+#include "jam.h"
+
+#include "lists.h"
+#include "parse.h"
+#include "scan.h"
+#include "compile.h"
+#include "newstr.h"
+#include "rules.h"
+
+# define YYMAXDEPTH 10000 /* for OSF and other less endowed yaccs */
+
+# define F0 (LIST *(*)(PARSE *, FRAME *))0
+# define P0 (PARSE *)0
+# define S0 (char *)0
+
+# define pappend( l,r ) parse_make( compile_append,l,r,P0,S0,S0,0 )
+# define peval( c,l,r ) parse_make( compile_eval,l,r,P0,S0,S0,c )
+# define pfor( s,l,r,x ) parse_make( compile_foreach,l,r,P0,s,S0,x )
+# define pif( l,r,t ) parse_make( compile_if,l,r,t,S0,S0,0 )
+# define pincl( l ) parse_make( compile_include,l,P0,P0,S0,S0,0 )
+# define plist( s ) parse_make( compile_list,P0,P0,P0,s,S0,0 )
+# define plocal( l,r,t ) parse_make( compile_local,l,r,t,S0,S0,0 )
+# define pmodule( l,r ) parse_make( compile_module,l,r,P0,S0,S0,0 )
+# define pclass( l,r ) parse_make( compile_class,l,r,P0,S0,S0,0 )
+# define pnull() parse_make( compile_null,P0,P0,P0,S0,S0,0 )
+# define pon( l,r ) parse_make( compile_on,l,r,P0,S0,S0,0 )
+# define prule( s,p ) parse_make( compile_rule,p,P0,P0,s,S0,0 )
+# define prules( l,r ) parse_make( compile_rules,l,r,P0,S0,S0,0 )
+# define pset( l,r,a ) parse_make( compile_set,l,r,P0,S0,S0,a )
+# define pset1( l,r,t,a ) parse_make( compile_settings,l,r,t,S0,S0,a )
+# define psetc( s,p,a,l ) parse_make( compile_setcomp,p,a,P0,s,S0,l )
+# define psete( s,l,s1,f ) parse_make( compile_setexec,l,P0,P0,s,s1,f )
+# define pswitch( l,r ) parse_make( compile_switch,l,r,P0,S0,S0,0 )
+# define pwhile( l,r ) parse_make( compile_while,l,r,P0,S0,S0,0 )
+
+# define pnode( l,r ) parse_make( F0,l,r,P0,S0,S0,0 )
+# define psnode( s,l ) parse_make( F0,l,P0,P0,s,S0,0 )
+
+%}
+
+%%
+
+run : /* empty */
+ /* do nothing */
+ | rules
+ { parse_save( $1.parse ); }
+ ;
+
+/*
+ * block - zero or more rules
+ * rules - one or more rules
+ * rule - any one of jam's rules
+ * right-recursive so rules execute in order.
+ */
+
+block : null
+ { $$.parse = $1.parse; }
+ | rules
+ { $$.parse = $1.parse; }
+ ;
+
+rules : rule
+ { $$.parse = $1.parse; }
+ | rule rules
+ { $$.parse = prules( $1.parse, $2.parse ); }
+ | `local` list assign_list_opt `;` block
+ { $$.parse = plocal( $2.parse, $3.parse, $5.parse ); }
+ ;
+
+null : /* empty */
+ { $$.parse = pnull(); }
+ ;
+
+assign_list_opt : `=` list
+ { $$.parse = $2.parse; $$.number = ASSIGN_SET; }
+ | null
+ { $$.parse = $1.parse; $$.number = ASSIGN_APPEND; }
+ ;
+
+arglist_opt : `(` lol `)`
+ { $$.parse = $2.parse; }
+ |
+ { $$.parse = P0; }
+ ;
+
+local_opt : `local`
+ { $$.number = 1; }
+ | /* empty */
+ { $$.number = 0; }
+ ;
+
+rule : `{` block `}`
+ { $$.parse = $2.parse; }
+ | `include` list `;`
+ { $$.parse = pincl( $2.parse ); }
+ | ARG lol `;`
+ { $$.parse = prule( $1.string, $2.parse ); }
+ | arg assign list `;`
+ { $$.parse = pset( $1.parse, $3.parse, $2.number ); }
+ | arg `on` list assign list `;`
+ { $$.parse = pset1( $1.parse, $3.parse, $5.parse, $4.number ); }
+ | `return` list `;`
+ { $$.parse = $2.parse; }
+ | `for` local_opt ARG `in` list `{` block `}`
+ { $$.parse = pfor( $3.string, $5.parse, $7.parse, $2.number ); }
+ | `switch` list `{` cases `}`
+ { $$.parse = pswitch( $2.parse, $4.parse ); }
+ | `if` expr `{` block `}`
+ { $$.parse = pif( $2.parse, $4.parse, pnull() ); }
+ | `module` list `{` block `}`
+ { $$.parse = pmodule( $2.parse, $4.parse ); }
+ | `class` lol `{` block `}`
+ { $$.parse = pclass( $2.parse, $4.parse ); }
+ | `while` expr `{` block `}`
+ { $$.parse = pwhile( $2.parse, $4.parse ); }
+ | `if` expr `{` block `}` `else` rule
+ { $$.parse = pif( $2.parse, $4.parse, $7.parse ); }
+ | local_opt `rule` ARG arglist_opt rule
+ { $$.parse = psetc( $3.string, $5.parse, $4.parse, $1.number ); }
+ | `on` arg rule
+ { $$.parse = pon( $2.parse, $3.parse ); }
+ | `actions` eflags ARG bindlist `{`
+ { yymode( SCAN_STRING ); }
+ STRING
+ { yymode( SCAN_NORMAL ); }
+ `}`
+ { $$.parse = psete( $3.string,$4.parse,$7.string,$2.number ); }
+ ;
+
+/*
+ * assign - = or +=
+ */
+
+assign : `=`
+ { $$.number = ASSIGN_SET; }
+ | `+=`
+ { $$.number = ASSIGN_APPEND; }
+ | `?=`
+ { $$.number = ASSIGN_DEFAULT; }
+ | `default` `=`
+ { $$.number = ASSIGN_DEFAULT; }
+ ;
+
+/*
+ * expr - an expression for if
+ */
+expr : arg
+ { $$.parse = peval( EXPR_EXISTS, $1.parse, pnull() ); }
+ | expr `=` expr
+ { $$.parse = peval( EXPR_EQUALS, $1.parse, $3.parse ); }
+ | expr `!=` expr
+ { $$.parse = peval( EXPR_NOTEQ, $1.parse, $3.parse ); }
+ | expr `<` expr
+ { $$.parse = peval( EXPR_LESS, $1.parse, $3.parse ); }
+ | expr `<=` expr
+ { $$.parse = peval( EXPR_LESSEQ, $1.parse, $3.parse ); }
+ | expr `>` expr
+ { $$.parse = peval( EXPR_MORE, $1.parse, $3.parse ); }
+ | expr `>=` expr
+ { $$.parse = peval( EXPR_MOREEQ, $1.parse, $3.parse ); }
+ | expr `&` expr
+ { $$.parse = peval( EXPR_AND, $1.parse, $3.parse ); }
+ | expr `&&` expr
+ { $$.parse = peval( EXPR_AND, $1.parse, $3.parse ); }
+ | expr `|` expr
+ { $$.parse = peval( EXPR_OR, $1.parse, $3.parse ); }
+ | expr `||` expr
+ { $$.parse = peval( EXPR_OR, $1.parse, $3.parse ); }
+ | arg `in` list
+ { $$.parse = peval( EXPR_IN, $1.parse, $3.parse ); }
+ | `!` expr
+ { $$.parse = peval( EXPR_NOT, $2.parse, pnull() ); }
+ | `(` expr `)`
+ { $$.parse = $2.parse; }
+ ;
+
+
+/*
+ * cases - action elements inside a 'switch'
+ * case - a single action element inside a 'switch'
+ * right-recursive rule so cases can be examined in order.
+ */
+
+cases : /* empty */
+ { $$.parse = P0; }
+ | case cases
+ { $$.parse = pnode( $1.parse, $2.parse ); }
+ ;
+
+case : `case` ARG `:` block
+ { $$.parse = psnode( $2.string, $4.parse ); }
+ ;
+
+/*
+ * lol - list of lists
+ * right-recursive rule so that lists can be added in order.
+ */
+
+lol : list
+ { $$.parse = pnode( P0, $1.parse ); }
+ | list `:` lol
+ { $$.parse = pnode( $3.parse, $1.parse ); }
+ ;
+
+/*
+ * list - zero or more args in a LIST
+ * listp - list (in puncutation only mode)
+ * arg - one ARG or function call
+ */
+
+list : listp
+ { $$.parse = $1.parse; yymode( SCAN_NORMAL ); }
+ ;
+
+listp : /* empty */
+ { $$.parse = pnull(); yymode( SCAN_PUNCT ); }
+ | listp arg
+ { $$.parse = pappend( $1.parse, $2.parse ); }
+ ;
+
+arg : ARG
+ { $$.parse = plist( $1.string ); }
+ | `[` { yymode( SCAN_NORMAL ); } func `]`
+ { $$.parse = $3.parse; }
+ ;
+
+/*
+ * func - a function call (inside [])
+ * This needs to be split cleanly out of 'rule'
+ */
+
+func : arg lol
+ { $$.parse = prule( $1.string, $2.parse ); }
+ | `on` arg arg lol
+ { $$.parse = pon( $2.parse, prule( $3.string, $4.parse ) ); }
+ | `on` arg `return` list
+ { $$.parse = pon( $2.parse, $4.parse ); }
+ ;
+
+
+/*
+ * eflags - zero or more modifiers to 'executes'
+ * eflag - a single modifier to 'executes'
+ */
+
+eflags : /* empty */
+ { $$.number = 0; }
+ | eflags eflag
+ { $$.number = $1.number | $2.number; }
+ ;
+
+eflag : `updated`
+ { $$.number = EXEC_UPDATED; }
+ | `together`
+ { $$.number = EXEC_TOGETHER; }
+ | `ignore`
+ { $$.number = EXEC_IGNORE; }
+ | `quietly`
+ { $$.number = EXEC_QUIETLY; }
+ | `piecemeal`
+ { $$.number = EXEC_PIECEMEAL; }
+ | `existing`
+ { $$.number = EXEC_EXISTING; }
+ ;
+
+
+/*
+ * bindlist - list of variable to bind for an action
+ */
+
+bindlist : /* empty */
+ { $$.parse = pnull(); }
+ | `bind` list
+ { $$.parse = $2.parse; }
+ ;
+
+

Modified: branches/release/tools/jam/src/lists.c
==============================================================================
--- branches/release/tools/jam/src/lists.c (original)
+++ branches/release/tools/jam/src/lists.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -13,12 +13,12 @@
  *
  * This implementation essentially uses a singly linked list, but
  * guarantees that the head element of every list has a valid pointer
- * to the tail of the list, so the new elements can efficiently and
+ * to the tail of the list, so the new elements can efficiently and
  * properly be appended to the end of a list.
  *
  * To avoid massive allocation, list_free() just tacks the whole freed
  * chain onto freelist and list_new() looks on freelist first for an
- * available list struct. list_free() does not free the strings in the
+ * available list struct. list_free() does not free the strings in the
  * chain: it lazily lets list_new() do so.
  *
  * 08/23/94 (seiwald) - new list_append()
@@ -32,7 +32,7 @@
  */
 
 LIST *
-list_append(
+list_append(
         LIST *l,
         LIST *nl )
 {
@@ -59,7 +59,7 @@
  */
 
 LIST *
-list_new(
+list_new(
         LIST *head,
         char *string )
 {
@@ -102,7 +102,7 @@
  */
 
 LIST *
-list_copy(
+list_copy(
         LIST *l,
         LIST *nl )
 {
@@ -117,7 +117,7 @@
  */
 
 LIST *
-list_sublist(
+list_sublist(
         LIST *l,
         int start,
         int count )
@@ -133,42 +133,82 @@
         return nl;
 }
 
-static int str_ptr_compare(const void *va, const void *vb)
-{
- char* a = *( (char**)va );
- char* b = *( (char**)vb );
- return strcmp(a, b);
-}
-
 LIST *
 list_sort(
     LIST *l)
 {
- int len, ii;
- char** strings;
- LIST* listp;
- LIST* result = 0;
+
+ LIST* first = 0;
+ LIST* second = 0;
+ LIST* merged = l;
+ LIST* result;
 
     if (!l)
         return L0;
 
- len = list_length(l);
- strings = (char**)BJAM_MALLOC( len * sizeof(char*) );
+ for(;;) {
+
+ /* Split the list in two */
+ LIST** dst = &first;
+ LIST* src = merged;
+
+ for(;;) {
+
+ *dst = list_append(*dst, list_new(0, src->string));
+
+ if (!src->next)
+ break;
+
+ if (strcmp(src->string, src->next->string) > 0)
+ {
+ if (dst == &first)
+ dst = &second;
+ else
+ dst = &first;
+ }
+
+ src = src->next;
+ }
 
- listp = l;
- for (ii = 0; ii < len; ++ii) {
- strings[ii] = listp->string;
- listp = listp->next;
- }
+ if (merged != l)
+ list_free( merged );
+ merged = 0;
+
+ if (second == 0) {
+ result = first;
+ break;
+ }
 
- qsort(strings, len, sizeof(char*), str_ptr_compare);
+
+ /* Merge lists 'first' and 'second' into 'merged' and free
+ 'first'/'second'. */
+ {
+ LIST* f = first;
+ LIST* s = second;
 
- for (ii = 0; ii < len; ++ii) {
- result = list_append( result, list_new(0, strings[ii]) );
+ while(f && s)
+ {
+ if (strcmp(f->string, s->string) < 0)
+ {
+ merged = list_append( merged, list_new(0, f->string ));
+ f = f->next;
+ }
+ else
+ {
+ merged = list_append( merged, list_new(0, s->string ));
+ s = s->next;
+ }
+ }
+
+ merged = list_copy( merged, f );
+ merged = list_copy( merged, s );
+ list_free( first );
+ list_free( second );
+ first = 0;
+ second = 0;
+ }
     }
 
- BJAM_FREE(strings);
-
     return result;
 }
 
@@ -211,12 +251,12 @@
 void
 list_print( LIST *l )
 {
- LIST *p = 0;
+ LIST *p = 0;
         for( ; l; p = l, l = list_next( l ) )
- if ( p )
+ if ( p )
                 printf( "%s ", p->string );
         if ( p )
- printf( "%s", p->string );
+ printf( "%s", p->string );
 }
 
 /*
@@ -234,7 +274,7 @@
         return n;
 }
 
-int
+int
 list_in(LIST* l, char* value)
 {
     for(; l; l = l->next)
@@ -243,7 +283,7 @@
     return 0;
 }
 
-LIST *
+LIST *
 list_unique( LIST *sorted_list)
 {
     LIST* result = 0;
@@ -257,7 +297,7 @@
             last_added = sorted_list;
         }
     }
- return result;
+ return result;
 }
 
 
@@ -276,7 +316,7 @@
  */
 
 void
-lol_add(
+lol_add(
         LOL *lol,
         LIST *l )
 {
@@ -304,7 +344,7 @@
  */
 
 LIST *
-lol_get(
+lol_get(
         LOL *lol,
         int i )
 {

Modified: branches/release/tools/jam/src/make.c
==============================================================================
--- branches/release/tools/jam/src/make.c (original)
+++ branches/release/tools/jam/src/make.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -289,8 +289,7 @@
         if( t->binding == T_BIND_UNBOUND && !( t->flags & T_FLAG_NOTFILE ) )
         {
             char* another_target;
- t->boundname = search( t->name, &t->time, &another_target,
- (t->flags & T_FLAG_ISFILE));
+ t->boundname = search( t->name, &t->time, &another_target );
             /* If it was detected that this target refers to an already
                existing and bound one, we add include dependency, so that
                every target which depends on us will depend on that other

Modified: branches/release/tools/jam/src/make1.c
==============================================================================
--- branches/release/tools/jam/src/make1.c (original)
+++ branches/release/tools/jam/src/make1.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -687,7 +687,7 @@
         FRAME frame[1];
         frame_init( frame );
 
- /* args * :: $(__TIMING_RULE__[2-]) */
+ /* args * :: $(__ACTION_RULE__[2-]) */
         lol_add( frame->args, list_copy( L0, timing_rule->next ) );
 
         /* target :: the name of the target */
@@ -1145,8 +1145,7 @@
             return;
 
         pushsettings( t->settings );
- t->boundname = search( t->name, &t->time, 0,
- (t->flags & T_FLAG_ISFILE) );
+ t->boundname = search( t->name, &t->time, 0 );
         t->binding = t->time ? T_BIND_EXISTS : T_BIND_MISSING;
         popsettings( t->settings );
 }

Modified: branches/release/tools/jam/src/modules/property-set.c
==============================================================================
--- branches/release/tools/jam/src/modules/property-set.c (original)
+++ branches/release/tools/jam/src/modules/property-set.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -15,12 +15,12 @@
     char* end = strchr(f, '>');
     string s[1];
     LIST* result;
-
+
     string_new(s);
 
     string_append_range(s, f, end+1);
     result = list_new(0, newstr(s->value));
-
+
     string_free(s);
     return result;
 }
@@ -28,22 +28,22 @@
 /*
 rule create ( raw-properties * )
 {
- raw-properties = [ sequence.unique
+ raw-properties = [ sequence.unique
         [ sequence.insertion-sort $(raw-properties) ] ] ;
-
+
     local key = $(raw-properties:J=-:E=) ;
-
- if ! $(.ps.$(key))
+
+ if ! $(.ps.$(key))
     {
         .ps.$(key) = [ new property-set $(raw-properties) ] ;
     }
- return $(.ps.$(key)) ;
+ return $(.ps.$(key)) ;
 }
 */
 
 LIST *property_set_create( PARSE *parse, FRAME *frame )
 {
- LIST* properties = lol_get( frame->args, 0 );
+ LIST* properties = lol_get( frame->args, 0 );
     LIST* sorted = 0;
     LIST* order_sensitive = 0;
     LIST* unique;
@@ -63,7 +63,7 @@
         }
         list_free(att);
     }
-
+
     sorted = list_sort(sorted);
     sorted = list_append(sorted, order_sensitive);
     unique = list_unique(sorted);
@@ -73,24 +73,24 @@
 
     string_new(var);
     string_append(var, ".ps.");
-
+
     for(tmp = unique; tmp; tmp = tmp->next) {
         string_append(var, tmp->string);
         string_push_back(var, '-');
     }
     val = var_get(var->value);
- if (val == 0)
- {
- val = call_rule("new", frame,
- list_append(list_new(0, "property-set"), unique), 0);
-
+ if (val == 0)
+ {
+ val = call_rule("new", frame,
+ list_append(list_new(0, "property-set"), unique), 0);
+
         var_set(newstr(var->value), list_copy(0, val), VAR_SET);
     }
     else
     {
         val = list_copy(0, val);
     }
-
+
     string_free(var);
     /* The 'unique' variable is freed in 'call_rule'. */
     list_free(sorted);
@@ -105,4 +105,5 @@
         char* args[] = { "raw-properties", "*", 0 };
         declare_native_rule("property-set", "create", args, property_set_create, 1);
     }
+
 }

Modified: branches/release/tools/jam/src/native.c
==============================================================================
--- branches/release/tools/jam/src/native.c (original)
+++ branches/release/tools/jam/src/native.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -9,14 +9,15 @@
 # define C0 (char *)0
 
 
-void declare_native_rule(char* module, char* rule, char** args,
+void declare_native_rule(char* module, char* rule, char** args,
                          LIST*(*f)(PARSE*, FRAME*), int version)
+
 {
     module_t* m = bindmodule(module);
     if (m->native_rules == 0) {
         m->native_rules = hashinit( sizeof( native_rule_t ), "native rules");
     }
-
+
     {
         native_rule_t n, *np = &n;
         n.name = rule;
@@ -24,13 +25,14 @@
         {
             n.arguments = args_new();
             lol_build( n.arguments->data, args );
- }
+ }
         else
         {
             n.arguments = 0;
         }
- n.procedure = parse_make( f, P0, P0, P0, C0, C0, 0 );
+ n.procedure = parse_make( f, P0, P0, P0, C0, C0, 0 );
         n.version = version;
         hashenter(m->native_rules, (HASHDATA**)&np);
     }
 }
+

Modified: branches/release/tools/jam/src/patchlevel.h
==============================================================================
--- branches/release/tools/jam/src/patchlevel.h (original)
+++ branches/release/tools/jam/src/patchlevel.h 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -9,9 +9,9 @@
 
 #define VERSION_MAJOR 3
 #define VERSION_MINOR 1
-#define VERSION_PATCH 17
+#define VERSION_PATCH 16
 #define VERSION_MAJOR_SYM "03"
 #define VERSION_MINOR_SYM "1"
-#define VERSION_PATCH_SYM "17"
-#define VERSION "3.1.17"
+#define VERSION_PATCH_SYM "16"
+#define VERSION "3.1.16"
 #define JAMVERSYM "JAMVERSION=3.1"

Modified: branches/release/tools/jam/src/rules.c
==============================================================================
--- branches/release/tools/jam/src/rules.c (original)
+++ branches/release/tools/jam/src/rules.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -137,9 +137,6 @@
             targethash = hashinit( sizeof( TARGET ), "targets" );
 
     /* Perforce added const everywhere. No time to merge that change. */
-#ifdef NT
- targetname = short_path_to_long_path( (char*)targetname );
-#endif
         t->name = (char*)targetname;
 
         if( hashenter( targethash, (HASHDATA **)&t ) )
@@ -168,7 +165,7 @@
                 /* We're binding a target with explicit LOCATE. So
                    third argument is of now use: nothing will be returned
                    through it. */
- t->boundname = search( t->name, &t->time, 0, 0 );
+ t->boundname = search( t->name, &t->time, 0 );
                 popsettings(t->settings);
                 break;
             }

Modified: branches/release/tools/jam/src/search.c
==============================================================================
--- branches/release/tools/jam/src/search.c (original)
+++ branches/release/tools/jam/src/search.c 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -20,7 +20,6 @@
 # include "compile.h"
 # include "strings.h"
 # include "hash.h"
-# include "filesys.h"
 # include <string.h>
 
 typedef struct _binding {
@@ -90,8 +89,7 @@
 search(
     char *target,
     time_t *time,
- char **another_target,
- int file
+ char **another_target
 )
 {
         PATHNAME f[1];
@@ -137,7 +135,6 @@
         while( varlist )
         {
             BINDING b, *ba = &b;
- file_info_t *ff;
 
             f->f_root.ptr = varlist->string;
             f->f_root.len = strlen( varlist->string );
@@ -148,7 +145,6 @@
             if( DEBUG_SEARCH )
                 printf( "search %s: %s\n", target, buf->value );
 
- ff = file_query(buf->value);
             timestamp( buf->value, time );
 
             b.binding = buf->value;
@@ -163,13 +159,10 @@
                 found = 1;
                 break;
             }
- else if( ff && ff->time )
+ else if( *time )
             {
- if (!file || ff->is_file)
- {
- found = 1;
- break;
- }
+ found = 1;
+ break;
             }
 
             varlist = list_next( varlist );

Modified: branches/release/tools/jam/src/search.h
==============================================================================
--- branches/release/tools/jam/src/search.h (original)
+++ branches/release/tools/jam/src/search.h 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -8,4 +8,4 @@
  * search.h - find a target along $(SEARCH) or $(LOCATE)
  */
 
-char *search( char *target, time_t *time, char **another_target, int file );
+char *search( char *target, time_t *time, char **another_target );

Modified: branches/release/tools/jam/test/action_status.jam
==============================================================================
--- branches/release/tools/jam/test/action_status.jam (original)
+++ branches/release/tools/jam/test/action_status.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -6,22 +6,23 @@
 {
     ECHO --- Testing \"actions status results\"... ;
 
- assert "" 0 : (==) : [ SHELL "\"$(ARGV[1])\" -f action_status.jam -sBJAM_SUBTEST=1" : exit-status : no-output ] ;
+ assert "" 0 : (==) : [ SHELL "$(ARGV[1]) -f action_status.jam -sBJAM_SUBTEST=1" : exit-status : no-output ] ;
     if $(NT)
     {
- assert "" 0 : (==) : [ SHELL "\"$(ARGV[1])\" -f action_status.jam -sBJAM_SUBTEST=1 \"-sACTION=;\"" : exit-status : no-output ] ;
+ assert "" 0 : (==) : [ SHELL "$(ARGV[1]) -f action_status.jam -sBJAM_SUBTEST=1 \"-sACTION=;\"" : exit-status : no-output ] ;
     }
- assert "" 0 : (!=) : [ SHELL "\"$(ARGV[1])\" -f action_status.jam -sBJAM_SUBTEST=1 -sACTION=invalid" : exit-status : no-output ] ;
+ assert "" 0 : (!=) : [ SHELL "$(ARGV[1]) -f action_status.jam -sBJAM_SUBTEST=1 -sACTION=invalid" : exit-status : no-output ] ;
 }
 else
 {
+ #~ actions .a. { $(ACTION) }
     actions quietly .a. { $(ACTION) }
-
+
     rule .a.
     {
         DEPENDS $(<) : $(>) ;
     }
-
+
     NOTFILE subtest ;
     .a. subtest_a : subtest ;
     DEPENDS all : subtest_a ;

Modified: branches/release/tools/jam/test/actions_quietly.jam
==============================================================================
--- branches/release/tools/jam/test/actions_quietly.jam (original)
+++ branches/release/tools/jam/test/actions_quietly.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -27,12 +27,12 @@
 [subtest_b] 1
 [subtest_b] 2
 ...updated 2 targets...
-" : (==) : [ SHELL "\"$(ARGV[1])\" -f actions_quietly.jam -sBJAM_SUBTEST=1 -d2" ] ;
+" : (==) : [ SHELL "$(ARGV[1]) -f actions_quietly.jam -sBJAM_SUBTEST=1 -d2" ] ;
 
     assert "...found 4 targets...
 ...updating 2 targets...
 ...updated 2 targets...
-" : (==) : [ SHELL "\"$(ARGV[1])\" -f actions_quietly.jam -sBJAM_SUBTEST=1" ] ;
+" : (==) : [ SHELL "$(ARGV[1]) -f actions_quietly.jam -sBJAM_SUBTEST=1" ] ;
 }
 else
 {

Deleted: branches/release/tools/jam/test/builtin_normalize_path.jam
==============================================================================
--- branches/release/tools/jam/test/builtin_normalize_path.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
+++ (empty file)
@@ -1,60 +0,0 @@
-#~ Copyright 2008 Jurko Gospodnetic.
-#~ Distributed under the Boost Software License, Version 1.0.
-#~ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
-
-ECHO --- Testing NORMALIZE_PATH builtin... ;
-
-assert "." : (==) : [ NORMALIZE_PATH ] ;
-assert "." : (==) : [ NORMALIZE_PATH "" ] ;
-assert "." : (==) : [ NORMALIZE_PATH "." ] ;
-assert ".." : (==) : [ NORMALIZE_PATH ".." ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "/" ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "\\" ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "//" ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "\\\\" ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "//\\\\//\\\\" ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "/." ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "/./" ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "\\\\///.///\\\\\\" ] ;
-assert "." : (==) : [ NORMALIZE_PATH "./././././." ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "/./././././." ] ;
-assert "foo" : (==) : [ NORMALIZE_PATH "foo" ] ;
-assert "foo" : (==) : [ NORMALIZE_PATH "foo/" ] ;
-assert "foo" : (==) : [ NORMALIZE_PATH "foo\\" ] ;
-assert "foo" : (==) : [ NORMALIZE_PATH "foo\\\\/////" ] ;
-assert "foo" : (==) : [ NORMALIZE_PATH "foo\\\\/////././." ] ;
-assert "foo" : (==) : [ NORMALIZE_PATH "foo\\\\/////./././" ] ;
-assert "." : (==) : [ NORMALIZE_PATH "foo/.." ] ;
-assert "." : (==) : [ NORMALIZE_PATH "foo////.." ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "///foo/\\\\/.." ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "\\\\\\foo\\//\\.." ] ;
-assert "." : (==) : [ NORMALIZE_PATH "foo/./.." ] ;
-assert "." : (==) : [ NORMALIZE_PATH "foo/././././.." ] ;
-assert "foo" : (==) : [ NORMALIZE_PATH "foo/./././bar/./././.././././baz/./././.." ] ;
-assert "/foo" : (==) : [ NORMALIZE_PATH "/foo/./././bar/./././.././././baz/./././.." ] ;
-assert "foo" : (==) : [ NORMALIZE_PATH "foo/./././bar/./././////.././././baz/./././.." ] ;
-assert "/foo" : (==) : [ NORMALIZE_PATH "/foo/./././bar/./././////.././././baz/./././.." ] ;
-assert ".." : (==) : [ NORMALIZE_PATH "./.." ] ;
-assert ".." : (==) : [ NORMALIZE_PATH "././././.." ] ;
-assert "../.." : (==) : [ NORMALIZE_PATH "../.." ] ;
-assert "../.." : (==) : [ NORMALIZE_PATH "./../.." ] ;
-assert "../.." : (==) : [ NORMALIZE_PATH "././././../.." ] ;
-assert "../.." : (==) : [ NORMALIZE_PATH "./.././././.." ] ;
-assert "../.." : (==) : [ NORMALIZE_PATH "././././.././././.." ] ;
-assert "../.." : (==) : [ NORMALIZE_PATH "..//\\\\\\//.." ] ;
-assert "../.." : (==) : [ NORMALIZE_PATH "../..\\\\/\\\\" ] ;
-assert "." : (==) : [ NORMALIZE_PATH "foo/../bar/../baz/.." ] ;
-assert "." : (==) : [ NORMALIZE_PATH "foo////..////bar////.//////.////../baz/.." ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "/foo/../bar/../baz/.." ] ;
-assert "/" : (==) : [ NORMALIZE_PATH "/foo////..////bar////.//////.////../baz/.." ] ;
-
-# Invalid rooted paths with leading dotdots.
-assert : (==) : [ NORMALIZE_PATH "/.." ] ;
-assert : (==) : [ NORMALIZE_PATH "/../" ] ;
-assert : (==) : [ NORMALIZE_PATH "//\\\\//\\\\/.." ] ;
-assert : (==) : [ NORMALIZE_PATH "\\\\//\\\\//\\.." ] ;
-assert : (==) : [ NORMALIZE_PATH "/../.." ] ;
-assert : (==) : [ NORMALIZE_PATH "/../../.." ] ;
-assert : (==) : [ NORMALIZE_PATH "/foo/bar/../baz/../../.." ] ;
-assert : (==) : [ NORMALIZE_PATH "/../for/././../././bar/././../././.." ] ;
-assert : (==) : [ NORMALIZE_PATH "/../foo/bar" ] ;

Modified: branches/release/tools/jam/test/builtin_shell.jam
==============================================================================
--- branches/release/tools/jam/test/builtin_shell.jam (original)
+++ branches/release/tools/jam/test/builtin_shell.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -2,30 +2,16 @@
 #~ Distributed under the Boost Software License, Version 1.0.
 #~ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 
-# TODO: Here we should test for the Windows popen() command unquoting bug but
-# that test will have to wait until a better testing framework is implemented.
-# To reproduce the bug try executing any command with its first parameter quoted
-# and containing spaces and having at least one other quote in the command
-# string.
-#
-# For example:
-#
-# "\Long folder name\aaa.exe" --name="Jurko" --no-surname
-#
-# would get its outermost quotes stripped and would be executed as:
-#
-# \Long folder name\aaa.exe" --name="Jurko --no-surname
-
 ECHO --- Testing SHELL builtin... ;
 
 local c = "date" ;
 if $(NT) { c = "PATH" ; }
 
-assert "" : (!=) : [ SHELL $(c) ] ;
-assert "" : (==) : [ SHELL $(c) : no-output ] ;
-assert "" 0 : (!=) : [ SHELL $(c) : exit-status ] ;
-assert "" 0 : (==) : [ SHELL $(c) : no-output : exit-status ] ;
-assert "" : (!=) : [ COMMAND $(c) ] ;
-assert "" : (==) : [ COMMAND $(c) : no-output ] ;
-assert "" 0 : (!=) : [ COMMAND $(c) : exit-status ] ;
-assert "" 0 : (==) : [ COMMAND $(c) : no-output : exit-status ] ;
+assert "" : (!=) : [ SHELL $(c) ] ;
+assert "" : (==) : [ SHELL $(c) : no-output ] ;
+assert "" 0 : (!=) : [ SHELL $(c) : exit-status ] ;
+assert "" 0 : (==) : [ SHELL $(c) : no-output : exit-status ] ;
+assert "" : (!=) : [ COMMAND $(c) ] ;
+assert "" : (==) : [ COMMAND $(c) : no-output ] ;
+assert "" 0 : (!=) : [ COMMAND $(c) : exit-status ] ;
+assert "" 0 : (==) : [ COMMAND $(c) : no-output : exit-status ] ;

Modified: branches/release/tools/jam/test/option_d2.jam
==============================================================================
--- branches/release/tools/jam/test/option_d2.jam (original)
+++ branches/release/tools/jam/test/option_d2.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -27,7 +27,7 @@
 [subtest_b] 1
 [subtest_b] 2
 ...updated 2 targets...
-" : (==) : [ SHELL "\"$(ARGV[1])\" -f option_d2.jam -sBJAM_SUBTEST=1 -d2" ] ;
+" : (==) : [ SHELL "$(ARGV[1]) -f option_d2.jam -sBJAM_SUBTEST=1 -d2" ] ;
 }
 else
 {

Modified: branches/release/tools/jam/test/option_l.jam
==============================================================================
--- branches/release/tools/jam/test/option_l.jam (original)
+++ branches/release/tools/jam/test/option_l.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -5,7 +5,6 @@
 if ! $(BJAM_SUBTEST)
 {
     ECHO --- Testing -l option... ;
-
     assert "...found 2 targets...
 ...updating 1 target...
 .a. sleeper
@@ -18,7 +17,7 @@
 
 ...failed .a. sleeper...
 ...failed updating 1 target...
-" : (==) : [ SHELL "\"$(ARGV[1])\" -f option_l.jam -sBJAM_SUBTEST=1 -l2" ] ;
+" : (==) : [ SHELL "$(ARGV[1]) -f option_l.jam -sBJAM_SUBTEST=1 -l2" ] ;
 }
 else
 {

Modified: branches/release/tools/jam/test/option_n.jam
==============================================================================
--- branches/release/tools/jam/test/option_n.jam (original)
+++ branches/release/tools/jam/test/option_n.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -21,7 +21,7 @@
 echo [subtest_b] 2
     
 ...updated 2 targets...
-" : (==) : [ SHELL "\"$(ARGV[1])\" -f option_n.jam -sBJAM_SUBTEST=1 -n" ] ;
+" : (==) : [ SHELL "$(ARGV[1]) -f option_n.jam -sBJAM_SUBTEST=1 -n" ] ;
 }
 else
 {

Modified: branches/release/tools/jam/test/parallel_actions.jam
==============================================================================
--- branches/release/tools/jam/test/parallel_actions.jam (original)
+++ branches/release/tools/jam/test/parallel_actions.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -41,7 +41,7 @@
 [.b] 1
 [.b] 2
 ...updated 8 targets...
-" : (==) : [ SHELL "\"$(ARGV[1])\" -f parallel_actions.jam -sBJAM_SUBTEST=1 -j4" ] ;
+" : (==) : [ SHELL "$(ARGV[1]) -f parallel_actions.jam -sBJAM_SUBTEST=1 -j4" ] ;
 }
 else
 {

Modified: branches/release/tools/jam/test/parallel_multifile_actions.jam
==============================================================================
--- branches/release/tools/jam/test/parallel_multifile_actions.jam (original)
+++ branches/release/tools/jam/test/parallel_multifile_actions.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -5,7 +5,6 @@
 if ! $(BJAM_SUBTEST)
 {
     ECHO --- Testing -jN parallel execution of multi-file actions... ;
-
     assert "...found 6 targets...
 ...updating 4 targets...
 .gen. g1.generated
@@ -16,7 +15,7 @@
 .use.2 u2.user
 004
 ...updated 4 targets...
-" : (==) : [ SHELL "\"$(ARGV[1])\" -f parallel_multifile_actions.jam -sBJAM_SUBTEST=1 -j2" ] ;
+" : (==) : [ SHELL "$(ARGV[1]) -f parallel_multifile_actions.jam -sBJAM_SUBTEST=1 -j2" ] ;
 }
 else
 {
@@ -42,4 +41,7 @@
     NOTFILE root ;
     DEPENDS g1.generated g2.generated : root ;
     DEPENDS all : u1.user u2.user ;
+ #~ Work around... Remove when fixed...
+ #~ DEPENDS g2.generated : g1.generated ;
+ #~ INCLUDES g2.generated : g1.generated ;
 }

Modified: branches/release/tools/jam/test/test.jam
==============================================================================
--- branches/release/tools/jam/test/test.jam (original)
+++ branches/release/tools/jam/test/test.jam 2008-07-29 07:43:31 EDT (Tue, 29 Jul 2008)
@@ -5,21 +5,16 @@
 fail-count = 0 ;
 pass-count = 0 ;
 
-
 rule message ( message * )
 {
     local b = [ BACKTRACE ] ;
     ECHO "$(b[-4]):$(b[-3]):" $(message) ;
 }
-
-
 rule fail ( message * )
 {
     fail-count = [ CALC $(fail-count) + 1 ] ;
     message "error:" [FAILED] $(message) ;
 }
-
-
 rule pass ( message * )
 {
     pass-count = [ CALC $(pass-count) + 1 ] ;
@@ -28,8 +23,6 @@
         message "info:" [PASSED] $(message) ;
     }
 }
-
-
 rule assert ( expected * : test ? : obtained * )
 {
     test ?= "(==)" ;
@@ -48,10 +41,8 @@
     }
 }
 
-
 include action_status.jam ;
 include actions_quietly.jam ;
-include builtin_normalize_path.jam ;
 include builtin_shell.jam ;
 include builtin_w32_getregnames.jam ;
 include option_d2.jam ;


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk