#~ Copyright 2007 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)

if ! $(BJAM_SUBTEST)
{
    ECHO --- Testing -jN parallel execution of multi-file actions - 1... ;

    assert "...found 6 targets...
...updating 4 targets...
.gen. g1.generated
001
002
.use.1 u1.user
003
.use.2 u2.user
004
...updated 4 targets...
" : (==) : [ SHELL "\"$(ARGV[1])\" -f parallel_multifile_actions_1.jam -sBJAM_SUBTEST=1 -j2" ] ;
}
else
{
    actions .gen. {
echo 001
sleep 4
echo 002
}
    rule .use.1 { DEPENDS $(<) : $(>) ; }
    actions .use.1 {
echo 003
}
    rule .use.2 { DEPENDS $(<) : $(>) ; }
    actions .use.2 {
sleep 1
echo 004
}

    .gen. g1.generated g2.generated ;
    .use.1 u1.user : g1.generated ;
    .use.2 u2.user : g2.generated ;

    NOTFILE root ;
    DEPENDS g1.generated g2.generated : root ;
    DEPENDS all : u1.user u2.user ;
}
