# Boost.Signals2 Library

# Copyright Frank Mori Hess 2009.

# Use, modification and
# distribution is subject to 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)

# For more information, see http://www.boost.org

import feature ;
import toolset ;

feature.feature extractor-command : : free dependency ;
toolset.flags snippet-extractor.extract-snippets EXTRACTOR-COMMAND <extractor-command> ;

rule extract-snippets ( target : sources * : properties * )
{
    DEPENDS $(target) : [ on $(target) return $(EXTRACTOR-COMMAND) ] ;
}
actions extract-snippets bind EXTRACTOR-COMMAND
{
    $(EXTRACTOR-COMMAND) "$(<:D)" $(>)
}
