#~ Copyright 2005 Rene Rivera.
#~ 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)

# Automatic configuration for Python tools and librries. To use, just import this module.

import os ;
import toolset : using ;

if [ os.name ] = NT
{
    local xsltproc-path = [ GLOB [ modules.peek : PATH ] "C:\\Boost\\bin" : xsltproc\.exe ] ;
    xsltproc-path = $(xsltproc-path[1]) ;
    
    if $(xsltproc-path)
    {
        if --debug-configuration in [ modules.peek : ARGV ]
        {
            ECHO "notice:" using xsltproc ":" $(xsltproc-path) ;
        }
        using xsltproc : $(xsltproc-path) ;
    }
}
else
{
    local xsltproc-path = [ GLOB [ modules.peek : PATH ] : xsltproc ] ;
    xsltproc-path = $(xsltproc-path[1]) ;
    
    if $(xsltproc-path)
    {
        if --debug-configuration in [ modules.peek : ARGV ]
        {
            ECHO "notice:" using xsltproc ":" $(xsltproc-path) ;
        }
        using xsltproc : $(xsltproc-path) ;
    }
}
