Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r61377 - trunk/tools/build/v2/tools
From: dgregor_at_[hidden]
Date: 2010-04-18 15:43:41


Author: dgregor
Date: 2010-04-18 15:43:40 EDT (Sun, 18 Apr 2010)
New Revision: 61377
URL: http://svn.boost.org/trac/boost/changeset/61377

Log:
Experimental Boost.Build configuration for Clang.

Added:
   trunk/tools/build/v2/tools/clang-darwin.jam
      - copied, changed from r61372, /trunk/tools/build/v2/tools/darwin.jam
   trunk/tools/build/v2/tools/clang-unix.jam
      - copied, changed from r61372, /trunk/tools/build/v2/tools/gcc.jam
   trunk/tools/build/v2/tools/clang.jam (contents, props changed)
Text files modified:
   trunk/tools/build/v2/tools/clang-darwin.jam | 120 ++++++-------
   trunk/tools/build/v2/tools/clang-unix.jam | 353 ++++++++++++++++-----------------------
   trunk/tools/build/v2/tools/common.jam | 2
   3 files changed, 201 insertions(+), 274 deletions(-)

Copied: trunk/tools/build/v2/tools/clang-darwin.jam (from r61372, /trunk/tools/build/v2/tools/darwin.jam)
==============================================================================
--- /trunk/tools/build/v2/tools/darwin.jam (original)
+++ trunk/tools/build/v2/tools/clang-darwin.jam 2010-04-18 15:43:40 EDT (Sun, 18 Apr 2010)
@@ -7,9 +7,6 @@
 # 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)
 
-# Please see http://article.gmane.org/gmane.comp.lib.boost.build/3389/
-# for explanation why it's a separate toolset.
-
 import feature : feature ;
 import toolset : flags ;
 import type ;
@@ -37,21 +34,27 @@
     .debug-configuration = true ;
 }
 
-feature.extend toolset : darwin ;
-import gcc ;
-toolset.inherit-generators darwin : gcc : gcc.mingw.link gcc.mingw.link.dll ;
+feature.extend toolset : clang-darwin ;
+import clang-unix ;
+feature.extend-subfeature toolset clang : platform : darwin ;
+
+toolset.inherit-generators clang-darwin
+ <toolset>clang <toolset-clang:platform>darwin
+ : clang-unix
+ : clang-unix.mingw.link clang-unix.mingw.link.dll
+ ;
 
-generators.override darwin.prebuilt : builtin.prebuilt ;
-generators.override darwin.searched-lib-generator : searched-lib-generator ;
+generators.override clang-darwin.prebuilt : builtin.prebuilt ;
+generators.override clang-darwin.searched-lib-generator : searched-lib-generator ;
 
 # Override default do-nothing generators.
-generators.override darwin.compile.c.pch : pch.default-c-pch-generator ;
-generators.override darwin.compile.c++.pch : pch.default-cpp-pch-generator ;
+generators.override clang-darwin.compile.c.pch : pch.default-c-pch-generator ;
+generators.override clang-darwin.compile.c++.pch : pch.default-cpp-pch-generator ;
 
-type.set-generated-target-suffix PCH : <toolset>darwin : gch ;
+type.set-generated-target-suffix PCH : <toolset>clang-darwin : gch ;
 
-toolset.inherit-rules darwin : gcc : localize ;
-toolset.inherit-flags darwin : gcc
+toolset.inherit-rules clang-darwin : clang-unix : localize ;
+toolset.inherit-flags clang-darwin : clang-unix
   : <runtime-link>static
      <architecture>arm/<address-model>32
      <architecture>arm/<address-model>64
@@ -90,7 +93,7 @@
     local bin ;
     
     # - The configured compile driver command.
- local command = [ common.get-invocation-command darwin : g++ : $(command) ] ;
+ local command = [ common.get-invocation-command clang-darwin : clang++ : $(command) ] ;
     
     # The version as reported by the compiler
     local real-version ;
@@ -126,24 +129,13 @@
     
     # - Define the condition for this toolset instance.
     local condition =
- [ common.check-init-parameters darwin $(requirement) : version $(version) ] ;
+ [ common.check-init-parameters clang-darwin $(requirement) : version $(version) ] ;
     
     # - Set the toolset generic common options.
- common.handle-options darwin : $(condition) : $(command) : $(options) ;
+ common.handle-options clang-darwin : $(condition) : $(command) : $(options) ;
     
- # - GCC 4.0 and higher in Darwin does not have -fcoalesce-templates.
- if $(real-version) < "4.0.0"
- {
- flags darwin.compile.c++ OPTIONS $(condition) : -fcoalesce-templates ;
- }
- # - GCC 4.2 and higher in Darwin does not have -Wno-long-double.
- if $(real-version) < "4.2.0"
- {
- flags darwin.compile OPTIONS $(condition) : -Wno-long-double ;
- }
-
- # - Set the link flags common with the GCC toolset.
- gcc.init-link-flags darwin darwin $(condition) ;
+ # - Set the link flags common with the clang-unix toolset.
+ clang-unix.init-link-flags clang-darwin darwin $(condition) ;
 
     # - The symbol strip program.
     local strip ;
@@ -151,13 +143,13 @@
     {
         # We can turn off strip by specifying it as empty. In which
         # case we switch to using the linker to do the strip.
- flags darwin.link.dll OPTIONS
+ flags clang-darwin.link.dll OPTIONS
             $(condition)/<main-target-type>LIB/<link>shared/<address-model>32/<strip>on : -Wl,-x ;
- flags darwin.link.dll OPTIONS
+ flags clang-darwin.link.dll OPTIONS
             $(condition)/<main-target-type>LIB/<link>shared/<address-model>/<strip>on : -Wl,-x ;
- flags darwin.link OPTIONS
+ flags clang-darwin.link OPTIONS
             $(condition)/<main-target-type>EXE/<address-model>32/<strip>on : -s ;
- flags darwin.link OPTIONS
+ flags clang-darwin.link OPTIONS
             $(condition)/<main-target-type>EXE/<address-model>/<strip>on : -s ;
     }
     else
@@ -165,11 +157,11 @@
         # Otherwise we need to find a strip program to use. And hence
         # also tell the link action that we need to use a strip
         # post-process.
- flags darwin.link NEED_STRIP $(condition)/<strip>on : "" ;
+ flags clang-darwin.link NEED_STRIP $(condition)/<strip>on : "" ;
         strip =
