r9217: Add 'make clean' hooks to the ans1 depedency generator.
[samba.git] / source / heimdal_build / asn1_deps.pl
1 #!/usr/bin/perl
2 # Generate make dependency rules for asn1 files
3 # Jelmer Vernooij <jelmer@samba.org> 2005
4 # GPL
5
6 use File::Basename;
7
8 my $file = shift;
9 my $prefix = shift;
10 my $x_file, @x_files;
11 my $c_file, @c_files;
12 if (not defined ($prefix)) { $prefix = "asn1"; }
13
14 $dirname = dirname($file);
15 $basename = basename($file);
16
17 my $header = "$dirname/$prefix.h";
18
19 print "$header: $file bin/asn1_compile\n";
20 print "\t\@echo \"Compiling ASN1 file $file\"\n";
21 print "\t\@cd $dirname && ../../../bin/asn1_compile $basename $prefix\n\n";
22
23 open(IN,$file) or die("Can't open $file: $!");
24 foreach(<IN>) {
25         if (/^([A-Za-z0-9_-]+)[ \t]*::= /) {
26                 my $output = $1;
27                 $output =~ s/-/_/g;
28                 $c_file = "$dirname/asn1_$output.c";
29                 $x_file = "$dirname/asn1_$output.x";
30                 print "$x_file: $header\n";
31                 print "$c_file: $dirname/asn1_$output.x\n";
32                 print "\t\@cp $x_file $c_file\n\n";
33                 push @x_files, $x_file;
34                 push @c_files, $c_file;
35         }
36 }
37 close(IN);
38 print $prefix."_clean: \n";
39 print "\t\@echo \"Deleting ASN1 ouput files generated from $file\"";
40 print "\n\t\@rm -f $header";
41 foreach $c_file (@c_files) {
42     print "\n\t\@rm -f $c_file";
43 }
44 foreach $x_file (@x_files) {
45     print "\n\t\@rm -f $x_file";
46 }
47 print "\n\n";