The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# WIZARD_GROUP PBS
# WIZARD_NAME  depender
# WIZARD_DESCRIPTION template for a depender sub
# WIZARD_ON

print <<'EOP' ;
use File::Basename ;

sub Depender
{
my
	(
	  $dependent_to_check
	, $config
	, $tree
	, $inserted_nodes
	, $dependencies         # rule local
	, $builder_override     # rule local
	, $rule_definition  # for introspection
	) = @_ ;

# Extra information for builders can be embedded in the node to build. Check "node subs"

# nodes starting with '__' are private to pbs and should not be depended (ex virtual root)
return($dependencies, $builder_override) if $dependent_to_check =~ /^__/ ;

my $build_directory    = $tree->{__PBS_CONFIG}{BUILD_DIRECTORY} ;
my $source_directories = $tree->{__PBS_CONFIG}{SOURCE_DIRECTORIES} ;

my ($triggered, @my_dependencies) ;

if(defined $dependencies && @$dependencies && $dependencies->[0] == 1 && @$dependencies > 1)
	{
	# previous depender defined dependencies
	$triggered       = shift @{$dependencies} ;
	@my_dependencies = @{$dependencies} ;
	}
	
# if we want to add dependencies
my ($basename, $path, $ext) = File::Basename::fileparse($dependent_to_check, ('\..*')) ;
my $name = $basename . $ext ;
$path =~ s/\/$// ;

push @my_dependencies, "$path/..." ;
$triggered = 1 ;

unshift @my_dependencies, $triggered ;

return(\@my_dependencies, $builder_override) ;
}

#
# since version 0.28_10, $builder overrides are complete rule defintions
# meta rules are already handled properly as they return the slave rule that matched
# if you want to override a builder, check the documentation properly
#

EOP