Boost logo

Boost-Build :

From: Ilya Sokolov (fal_delivery_at_[hidden])
Date: 2006-05-15 11:24:42


Vladimir Prus wrote:
>>fixed bug ``cant find a toolset' if command or common toolset options
>>was supplied in using directive'
>
> What is that bug? It's not apparent to me from looking at the patch.

if you try

using msvc : : : <cxxflags>something ;

then

    # Set new options if any
    if $(options)
    {
        $(.versions).set $(version) : options : $(options) ;
    }

will replace previosly setled <command>{path-vc} value of
'$(.versions).get $(version) : options' with <cxxflags>something.

should be:

    # Add user-supplied to auto-detected options
    options += [ $(.versions).get $(version) : options ] ;
    $(.versions).set $(version) : options : $(options) ;

>>fixed processing of common toolset options (<cflags>, <cxxflags>,
>><compileflags> and <linkflags>)
>
> What was the bug with them?
<cflags>, <cxxflags>, <compileflags> and <linkflags> are handled with
handle-options rule in common.jam:

rule handle-options ( toolset : condition * : command * : options * )
{
     # The last parameter ('true') says it's OK to set flags for another
     # module,
     toolset.flags $(toolset) CONFIG_COMMAND $(condition) : $(command) :
unchecked ;
     toolset.flags $(toolset).compile OPTIONS $(condition) :
       [ feature.get-values <compileflags> : $(options) ] : unchecked ;
     toolset.flags $(toolset).compile.c OPTIONS $(condition) :
       [ feature.get-values <cflags> : $(options) ] : unchecked ;
     toolset.flags $(toolset).compile.c++ OPTIONS $(condition) :
       [ feature.get-values <cxxflags> : $(options) ] : unchecked ;
     toolset.flags $(toolset).compile.fortran OPTIONS $(condition) :
       [ feature.get-values <fflags> : $(options) ] : unchecked ;
     toolset.flags $(toolset).link OPTIONS $(condition) :
       [ feature.get-values <linkflags> : $(options) ] : unchecked ;
}

>I see that your patch completely removes
>
> flags msvc.compiler USER_FLAGS <cflags> : ;
> line, and two other similar lines. What is the motivation for that?

my mistake. see fixed patch ;-) in attachment

cvs -q diff -c -- msvc.jam (in directory J:\w\boost\boost\tools\build\v2\tools\)
Index: msvc.jam
===================================================================
RCS file: /cvsroot/boost/boost/tools/build/v2/tools/msvc.jam,v
retrieving revision 1.76
diff -c -r1.76 msvc.jam
*** msvc.jam 7 Mar 2006 12:59:37 -0000 1.76
--- msvc.jam 13 May 2006 10:44:07 -0000
***************
*** 190,210 ****
      }
      else
      {
! # Register a new configuration
          $(.versions).register $(version) ;
  
! # Set new options if any
! if $(options)
! {
! $(.versions).set $(version) : options : $(options) ;
! }
  
          # Mark the configuration as 'used'.
          $(.versions).use $(version) ;
  
- # Get auto-detected or user-supplied options
- options = [ $(.versions).get $(version) : options ] ;
-
          # Generate condition and save it
          local condition = [ common.check-init-parameters msvc :
              version $(v) ] ;
--- 190,205 ----
      }
      else
      {
! # Register a new configuration
          $(.versions).register $(version) ;
  
! # Add user-supplied to auto-detected options
! options += [ $(.versions).get $(version) : options ] ;
! $(.versions).set $(version) : options : $(options) ;
  
          # Mark the configuration as 'used'.
          $(.versions).use $(version) ;
  
          # Generate condition and save it
          local condition = [ common.check-init-parameters msvc :
              version $(v) ] ;
***************
*** 220,226 ****
            : [ default-paths $(version) ] : $(version) ] ;
  
          common.handle-options msvc : $(condition) : $(command) : $(options) ;
!
  
          if ! $(version)
          {
--- 215,221 ----
            : [ default-paths $(version) ] : $(version) ] ;
  
          common.handle-options msvc : $(condition) : $(command) : $(options) ;
!
  
          if ! $(version)
          {
***************
*** 245,254 ****
              else
              {
                  version = 6.0 ;
! }
          }
  
!
          # Generate and register setup command
  
          local below-8.0 = [ MATCH ^([67]\\.) : $(version) ] ;
