The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

# example of  pure perl rules as well as example using dependent matchers

PbsUse('Dependers/Matchers') ;

#~ # %TARGET_PATH is usefull as soon as the target has a path it otherwise generates cycles!
#~ # the following rule would recurse infinitely if the target is 'all' but not if the target is 'somepath/all'
#~ AddRule '1', [qr<%TARGET_PATH/all$> => '$path/muu/all', '$path/f1', '$path/a.o', '$path/muu/xxxxx.o'] ;

AddRule 'rule_1', [qr<\./all$> => '$path/muu/all', '$path/f1', '$path/a.o', '$path/muu/xxxxx.o'] ;

AddRule 'rule_2', [qr<\.o$> => '$path/$basename.c'] ;

AddRule 'rule_3', 
	[
		[sub{return(@_[4 .. 5])}] # creator
		
		 #~ => qr<\.c$> => # regex
		 #~ => sub{ $_[0] =~ qr<\.c$>} => # regex
		 #~ => AnyMatch(qr<\.c$>, qr<f1>) => # regex
		 #~ => CompositMatch
			#~ (
			  #~ AnyMatch(qr<\.c$>, qr<f1>)
			#~ , NoMatch(qr/xx/)
			#~ ) => # regex
		 => AndMatch(qr<\.c$>, NoMatch(qr/xx/)) => # regex
				  #normal dependency definition
				  # available: $path $basename $name $ext
				  '$path/$basename.h' 
				  
				, [ # post depender
					sub
						{
						return([1, "hi_there2"], @_[5 .. 6])
						}
				  ]
				, sub #depender
					{
					return([1, "hi_there1"], @_[5 .. 6])
					}
	] ;


#~ AddRule '4', [qr/%TARGET_PATH.+$/ => '$path/$basename.muu'] ;
	
#~ AddRule '3', [[sub{return(@_[4 .. 6])}], '*/*.c' => 'zzz'] ;
#~ AddRule '', [qr// => ] ;