Annotation of embedaddon/bird2/tools/progdoc, revision 1.1
1.1 ! misho 1: #!/usr/bin/perl
! 2:
! 3: $srcdir = $ARGV[0];
! 4: $out = $ARGV[1];
! 5:
! 6: open(OUT, ">", $out) || die "Cannot create output file";
! 7: process($srcdir, "doc/prog-root");
! 8: close OUT;
! 9: gen_deps();
! 10: exit 0;
! 11:
! 12: sub include {
! 13: my $f = shift @_;
! 14: open(IN, "$f") || die "Unable to find $f";
! 15: push(@deps, "$f");
! 16: while (<IN>) {
! 17: print OUT;
! 18: }
! 19: close IN;
! 20: }
! 21:
! 22: sub process {
! 23: my $dir = shift @_;
! 24: my $doc = "$dir/" . shift @_;
! 25: print "$doc\n";
! 26: open(IN, $doc) || die "Unable to read $doc";
! 27: push(@deps, $doc);
! 28: my @docfile = <IN>;
! 29: close IN;
! 30: foreach $_ (@docfile) {
! 31: chomp;
! 32: /^#/ && next;
! 33: /^([A-Z]+)\s*(.*)/ || die "Parse error: $_";
! 34: $cmd = $1;
! 35: $arg = $2;
! 36: if ($cmd eq "C") { process("$dir/$arg", "Doc"); }
! 37: elsif ($cmd eq "H") {
! 38: push @stack, "H";
! 39: print OUT "<chapt>$arg\n";
! 40: } elsif ($cmd eq "S") {
! 41: print " $arg\n";
! 42: my @files = map("$dir/$_", split(' ', $arg));
! 43: my $fargs = join(' ', @files);
! 44: open(DOC, "$srcdir/doc/kernel-doc -bird $fargs |") || die "Unable to start kernel-doc";
! 45: push(@deps, @files);
! 46: while (<DOC>) { print OUT; }
! 47: close DOC;
! 48: } elsif ($cmd eq "D") {
! 49: print " $arg\n";
! 50: include("$dir/$arg");
! 51: } else { die "Unknown command: $cmd"; }
! 52: }
! 53: }
! 54:
! 55: sub gen_deps {
! 56: open(DEP, ">", "$out.d");
! 57: print DEP "$out:";
! 58: foreach $f (@deps) {
! 59: print DEP " \\\n $f";
! 60: }
! 61: print DEP "\n\n";
! 62:
! 63: foreach $f (@deps) {
! 64: print DEP "$f:\n\n";
! 65: }
! 66: close DEP;
! 67: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>