- [ common.get-invocation-command darwin
+ [ common.get-invocation-command clang-darwin
                 : strip : [ feature.get-values <striper> : $(options) ] : $(bin) : search-path ] ;
- flags darwin.link .STRIP $(condition) : $(strip[1]) ;
+ flags clang-darwin.link .STRIP $(condition) : $(strip[1]) ;
         if $(.debug-configuration)
         {
             ECHO notice: using strip for $(condition) at $(strip[1]) ;
@@ -179,9 +171,9 @@
     # - The archive builder (libtool is the default as creating
     # archives in darwin is complicated.
     local archiver =
- [ common.get-invocation-command darwin
+ [ common.get-invocation-command clang-darwin
             : libtool : [ feature.get-values <archiver> : $(options) ] : $(bin) : search-path ] ;
- flags darwin.archive .LIBTOOL $(condition) : $(archiver[1]) ;
+ flags clang-darwin.archive .LIBTOOL $(condition) : $(archiver[1]) ;
     if $(.debug-configuration)
     {
         ECHO notice: using archiver for $(condition) at $(archiver[1]) ;
@@ -243,9 +235,9 @@
         
         # Set the flags the version needs to compile with, first
         # generic options.
- flags darwin.compile OPTIONS $(condition)/<macosx-version>$(version-feature)
+ flags clang-darwin.compile OPTIONS $(condition)/<macosx-version>$(version-feature)
             : -isysroot $(sdk) ;
- flags darwin.link OPTIONS $(condition)/<macosx-version>$(version-feature)
+ flags clang-darwin.link OPTIONS $(condition)/<macosx-version>$(version-feature)
             : -isysroot $(sdk) ;
         
         # Then device variation options.
@@ -253,17 +245,17 @@
         {
             case iphone* :
             {
- flags darwin.compile OPTIONS <macosx-version-min>$(version-feature)
+ flags clang-darwin.compile OPTIONS <macosx-version-min>$(version-feature)
                     : -miphoneos-version-min=$(version[2-]:J=.) ;
- flags darwin.link OPTIONS <macosx-version-min>$(version-feature)
+ flags clang-darwin.link OPTIONS <macosx-version-min>$(version-feature)
                     : -miphoneos-version-min=$(version[2-]:J=.) ;
             }
             
             case mac* :
             {
- flags darwin.compile OPTIONS <macosx-version-min>$(version-feature)
+ flags clang-darwin.compile OPTIONS <macosx-version-min>$(version-feature)
                     : -miphoneos-version-min=$(version[2-]:J=.) ;
- flags darwin.link OPTIONS <macosx-version-min>$(version-feature)
+ flags clang-darwin.link OPTIONS <macosx-version-min>$(version-feature)
                     : -miphoneos-version-min=$(version[2-]:J=.) ;
             }
         }
@@ -330,13 +322,13 @@
 }
 
 # Generic options.
-flags darwin.compile OPTIONS <flags> ;
+flags clang-darwin.compile OPTIONS <flags> ;
 
-# The following adds objective-c support to darwin.
+# The following adds objective-c support to clang-darwin.
 # Thanks to http://thread.gmane.org/gmane.comp.lib.boost.build/13759
 
-generators.register-c-compiler darwin.compile.m : OBJECTIVE_C : OBJ : <toolset>darwin ;
-generators.register-c-compiler darwin.compile.mm : OBJECTIVE_CPP : OBJ : <toolset>darwin ;
+generators.register-c-compiler clang-darwin.compile.m : OBJECTIVE_C : OBJ : <toolset>clang-darwin ;
+generators.register-c-compiler clang-darwin.compile.mm : OBJECTIVE_CPP : OBJ : <toolset>clang-darwin ;
 
 rule setup-address-model ( targets * : sources * : properties * )
 {
@@ -344,8 +336,8 @@
     local arch = [ $(ps).get <architecture> ] ;
     local address-model = [ $(ps).get <address-model> ] ;
     local osx-version = [ $(ps).get <macosx-version> ] ;
- local gcc-version = [ $(ps).get <toolset-darwin:version> ] ;
- gcc-version = $(.real-version.$(gcc-version)) ;
+ local clang-unix-version = [ $(ps).get <toolset-clang-darwin:version> ] ;
+ clang-unix-version = $(.real-version.$(clang-unix-version)) ;
     local options ;
     
     local support-ppc64 = 1 ;
@@ -363,8 +355,8 @@
         if $(osx-version) && ! [ version.version-less [ regex.split $(osx-version) \\. ] : 10 6 ]
         {
             # When targeting 10.6:
- # - gcc 4.2 will give a compiler errir if ppc64 compilation is requested
- # - gcc 4.0 will compile fine, somehow, but then fail at link time
+ # - clang-unix 4.2 will give a compiler errir if ppc64 compilation is requested
+ # - clang-unix 4.0 will compile fine, somehow, but then fail at link time
             support-ppc64 = ;
         }
     }
@@ -432,18 +424,18 @@
 
 rule setup-threading ( targets * : sources * : properties * )
 {
- gcc.setup-threading $(targets) : $(sources) : $(properties) ;
+ clang-unix.setup-threading $(targets) : $(sources) : $(properties) ;
 }
 
 rule setup-fpic ( targets * : sources * : properties * )
 {
- gcc.setup-fpic $(targets) : $(sources) : $(properties) ;
+ clang-unix.setup-fpic $(targets) : $(sources) : $(properties) ;
 }
 
 rule compile.m ( targets * : sources * : properties * )
 {
     LANG on $(<) = "-x objective-c" ;
- gcc.setup-fpic $(targets) : $(sources) : $(properties) ;
+ clang-unix.setup-fpic $(targets) : $(sources) : $(properties) ;
     setup-address-model $(targets) : $(sources) : $(properties) ;
 }
 
@@ -455,7 +447,7 @@
 rule compile.mm ( targets * : sources * : properties * )
 {
     LANG on $(<) = "-x objective-c++" ;
- gcc.setup-fpic $(targets) : $(sources) : $(properties) ;
+ clang-unix.setup-fpic $(targets) : $(sources) : $(properties) ;
     setup-address-model $(targets) : $(sources) : $(properties) ;
 }
 
@@ -465,28 +457,28 @@
 }
 
 # Set the max header padding to allow renaming of libs for installation.
-flags darwin.link.dll OPTIONS : -headerpad_max_install_names ;
+flags clang-darwin.link.dll OPTIONS : -headerpad_max_install_names ;
 
 # To link the static runtime we need to link to all the core runtime libraries.
-flags darwin.link OPTIONS <runtime-link>static
+flags clang-darwin.link OPTIONS <runtime-link>static
     : -nodefaultlibs -shared-libgcc -lstdc++-static -lgcc_eh -lgcc -lSystem ;
 
 # Strip as much as possible when optimizing.
-flags darwin.link OPTIONS <optimization>speed : -Wl,-dead_strip -no_dead_strip_inits_and_terms ;
-flags darwin.link OPTIONS <optimization>space : -Wl,-dead_strip -no_dead_strip_inits_and_terms ;
+flags clang-darwin.link OPTIONS <optimization>speed : -Wl,-dead_strip -no_dead_strip_inits_and_terms ;
+flags clang-darwin.link OPTIONS <optimization>space : -Wl,-dead_strip -no_dead_strip_inits_and_terms ;
 
 # Dynamic/shared linking.
-flags darwin.compile OPTIONS <link>shared : -dynamic ;
+flags clang-darwin.compile OPTIONS <link>shared : -dynamic ;
 
 # Misc options.
-flags darwin.compile OPTIONS : -no-cpp-precomp -gdwarf-2 ;
+flags clang-darwin.compile OPTIONS : -gdwarf-2 ;
 
 # Add the framework names to use.
-flags darwin.link FRAMEWORK <framework> ;
+flags clang-darwin.link FRAMEWORK <framework> ;
 
 # This is flag is useful for debugging the link step
 # uncomment to see what libtool is doing under the hood
-#~ flags darwin.link.dll OPTIONS : -Wl,-v ;
+#~ flags clang-darwin.link.dll OPTIONS : -Wl,-v ;
 
 _ = " " ;
 

Copied: trunk/tools/build/v2/tools/clang-unix.jam (from r61372, /trunk/tools/build/v2/tools/gcc.jam)
==============================================================================
--- /trunk/tools/build/v2/tools/gcc.jam (original)
+++ trunk/tools/build/v2/tools/clang-unix.jam 2010-04-18 15:43:40 EDT (Sun, 18 Apr 2010)
@@ -25,7 +25,6 @@
 import regex ;
 import set ;
 import unix ;
-import fortran ;
 
 
 if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ]
@@ -34,35 +33,35 @@
 }
 
 
