# Copyright 2002, 2003, 2005 Vladimir Prus 
# 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) 


project 
    # This is needed to supress gcc warning on flex output, which otherwise
    # results in test failure
    : requirements <define>YY_NO_UNPUT
    ;

exe a : a.cpp b.cxx obj_1 obj_2 c.tui d.wd x.l y.x_pro lib//auxilliary ;
# This should not cause second compilation of a.cpp 
exe f : a.cpp b.cxx obj_1 obj_2 lib//auxilliary ;

obj obj_1 : z.cpp : <define>SELECT=1 ;
obj obj_2 : z.cpp : <define>SELECT=2 ;

nm-exe e : e.cpp ;
