# 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-linux : 
          $(1) : $(2) : $(3) : $(4) : $(5) : $(6) : $(7) : $(8) : $(9) ;
    }
}