-feature.extend toolset : gcc ;
-# feature.subfeature toolset gcc : flavor : : optional ;
+feature.extend toolset : clang-unix ;
+# feature.subfeature toolset clang : flavor : : optional ;
 
-toolset.inherit-generators gcc : unix : unix.link unix.link.dll ;
-toolset.inherit-flags gcc : unix ;
-toolset.inherit-rules gcc : unix ;
-
-generators.override gcc.prebuilt : builtin.prebuilt ;
-generators.override gcc.searched-lib-generator : searched-lib-generator ;
-
-# Make gcc toolset object files use the "o" suffix on all platforms.
-type.set-generated-target-suffix OBJ : <toolset>gcc : o ;
-type.set-generated-target-suffix OBJ : <toolset>gcc <target-os>windows : o ;
-type.set-generated-target-suffix OBJ : <toolset>gcc <target-os>cygwin : o ;
+toolset.inherit-generators clang-unix : unix : unix.link unix.link.dll ;
+toolset.inherit-flags clang-unix : unix ;
+toolset.inherit-rules clang-unix : unix ;
+
+generators.override clang-unix.prebuilt : builtin.prebuilt ;
+generators.override clang-unix.searched-lib-generator : searched-lib-generator ;
+
+# Make clang-unix toolset object files use the "o" suffix on all platforms.
+type.set-generated-target-suffix OBJ : <toolset>clang-unix : o ;
+type.set-generated-target-suffix OBJ : <toolset>clang-unix <target-os>windows : o ;
+type.set-generated-target-suffix OBJ : <toolset>clang-unix <target-os>cygwin : o ;
 
-# Initializes the gcc toolset for the given version. If necessary, command may
+# Initializes the clang-unix toolset for the given version. If necessary, command may
 # be used to specify where the compiler is located. The parameter 'options' is a
 # space-delimited list of options, each one specified as
 # <option-name>option-value. Valid option names are: cxxflags, linkflags and
 # linker-type. Accepted linker-type values are aix, darwin, gnu, hpux, osf or
 # sun and the default value will be selected based on the current OS.
 # Example:
-# using gcc : 3.4 : : <cxxflags>foo <linkflags>bar <linker-type>sun ;
+# using clang-unix : 1.5 : : <cxxflags>foo <linkflags>bar <linker-type>sun ;
 #
 rule init ( version ? : command * : options * )
 {
- # Information about the gcc command...
+ # Information about the clang command...
     # The command.
- local command = [ common.get-invocation-command gcc : g++ : $(command) ] ;
+ local command = [ common.get-invocation-command clang-unix : clang++ : $(command) ] ;
     # The root directory of the tool install.
     local root = [ feature.get-values <root> : $(options) ] ;
     # The bin directory where to find the command to execute.
@@ -94,20 +93,20 @@
     local condition ;
     if $(flavor)
     {
- condition = [ common.check-init-parameters gcc
+ condition = [ common.check-init-parameters clang-unix
             : version $(version)
             : flavor $(flavor)
             ] ;
     }
     else
     {
- condition = [ common.check-init-parameters gcc
+ condition = [ common.check-init-parameters clang-unix
             : version $(version)
             ] ;
- condition = $(condition) ; #/<toolset-gcc:flavor> ;
+ condition = $(condition) ; #/<toolset-clang-unix:flavor> ;
     }
 
- common.handle-options gcc : $(condition) : $(command) : $(options) ;
+ common.handle-options clang-unix : $(condition) : $(command) : $(options) ;
 
     local linker = [ feature.get-values <linker-type> : $(options) ] ;
     # The logic below should actually be keyed on <target-os>
@@ -134,10 +133,10 @@
             linker = gnu ;
         }
     }
- init-link-flags gcc $(linker) $(condition) ;
+ init-link-flags clang-unix $(linker) $(condition) ;
 
 
- # If gcc is installed in non-standard location, we'd need to add
+ # If clang is installed in non-standard location, we'd need to add
     # LD_LIBRARY_PATH when running programs created with it (for unit-test/run
     # rules).
     if $(command)
@@ -149,12 +148,12 @@
         local lib_path = $(root)/bin $(root)/lib $(root)/lib32 $(root)/lib64 ;
         if $(.debug-configuration)
         {
- ECHO notice: using gcc libraries :: $(condition) :: $(lib_path) ;
+ ECHO notice: using clang libraries :: $(condition) :: $(lib_path) ;
         }
- toolset.flags gcc.link RUN_PATH $(condition) : $(lib_path) ;
+ toolset.flags clang-unix.link RUN_PATH $(condition) : $(lib_path) ;
     }
 
