# Boost.Wave: A Standard compliant C++ preprocessor library
#
# Boost Wave Library Sample Build Jamfile (token_statistics)
#
# http://www.boost.org/
#
# Copyright (c) 2001-2010 Hartmut Kaiser. 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)

SOURCES = 
        ../token_statistics 
        ../instantiate_xlex_lexer
        ../instantiate_cpp_grammar
        ../instantiate_defined_grammar
    ;

exe token_statistics
    :
        $(SOURCES)
        /boost/wave//boost_wave
        /boost/program_options//boost_program_options
        /boost/filesystem//boost_filesystem     
        /boost/system//boost_system     
        /boost/thread//boost_thread
        /boost/date_time//boost_date_time
    ;

for local source in $(SOURCES)
{
    local requirements ;
    requirements += <toolset-msvc:version>7.1:<rtti>off ; # workaround for compiler bug
    requirements += <toolset-msvc:version>7.1_stlport4:<rtti>off ;
    obj $(source) : $(source).cpp : $(requirements) ;
}

