#~ Copyright 2006 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 actions... ;

    assert "...found 12 targets...
...updating 8 targets...
sleeper 1.a
[.a] 0
[.a] 1
[.a] 2
sleeper 2.a
[.a] 0
[.a] 1
[.a] 2
sleeper 3.a
[.a] 0
[.a] 1
[.a] 2
sleeper 4.a
[.a] 0
[.a] 1
[.a] 2
sleeper 1.b
[.b] 0
[.b] 1
[.b] 2
sleeper 2.b
[.b] 0
[.b] 1
[.b] 2
sleeper 3.b
[.b] 0
[.b] 1
[.b] 2
sleeper 4.b
[.b] 0
[.b] 1
[.b] 2
...updated 8 targets...
" : (==) : [ SHELL "\"$(ARGV[1])\" -f parallel_actions.jam -sBJAM_SUBTEST=1 -j4" ] ;
}
else
{
    if $(NT)
    {
        actions sleeper
        {
echo [$(<:S)] 0
sleep 1
echo [$(<:S)] 1
sleep 1
echo [$(<:S)] 2
sleep $(<:B)
        }
    }
    else
    {
        actions sleeper
        {
echo "[$(<:S)] 0" 1>&2
sleep 1
echo "[$(<:S)] 1"
sleep 1
echo "[$(<:S)] 2" 1>&2
sleep $(<:B)
        }
    }
    
    rule sleeper
    {
        DEPENDS $(<) : $(>) ;
    }
    
    NOTFILE front ;
    sleeper 1.a : front ;
    sleeper 2.a : front ;
    sleeper 3.a : front ;
    sleeper 4.a : front ;
    NOTFILE choke ;
    DEPENDS choke : 1.a 2.a 3.a 4.a ;
    sleeper 1.b : choke ;
    sleeper 2.b : choke ;
    sleeper 3.b : choke ;
    sleeper 4.b : choke ;
    DEPENDS bottom : 1.b 2.b 3.b 4.b ;
    DEPENDS all : bottom ;
}