- # If it's not a system gcc install we should adjust the various programs as
+ # If it's not a system clang install we should adjust the various programs as
     # needed to prefer using the install specific versions. This is essential
     # for correct use of MinGW and for cross-compiling.
     
@@ -162,33 +161,33 @@
 " ;
 
     # - The archive builder.
- local archiver = [ common.get-invocation-command gcc
+ local archiver = [ common.get-invocation-command clang-unix
             : [ NORMALIZE_PATH [ MATCH "(.*)[$(nl)]+" : [ SHELL "$(command-string) -print-prog-name=ar" ] ] ]
             : [ feature.get-values <archiver> : $(options) ]
             : $(bin)
             : search-path ] ;
- toolset.flags gcc.archive .AR $(condition) : $(archiver[1]) ;
+ toolset.flags clang-unix.archive .AR $(condition) : $(archiver[1]) ;
     if $(.debug-configuration)
     {
- ECHO notice: using gcc archiver :: $(condition) :: $(archiver[1]) ;
+ ECHO notice: using clang-unix archiver :: $(condition) :: $(archiver[1]) ;
     }
 
     # - Ranlib
- local ranlib = [ common.get-invocation-command gcc
+ local ranlib = [ common.get-invocation-command clang-unix
             : [ NORMALIZE_PATH [ MATCH "(.*)[$(nl)]+" : [ SHELL "$(command-string) -print-prog-name=ranlib" ] ] ]
             : [ feature.get-values <ranlib> : $(options) ]
             : $(bin)
             : search-path ] ;
- toolset.flags gcc.archive .RANLIB $(condition) : $(ranlib[1]) ;
+ toolset.flags clang-unix.archive .RANLIB $(condition) : $(ranlib[1]) ;
     if $(.debug-configuration)
     {
- ECHO notice: using gcc ranlib :: $(condition) :: $(ranlib[1]) ;
+ ECHO notice: using clang-unix ranlib :: $(condition) :: $(ranlib[1]) ;
     }
 
 
     # - The resource compiler.
     local rc =
- [ common.get-invocation-command-nodefault gcc
+ [ common.get-invocation-command-nodefault clang-unix
             : windres : [ feature.get-values <rc> : $(options) ] : $(bin) : search-path ] ;
     local rc-type =
         [ feature.get-values <rc-type> : $(options) ] ;
@@ -199,7 +198,7 @@
         # creates empty object files. This allows the same Jamfiles to work
         # across the board. The null RC uses the assembler to create the empty
         # objects, so configure that.
- rc = [ common.get-invocation-command gcc : as : : $(bin) : search-path ] ;
+ rc = [ common.get-invocation-command clang-unix : as : : $(bin) : search-path ] ;
         rc-type = null ;
     }
     rc.configure $(rc) : $(condition) : <rc-type>$(rc-type) ;
@@ -212,23 +211,22 @@
     JAMSHELL = % ;
 }
 
-generators.register-c-compiler gcc.compile.c++ : CPP : OBJ : <toolset>gcc ;
-generators.register-c-compiler gcc.compile.c : C : OBJ : <toolset>gcc ;
-generators.register-c-compiler gcc.compile.asm : ASM : OBJ : <toolset>gcc ;
-generators.register-fortran-compiler gcc.compile.fortran : FORTRAN FORTRAN90 : OBJ : <toolset>gcc ;
+generators.register-c-compiler clang-unix.compile.c++ : CPP : OBJ : <toolset>clang-unix ;
+generators.register-c-compiler clang-unix.compile.c : C : OBJ : <toolset>clang-unix ;
+generators.register-c-compiler clang-unix.compile.asm : ASM : OBJ : <toolset>clang-unix ;
 
 # pch support
 
 # The compiler looks for a precompiled header in each directory just before it
 # looks for the include file in that directory. The name searched for is the
 # name specified in the #include directive with ".gch" suffix appended. The
-# logic in gcc-pch-generator will make sure that BASE_PCH suffix is appended to
+# logic in clang-unix-pch-generator will make sure that BASE_PCH suffix is appended to
 # full name of the header.
 
-type.set-generated-target-suffix PCH : <toolset>gcc : gch ;
+type.set-generated-target-suffix PCH : <toolset>clang-unix : gch ;
 
-# GCC-specific pch generator.
-class gcc-pch-generator : pch-generator
+# clang-specific pch generator.
+class clang-unix-pch-generator : pch-generator
 {
     import project ;
     import property-set ;
@@ -280,32 +278,32 @@
 # Note: the 'H' source type will catch both '.h' header and '.hpp' header. The
 # latter have HPP type, but HPP type is derived from H. The type of compilation
 # is determined entirely by the destination type.
-generators.register [ new gcc-pch-generator gcc.compile.c.pch : H : C_PCH : <pch>on <toolset>gcc ] ;
-generators.register [ new gcc-pch-generator gcc.compile.c++.pch : H : CPP_PCH : <pch>on <toolset>gcc ] ;
+generators.register [ new clang-unix-pch-generator clang-unix.compile.c.pch : H : C_PCH : <pch>on <toolset>clang-unix ] ;
+generators.register [ new clang-unix-pch-generator clang-unix.compile.c++.pch : H : CPP_PCH : <pch>on <toolset>clang-unix ] ;
 
 # Override default do-nothing generators.
-generators.override gcc.compile.c.pch : pch.default-c-pch-generator ;
-generators.override gcc.compile.c++.pch : pch.default-cpp-pch-generator ;
+generators.override clang-unix.compile.c.pch : pch.default-c-pch-generator ;
+generators.override clang-unix.compile.c++.pch : pch.default-cpp-pch-generator ;
 
-toolset.flags gcc.compile PCH_FILE <pch>on : <pch-file> ;
+toolset.flags clang-unix.compile PCH_FILE <pch>on : <pch-file> ;
 
 # Declare flags and action for compilation.
-toolset.flags gcc.compile OPTIONS <optimization>off : -O0 ;
-toolset.flags gcc.compile OPTIONS <optimization>speed : -O3 ;
-toolset.flags gcc.compile OPTIONS <optimization>space : -Os ;
-
-toolset.flags gcc.compile OPTIONS <inlining>off : -fno-inline ;
-toolset.flags gcc.compile OPTIONS <inlining>on : -Wno-inline ;
-toolset.flags gcc.compile OPTIONS <inlining>full : -finline-functions -Wno-inline ;
-
-toolset.flags gcc.compile OPTIONS <warnings>off : -w ;
-toolset.flags gcc.compile OPTIONS <warnings>on : -Wall ;
-toolset.flags gcc.compile OPTIONS <warnings>all : -Wall -pedantic ;
-toolset.flags gcc.compile OPTIONS <warnings-as-errors>on : -Werror ;
-
-toolset.flags gcc.compile OPTIONS <debug-symbols>on : -g ;
-toolset.flags gcc.compile OPTIONS <profiling>on : -pg ;
-toolset.flags gcc.compile OPTIONS <rtti>off : -fno-rtti ;
+toolset.flags clang-unix.compile OPTIONS <optimization>off : -O0 ;
+toolset.flags clang-unix.compile OPTIONS <optimization>speed : -O3 ;
+toolset.flags clang-unix.compile OPTIONS <optimization>space : -Os ;
+
+toolset.flags clang-unix.compile OPTIONS <inlining>off : -fno-inline ;
+toolset.flags clang-unix.compile OPTIONS <inlining>on : -Wno-inline ;
+toolset.flags clang-unix.compile OPTIONS <inlining>full : -finline-functions -Wno-inline ;
+
+toolset.flags clang-unix.compile OPTIONS <warnings>off : -w ;
+toolset.flags clang-unix.compile OPTIONS <warnings>on : -Wall ;
+toolset.flags clang-unix.compile OPTIONS <warnings>all : -Wall -pedantic ;
+toolset.flags clang-unix.compile OPTIONS <warnings-as-errors>on : -Werror ;
+
+toolset.flags clang-unix.compile OPTIONS <debug-symbols>on : -g ;
+toolset.flags clang-unix.compile OPTIONS <profiling>on : -pg ;
+toolset.flags clang-unix.compile OPTIONS <rtti>off : -fno-rtti ;
 
 rule setup-fpic ( targets * : sources * : properties * )
 {
@@ -393,12 +391,11 @@
     SONAME_OPTION = +h ;
 }
 
-toolset.flags gcc.compile USER_OPTIONS <cflags> ;
-toolset.flags gcc.compile.c++ USER_OPTIONS <cxxflags> ;
-toolset.flags gcc.compile DEFINES <define> ;
-toolset.flags gcc.compile INCLUDES <include> ;
-toolset.flags gcc.compile.c++ TEMPLATE_DEPTH <c++-template-depth> ;
-toolset.flags gcc.compile.fortran USER_OPTIONS <fflags> ;
+toolset.flags clang-unix.compile USER_OPTIONS <cflags> ;
+toolset.flags clang-unix.compile.c++ USER_OPTIONS <cxxflags> ;
+toolset.flags clang-unix.compile DEFINES <define> ;
+toolset.flags clang-unix.compile INCLUDES <include> ;
+toolset.flags clang-unix.compile.c++ TEMPLATE_DEPTH <c++-template-depth> ;
 
 rule compile.c++.pch ( targets * : sources * : properties * )
 {
@@ -460,7 +457,7 @@
     setup-fpic $(targets) : $(sources) : $(properties) ;
     setup-address-model $(targets) : $(sources) : $(properties) ;
     
- # If we use the name g++ then default file suffix -> language mapping does
+ # If we use the name clang++ then default file suffix -> language mapping does
     # not work. So have to pass -x option. Maybe, we can work around this by
     # allowing the user to specify both C and C++ compiler names.
     #if $(>:S) != .c
@@ -470,13 +467,6 @@
     DEPENDS $(<) : [ on $(<) return $(PCH_FILE) ] ;
 }
 
-rule compile.fortran ( targets * : sources * : properties * )
-{
- setup-threading $(targets) : $(sources) : $(properties) ;
- setup-fpic $(targets) : $(sources) : $(properties) ;
- setup-address-model $(targets) : $(sources) : $(properties) ;
-}
-
 actions compile.c++ bind PCH_FILE
 {
     "$(CONFIG_COMMAND)" $(LANG) -ftemplate-depth-$(TEMPLATE_DEPTH) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<:W)" "$(>:W)"
@@ -487,11 +477,6 @@
     "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
 }
 
-actions compile.fortran
-{
- "$(CONFIG_COMMAND)" $(LANG) $(OPTIONS) $(USER_OPTIONS) -D$(DEFINES) -I"$(PCH_FILE:D)" -I"$(INCLUDES)" -c -o "$(<)" "$(>)"
-}
-
 rule compile.asm
 {
     LANG on $(<) = "-x assembler-with-cpp" ;
@@ -504,8 +489,8 @@
 
 # The class which check that we don't try to use the <runtime-link>static
 # property while creating or using shared library, since it's not supported by
-# gcc/libc.
-class gcc-linking-generator : unix-linking-generator
+# clang/libc.
+class clang-unix-linking-generator : unix-linking-generator
 {
     rule run ( project name ? : property-set : sources + )
     {
@@ -526,7 +511,7 @@
             if <link>shared in $(properties)
             {
                 reason =
- "On gcc, DLL can't be build with '<runtime-link>static'." ;
+ "On clang, DLL can't be build with '<runtime-link>static'." ;
             }
             else if [ type.is-derived $(self.target-types[1]) EXE ]
             {
@@ -536,7 +521,7 @@
                     if $(type) && [ type.is-derived $(type) SHARED_LIB ]
                     {
                         reason =
- "On gcc, using DLLS together with the"
+ "On clang, using DLLS together with the"
                             "<runtime-link>static options is not possible " ;
                     }
                 }
@@ -565,68 +550,68 @@
 # selected when target-os=windows.
 
 local g ;
-g = [ new gcc-linking-generator gcc.mingw.link
+g = [ new clang-unix-linking-generator clang-unix.mingw.link
       : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB
       : EXE
- : <toolset>gcc <target-os>windows ] ;
-$(g).set-rule-name gcc.link ;
+ : <toolset>clang-unix <target-os>windows ] ;
+$(g).set-rule-name clang-unix.link ;
 generators.register $(g) ;
 
-g = [ new gcc-linking-generator gcc.mingw.link.dll
+g = [ new clang-unix-linking-generator clang-unix.mingw.link.dll
       : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB
       : IMPORT_LIB SHARED_LIB
- : <toolset>gcc <target-os>windows ] ;
-$(g).set-rule-name gcc.link.dll ;
+ : <toolset>clang-unix <target-os>windows ] ;
+$(g).set-rule-name clang-unix.link.dll ;
 generators.register $(g) ;
 
 generators.register
- [ new gcc-linking-generator gcc.link
+ [ new clang-unix-linking-generator clang-unix.link
       : LIB OBJ
       : EXE
- : <toolset>gcc ] ;
+ : <toolset>clang-unix ] ;
 generators.register
- [ new gcc-linking-generator gcc.link.dll
+ [ new clang-unix-linking-generator clang-unix.link.dll
       : LIB OBJ
       : SHARED_LIB
- : <toolset>gcc ] ;
+ : <toolset>clang-unix ] ;
 
-generators.override gcc.mingw.link : gcc.link ;
-generators.override gcc.mingw.link.dll : gcc.link.dll ;
+generators.override clang-unix.mingw.link : clang-unix.link ;
+generators.override clang-unix.mingw.link.dll : clang-unix.link.dll ;
 
 # Cygwin is similar to msvc and mingw in that it uses import libraries.
 # While in simple cases, it can directly link to a shared library,
 # it is believed to be slower, and not always possible. Define cygwin-specific
 # generators here.
 
-g = [ new gcc-linking-generator gcc.cygwin.link
+g = [ new clang-unix-linking-generator clang-unix.cygwin.link
       : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB
       : EXE
- : <toolset>gcc <target-os>cygwin ] ;
-$(g).set-rule-name gcc.link ;
+ : <toolset>clang-unix <target-os>cygwin ] ;
+$(g).set-rule-name clang-unix.link ;
 generators.register $(g) ;
 
-g = [ new gcc-linking-generator gcc.cygwin.link.dll
+g = [ new clang-unix-linking-generator clang-unix.cygwin.link.dll
       : OBJ SEARCHED_LIB STATIC_LIB IMPORT_LIB
       : IMPORT_LIB SHARED_LIB
- : <toolset>gcc <target-os>cygwin ] ;
-$(g).set-rule-name gcc.link.dll ;
+ : <toolset>clang-unix <target-os>cygwin ] ;
+$(g).set-rule-name clang-unix.link.dll ;
 generators.register $(g) ;
 
-generators.override gcc.cygwin.link : gcc.link ;
-generators.override gcc.cygwin.link.dll : gcc.link.dll ;
+generators.override clang-unix.cygwin.link : clang-unix.link ;
+generators.override clang-unix.cygwin.link.dll : clang-unix.link.dll ;
 
 # Declare flags for linking.
 # First, the common flags.
-toolset.flags gcc.link OPTIONS <debug-symbols>on : -g ;
-toolset.flags gcc.link OPTIONS <profiling>on : -pg ;
-toolset.flags gcc.link USER_OPTIONS <linkflags> ;
-toolset.flags gcc.link LINKPATH <library-path> ;
-toolset.flags gcc.link FINDLIBS-ST <find-static-library> ;
-toolset.flags gcc.link FINDLIBS-SA <find-shared-library> ;
-toolset.flags gcc.link LIBRARIES <library-file> ;
+toolset.flags clang-unix.link OPTIONS <debug-symbols>on : -g ;
+toolset.flags clang-unix.link OPTIONS <profiling>on : -pg ;
+toolset.flags clang-unix.link USER_OPTIONS <linkflags> ;
+toolset.flags clang-unix.link LINKPATH <library-path> ;
+toolset.flags clang-unix.link FINDLIBS-ST <find-static-library> ;
+toolset.flags clang-unix.link FINDLIBS-SA <find-shared-library> ;
+toolset.flags clang-unix.link LIBRARIES <library-file> ;
 
-toolset.flags gcc.link.dll .IMPLIB-COMMAND <target-os>windows : "-Wl,--out-implib," ;
-toolset.flags gcc.link.dll .IMPLIB-COMMAND <target-os>cygwin : "-Wl,--out-implib," ;
+toolset.flags clang-unix.link.dll .IMPLIB-COMMAND <target-os>windows : "-Wl,--out-implib," ;
+toolset.flags clang-unix.link.dll .IMPLIB-COMMAND <target-os>cygwin : "-Wl,--out-implib," ;
 
 # For <runtime-link>static we made sure there are no dynamic libraries in the
 # link. On HP-UX not all system libraries exist as archived libraries (for
@@ -634,7 +619,7 @@
 # cannot be specified.
 if [ os.name ] != HPUX
 {
- toolset.flags gcc.link OPTIONS <runtime-link>static : -static ;
+ toolset.flags clang-unix.link OPTIONS <runtime-link>static : -static ;
 }
 
 # Now, the vendor specific flags.
@@ -685,7 +670,7 @@
         {
         # Strip the binary when no debugging is needed. We use --strip-all flag
         # as opposed to -s since icc (intel's compiler) is generally
- # option-compatible with and inherits from the gcc toolset, but does not
+ # option-compatible with and inherits from the clang toolset, but does not
         # support -s.
         toolset.flags $(toolset).link OPTIONS $(condition)/<strip>on : -Wl,--strip-all : unchecked ;
         toolset.flags $(toolset).link RPATH $(condition) : <dll-path> : unchecked ;
@@ -815,9 +800,9 @@
     setup-address-model $(targets) : $(sources) : $(properties) ;
     SPACE on $(targets) = " " ;
     # Serialize execution of the 'link' action, since running N links in
- # parallel is just slower. For now, serialize only gcc links, it might be a
+ # parallel is just slower. For now, serialize only clang links, it might be a
     # good idea to serialize all links.
- JAM_SEMAPHORE on $(targets) = <s>gcc-link-semaphore ;
+ JAM_SEMAPHORE on $(targets) = <s>clang-unix-link-semaphore ;
     quote-rpath $(targets) ;
 }
 
@@ -827,14 +812,14 @@
 
 }
 
-# Default value. Mostly for the sake of intel-linux that inherits from gcc, but
+# Default value. Mostly for the sake of intel-linux that inherits from clang, but
 # does not have the same logic to set the .AR variable. We can put the same
 # logic in intel-linux, but that's hardly worth the trouble as on Linux, 'ar' is
 # always available.
 .AR = ar ;
 .RANLIB = ranlib ;
 
-toolset.flags gcc.archive AROPTIONS <archiveflags> ;
+toolset.flags clang-unix.archive AROPTIONS <archiveflags> ;
 
 rule archive ( targets * : sources * : properties * )
 {
@@ -881,7 +866,7 @@
     setup-threading $(targets) : $(sources) : $(properties) ;
     setup-address-model $(targets) : $(sources) : $(properties) ;
     SPACE on $(targets) = " " ;
- JAM_SEMAPHORE on $(targets) = <s>gcc-link-semaphore ;
+ JAM_SEMAPHORE on $(targets) = <s>clang-unix-link-semaphore ;
     quote-rpath $(targets) ;
 }
 
@@ -926,7 +911,7 @@
             }
             case sgi :
             {
- # gcc on IRIX does not support multi-threading so do not set anything
+ # clang on IRIX does not support multi-threading so do not set anything
                 # here.
             }
             case darwin :
@@ -968,90 +953,38 @@
 # Set architecture/instruction-set options.
 #
 # x86 and compatible
-# The 'native' option appeared in gcc 4.2 so we cannot safely use it
-# as default. Use conservative i386 instead.
-cpu-flags gcc OPTIONS : x86 : native : -march=native ;
-cpu-flags gcc OPTIONS : x86 : i386 : -march=i386 : default ;
-cpu-flags gcc OPTIONS : x86 : i486 : -march=i486 ;
-cpu-flags gcc OPTIONS : x86 : i586 : -march=i586 ;
-cpu-flags gcc OPTIONS : x86 : i686 : -march=i686 ;
-cpu-flags gcc OPTIONS : x86 : pentium : -march=pentium ;
-cpu-flags gcc OPTIONS : x86 : pentium-mmx : -march=pentium-mmx ;
-cpu-flags gcc OPTIONS : x86 : pentiumpro : -march=pentiumpro ;
-cpu-flags gcc OPTIONS : x86 : pentium2 : -march=pentium2 ;
-cpu-flags gcc OPTIONS : x86 : pentium3 : -march=pentium3 ;
-cpu-flags gcc OPTIONS : x86 : pentium3m : -march=pentium3m ;
-cpu-flags gcc OPTIONS : x86 : pentium-m : -march=pentium-m ;
-cpu-flags gcc OPTIONS : x86 : pentium4 : -march=pentium4 ;
-cpu-flags gcc OPTIONS : x86 : pentium4m : -march=pentium4m ;
-cpu-flags gcc OPTIONS : x86 : prescott : -march=prescott ;
-cpu-flags gcc OPTIONS : x86 : nocona : -march=nocona ;
-cpu-flags gcc OPTIONS : x86 : core2 : -march=core2 ;
-cpu-flags gcc OPTIONS : x86 : k6 : -march=k6 ;
-cpu-flags gcc OPTIONS : x86 : k6-2 : -march=k6-2 ;
-cpu-flags gcc OPTIONS : x86 : k6-3 : -march=k6-3 ;
-cpu-flags gcc OPTIONS : x86 : athlon : -march=athlon ;
-cpu-flags gcc OPTIONS : x86 : athlon-tbird : -march=athlon-tbird ;
-cpu-flags gcc OPTIONS : x86 : athlon-4 : -march=athlon-4 ;
-cpu-flags gcc OPTIONS : x86 : athlon-xp : -march=athlon-xp ;
-cpu-flags gcc OPTIONS : x86 : athlon-mp : -march=athlon-mp ;
+cpu-flags clang-unix OPTIONS : x86 : native : -march=native : default ;
+cpu-flags clang-unix OPTIONS : x86 : i386 : -march=i386 ;
+cpu-flags clang-unix OPTIONS : x86 : i486 : -march=i486 ;
+cpu-flags clang-unix OPTIONS : x86 : i586 : -march=i586 ;
+cpu-flags clang-unix OPTIONS : x86 : i686 : -march=i686 ;
+cpu-flags clang-unix OPTIONS : x86 : pentium : -march=pentium ;
+cpu-flags clang-unix OPTIONS : x86 : pentium-mmx : -march=pentium-mmx ;
+cpu-flags clang-unix OPTIONS : x86 : pentiumpro : -march=pentiumpro ;
+cpu-flags clang-unix OPTIONS : x86 : pentium2 : -march=pentium2 ;
+cpu-flags clang-unix OPTIONS : x86 : pentium3 : -march=pentium3 ;
+cpu-flags clang-unix OPTIONS : x86 : pentium3m : -march=pentium3m ;
+cpu-flags clang-unix OPTIONS : x86 : pentium-m : -march=pentium-m ;
+cpu-flags clang-unix OPTIONS : x86 : pentium4 : -march=pentium4 ;
+cpu-flags clang-unix OPTIONS : x86 : pentium4m : -march=pentium4m ;
+cpu-flags clang-unix OPTIONS : x86 : prescott : -march=prescott ;
+cpu-flags clang-unix OPTIONS : x86 : nocona : -march=nocona ;
+cpu-flags clang-unix OPTIONS : x86 : core2 : -march=core2 ;
+cpu-flags clang-unix OPTIONS : x86 : k6 : -march=k6 ;
+cpu-flags clang-unix OPTIONS : x86 : k6-2 : -march=k6-2 ;
+cpu-flags clang-unix OPTIONS : x86 : k6-3 : -march=k6-3 ;
+cpu-flags clang-unix OPTIONS : x86 : athlon : -march=athlon ;
+cpu-flags clang-unix OPTIONS : x86 : athlon-tbird : -march=athlon-tbird ;
+cpu-flags clang-unix OPTIONS : x86 : athlon-4 : -march=athlon-4 ;
+cpu-flags clang-unix OPTIONS : x86 : athlon-xp : -march=athlon-xp ;
+cpu-flags clang-unix OPTIONS : x86 : athlon-mp : -march=athlon-mp ;
 ##
-cpu-flags gcc OPTIONS : x86 : k8 : -march=k8 ;
-cpu-flags gcc OPTIONS : x86 : opteron : -march=opteron ;
-cpu-flags gcc OPTIONS : x86 : athlon64 : -march=athlon64 ;
-cpu-flags gcc OPTIONS : x86 : athlon-fx : -march=athlon-fx ;
-cpu-flags gcc OPTIONS : x86 : winchip-c6 : -march=winchip-c6 ;
-cpu-flags gcc OPTIONS : x86 : winchip2 : -march=winchip2 ;
-cpu-flags gcc OPTIONS : x86 : c3 : -march=c3 ;
-cpu-flags gcc OPTIONS : x86 : c3-2 : -march=c3-2 ;
-# Sparc
-cpu-flags gcc OPTIONS : sparc : c3 : -mcpu=c3 : default ;
-cpu-flags gcc OPTIONS : sparc : v7 : -mcpu=v7 ;
-cpu-flags gcc OPTIONS : sparc : cypress : -mcpu=cypress ;
-cpu-flags gcc OPTIONS : sparc : v8 : -mcpu=v8 ;
-cpu-flags gcc OPTIONS : sparc : supersparc : -mcpu=supersparc ;
-cpu-flags gcc OPTIONS : sparc : sparclite : -mcpu=sparclite ;
-cpu-flags gcc OPTIONS : sparc : hypersparc : -mcpu=hypersparc ;
-cpu-flags gcc OPTIONS : sparc : sparclite86x : -mcpu=sparclite86x ;
-cpu-flags gcc OPTIONS : sparc : f930 : -mcpu=f930 ;
-cpu-flags gcc OPTIONS : sparc : f934 : -mcpu=f934 ;
-cpu-flags gcc OPTIONS : sparc : sparclet : -mcpu=sparclet ;
-cpu-flags gcc OPTIONS : sparc : tsc701 : -mcpu=tsc701 ;
-cpu-flags gcc OPTIONS : sparc : v9 : -mcpu=v9 ;
-cpu-flags gcc OPTIONS : sparc : ultrasparc : -mcpu=ultrasparc ;
-cpu-flags gcc OPTIONS : sparc : ultrasparc3 : -mcpu=ultrasparc3 ;
-# RS/6000 & PowerPC
-cpu-flags gcc OPTIONS : power : 403 : -mcpu=403 ;
-cpu-flags gcc OPTIONS : power : 505 : -mcpu=505 ;
-cpu-flags gcc OPTIONS : power : 601 : -mcpu=601 ;
-cpu-flags gcc OPTIONS : power : 602 : -mcpu=602 ;
-cpu-flags gcc OPTIONS : power : 603 : -mcpu=603 ;
-cpu-flags gcc OPTIONS : power : 603e : -mcpu=603e ;
-cpu-flags gcc OPTIONS : power : 604 : -mcpu=604 ;
-cpu-flags gcc OPTIONS : power : 604e : -mcpu=604e ;
-cpu-flags gcc OPTIONS : power : 620 : -mcpu=620 ;
-cpu-flags gcc OPTIONS : power : 630 : -mcpu=630 ;
-cpu-flags gcc OPTIONS : power : 740 : -mcpu=740 ;
-cpu-flags gcc OPTIONS : power : 7400 : -mcpu=7400 ;
-cpu-flags gcc OPTIONS : power : 7450 : -mcpu=7450 ;
-cpu-flags gcc OPTIONS : power : 750 : -mcpu=750 ;
-cpu-flags gcc OPTIONS : power : 801 : -mcpu=801 ;
-cpu-flags gcc OPTIONS : power : 821 : -mcpu=821 ;
-cpu-flags gcc OPTIONS : power : 823 : -mcpu=823 ;
-cpu-flags gcc OPTIONS : power : 860 : -mcpu=860 ;
-cpu-flags gcc OPTIONS : power : 970 : -mcpu=970 ;
-cpu-flags gcc OPTIONS : power : 8540 : -mcpu=8540 ;
-cpu-flags gcc OPTIONS : power : power : -mcpu=power ;
-cpu-flags gcc OPTIONS : power : power2 : -mcpu=power2 ;
-cpu-flags gcc OPTIONS : power : power3 : -mcpu=power3 ;
-cpu-flags gcc OPTIONS : power : power4 : -mcpu=power4 ;
-cpu-flags gcc OPTIONS : power : power5 : -mcpu=power5 ;
-cpu-flags gcc OPTIONS : power : powerpc : -mcpu=powerpc ;
-cpu-flags gcc OPTIONS : power : powerpc64 : -mcpu=powerpc64 ;
-cpu-flags gcc OPTIONS : power : rios : -mcpu=rios ;
-cpu-flags gcc OPTIONS : power : rios1 : -mcpu=rios1 ;
-cpu-flags gcc OPTIONS : power : rios2 : -mcpu=rios2 ;
-cpu-flags gcc OPTIONS : power : rsc : -mcpu=rsc ;
-cpu-flags gcc OPTIONS : power : rs64a : -mcpu=rs64 ;
-# AIX variant of RS/6000 & PowerPC
-toolset.flags gcc AROPTIONS <address-model>64/<target-os>aix : "-X 64" ;
+cpu-flags clang-unix OPTIONS : x86 : k8 : -march=k8 ;
+cpu-flags clang-unix OPTIONS : x86 : opteron : -march=opteron ;
+cpu-flags clang-unix OPTIONS : x86 : athlon64 : -march=athlon64 ;
+cpu-flags clang-unix OPTIONS : x86 : athlon-fx : -march=athlon-fx ;
+cpu-flags clang-unix OPTIONS : x86 : winchip-c6 : -march=winchip-c6 ;
+cpu-flags clang-unix OPTIONS : x86 : winchip2 : -march=winchip2 ;
+cpu-flags clang-unix OPTIONS : x86 : c3 : -march=c3 ;
+cpu-flags clang-unix OPTIONS : x86 : c3-2 : -march=c3-2 ;
+

Added: trunk/tools/build/v2/tools/clang.jam
==============================================================================
--- (empty file)
+++ trunk/tools/build/v2/tools/clang.jam 2010-04-18 15:43:40 EDT (Sun, 18 Apr 2010)
@@ -0,0 +1,27 @@
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt
+# or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+# This is a generic 'clang' toolset. Depending on the current system, it
+# forwards either to 'clang-unix' or 'clang-darwin' modules.
+
+import feature ;
+import os ;
+import toolset ;
+
+feature.extend toolset : clang ;
+feature.subfeature toolset clang : platform : : propagated link-incompatible ;
+
+rule init ( * : * )
+{
+ if [ os.name ] = MACOSX
+ {
+ toolset.using clang-darwin :
+ $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
+ }
+ else
+ {
+ toolset.using clang-unix :
+ $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
+ }
+}

Modified: trunk/tools/build/v2/tools/common.jam
==============================================================================
--- trunk/tools/build/v2/tools/common.jam (original)
+++ trunk/tools/build/v2/tools/common.jam 2010-04-18 15:43:40 EDT (Sun, 18 Apr 2010)
@@ -825,6 +825,8 @@
     switch [ $(property-set).get <toolset> ]
     {
         case borland* : tag += bcb ;
+ case clang-unix* : tag += gcc ;
+ case clang-darwin* : tag += xgcc ;
         case como* : tag += como ;
         case cw : tag += cw ;
         case darwin* : tag += xgcc ;


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