# Copyright 2002, 2003 Dave Abrahams 
# Copyright 2002 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) 

import modules ;
import common ;

TOUCH = [ common.file-touch-command ] ;

rule target-source ( targets * : sources * : properties * )
{
    if [ modules.peek : NT ]
    {
        main on $(<) = "int main() { return 0; }" ;
    }
    else
    {
        main on $(<) = "\"int main() { return 0; }\"" ;
    }
}

actions target-source
{
    echo "NM target source consuming " $(>)
    echo $(main) > $(<)      
}

rule cpp-mark ( targets * : sources * : properties * )
{
}

actions cpp-mark
{
    echo "CPP-MARK consuming " $(>)
    $(TOUCH) $(<[1])
    $(TOUCH) $(<[2])
}