--- 240,249 ----
              else
              {
                  version = 6.0 ;
! }
          }
  
!
          # Generate and register setup command
  
          local below-8.0 = [ MATCH ^([67]\\.) : $(version) ] ;
***************
*** 433,439 ****
      # Use auto-detected path if possible
      local path = [ get-values <command> :
          [ $(.versions).get $(version) : options ] ] ;
!
      if $(path)
      {
          path = $(path:D) ;
--- 428,434 ----
      # Use auto-detected path if possible
      local path = [ get-values <command> :
          [ $(.versions).get $(version) : options ] ] ;
!
      if $(path)
      {
          path = $(path:D) ;
***************
*** 469,484 ****
  rule default-paths ( version ? )
  {
      local possible-paths ;
!
      if $(version)
      {
! default-path += [ default-path $(version) ] ;
      }
      else
      {
          for local i in $(.known-versions)
          {
! default-path += [ default-path $(i) ] ;
          }
      }
  
--- 464,479 ----
  rule default-paths ( version ? )
  {
      local possible-paths ;
!
      if $(version)
      {
! possible-paths += [ default-path $(version) ] ;
      }
      else
      {
          for local i in $(.known-versions)
          {
! possible-paths += [ default-path $(i) ] ;
          }
      }
  
***************
*** 552,560 ****
  flags msvc.compile CFLAGS <runtime-debugging>off/<runtime-link>static/<threading>multi : /MT ;
  flags msvc.compile CFLAGS <runtime-debugging>on/<runtime-link>static/<threading>multi : /MTd ;
  
- flags msvc.compile USER_CFLAGS <cflags> : ;
- flags msvc.compile.c++ USER_CFLAGS <cxxflags> : ;
-
  flags msvc.compile PDB_CFLAG <debug-symbols>on/<debug-store>database : /Fd ; # not used yet
  
  flags msvc.compile DEFINES <define> ;
--- 547,552 ----
***************
*** 586,602 ****
  # The actions differ only by explicit selection of input language
  actions compile.c bind PCH_HEADER PCH_FILE
  {
! $(.CC) /Zm800 -nologo -TC -U$(UNDEFS) $(CFLAGS) $(USER_CFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)")" -c -Fo"$(<[1]:W)" -Yu"$(PCH_HEADER:D=)" -Fp"$(PCH_FILE:W)"
  }
  
  actions compile.c++ bind PCH_HEADER PCH_FILE
  {
! $(.CC) /Zm800 -nologo -TP -U$(UNDEFS) $(CFLAGS) $(C++FLAGS) $(USER_CFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)")" -c -Fo"$(<[1]:W)" -Yu"$(PCH_HEADER:D=)" -Fp"$(PCH_FILE:W)"
  }
  
  actions compile.pch bind PCH_SOURCE
  {
! $(.CC) /Zm800 -nologo -TP -U$(UNDEFS) $(CFLAGS) $(C++FLAGS) $(USER_CFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(PCH_SOURCE:W)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)")" -c -Fo"$(<[1]:W)" /Yc"$(>[1]:D=)" -Fp"$(<[2]:W)"
  }
  
  
--- 578,594 ----
  # The actions differ only by explicit selection of input language
  actions compile.c bind PCH_HEADER PCH_FILE
  {
! $(.CC) /Zm800 -nologo -TC -U$(UNDEFS) $(CFLAGS) $(OPTIONS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)")" -c -Fo"$(<[1]:W)" -Yu"$(PCH_HEADER:D=)" -Fp"$(PCH_FILE:W)"
  }
  
  actions compile.c++ bind PCH_HEADER PCH_FILE
  {
! $(.CC) /Zm800 -nologo -TP -U$(UNDEFS) $(CFLAGS) $(C++FLAGS) $(OPTIONS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)")" -c -Fo"$(<[1]:W)" -Yu"$(PCH_HEADER:D=)" -Fp"$(PCH_FILE:W)"
  }
  
  actions compile.pch bind PCH_SOURCE
  {
! $(.CC) /Zm800 -nologo -TP -U$(UNDEFS) $(CFLAGS) $(C++FLAGS) $(OPTIONS) @"@($(<[1]:W).rsp:E=$(nl)"$(PCH_SOURCE:W)" $(nl)-D$(DEFINES) $(nl)"-I$(INCLUDES)")" -c -Fo"$(<[1]:W)" /Yc"$(>[1]:D=)" -Fp"$(<[2]:W)"
  }
  
  
***************
*** 646,652 ****
  flags msvc LINKFLAGS <user-interface>native : /subsystem:native ;
  flags msvc LINKFLAGS <user-interface>auto : /subsystem:posix ;
  
- flags msvc.link USER_LINKFLAGS <linkflags> ;
  flags msvc.link LINKPATH <library-path> ;
  
  
--- 638,643 ----
***************
*** 700,706 ****
  {
      actions link bind DEF_FILE
      {
! $(.LD) /NOLOGO $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /LIBPATH:"$(LINKPATH:W)" $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
          if exist "$(<[1]).manifest" (
              mt -nologo -manifest "$(<[1]).manifest" "-outputresource:$(<[1]);1"
          )
--- 691,697 ----
  {
      actions link bind DEF_FILE
      {
! $(.LD) /NOLOGO $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /LIBPATH:"$(LINKPATH:W)" $(OPTIONS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
          if exist "$(<[1]).manifest" (
              mt -nologo -manifest "$(<[1]).manifest" "-outputresource:$(<[1]);1"
          )
***************
*** 708,714 ****
  
      actions link.dll bind DEF_FILE
      {
! $(.LD) /NOLOGO /DLL $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /IMPLIB:"$(<[2]:W)" /LIBPATH:"$(LINKPATH:W)" /def:$(DEF_FILE) $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
          if exist "$(<[1]).manifest" (
              mt -nologo -manifest "$(<[1]).manifest" "-outputresource:$(<[1]);2"
          )
--- 699,705 ----
  
      actions link.dll bind DEF_FILE
      {
! $(.LD) /NOLOGO /DLL $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /IMPLIB:"$(<[2]:W)" /LIBPATH:"$(LINKPATH:W)" /def:$(DEF_FILE) $(OPTIONS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
          if exist "$(<[1]).manifest" (
              mt -nologo -manifest "$(<[1]).manifest" "-outputresource:$(<[1]);2"
          )
***************
*** 718,724 ****
  {
      actions link bind DEF_FILE
      {
! $(.LD) /NOLOGO $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /LIBPATH:"$(LINKPATH:W)" $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
          if test -e "$(<[1]).manifest"; then
              $(.MT) -nologo -manifest "$(<[1]:W).manifest" "-outputresource:$(<[1]:W);1"
          fi
--- 709,715 ----
  {
      actions link bind DEF_FILE
      {
! $(.LD) /NOLOGO $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /LIBPATH:"$(LINKPATH:W)" $(OPTIONS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
          if test -e "$(<[1]).manifest"; then
              $(.MT) -nologo -manifest "$(<[1]:W).manifest" "-outputresource:$(<[1]:W);1"
          fi
***************
*** 726,732 ****
  
      actions link.dll bind DEF_FILE
      {
! $(.LD) /NOLOGO /DLL $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /IMPLIB:"$(<[2]:W)" /LIBPATH:"$(LINKPATH:W)" /def:$(DEF_FILE) $(USER_LINKFLAGS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
          if test -e "$(<[1]).manifest"; then
              $(.MT) -nologo -manifest "$(<[1]:W).manifest" "-outputresource:$(<[1]:W);2"
          fi
--- 717,723 ----
  
      actions link.dll bind DEF_FILE
      {
! $(.LD) /NOLOGO /DLL $(LINKFLAGS) /out:"$(<[1]:W)" /INCREMENTAL:NO /IMPLIB:"$(<[2]:W)" /LIBPATH:"$(LINKPATH:W)" /def:$(DEF_FILE) $(OPTIONS) @"@($(<[1]:W).rsp:E=$(nl)"$(>)" $(nl)$(LIBRARIES_MENTIONED_BY_FILE) $(nl)$(LIBRARIES) $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_ST:S=.lib)" $(nl)"$(LIBRARY_OPTION)$(FINDLIBS_SA:S=.lib)")"
          if test -e "$(<[1]).manifest"; then
              $(.MT) -nologo -manifest "$(<[1]:W).manifest" "-outputresource:$(<[1]:W);2"
          fi
***************
*** 826,829 ****
          register-configuration $(i) : [ default-path $(i) ] ;
      }
  }
-
--- 817,819 ----

***** CVS exited normally with code 1 *****


Boost-Build 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