mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	Also removed the lib-dir merging with sysdep. Updated #include's accordingly. Fixed make doc on recent Debian together with moving generated doc into objdir. Moved Makefile.in into root dir Retired all.o and birdlib.a Linking the final binaries directly from all the .o files.
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/perl
 | 
						|
 | 
						|
$srcdir = $ARGV[0];
 | 
						|
$out = $ARGV[1];
 | 
						|
 | 
						|
open(OUT, ">", $out) || die "Cannot create output file";
 | 
						|
process($srcdir);
 | 
						|
close OUT;
 | 
						|
gen_deps();
 | 
						|
exit 0;
 | 
						|
 | 
						|
sub include {
 | 
						|
  my $f = shift @_;
 | 
						|
  open(IN, "$f") || die "Unable to find $f";
 | 
						|
  push(@deps, "$f");
 | 
						|
  while (<IN>) {
 | 
						|
    print OUT;
 | 
						|
  }
 | 
						|
  close IN;
 | 
						|
}
 | 
						|
 | 
						|
sub process {
 | 
						|
  my $dir = shift @_;
 | 
						|
  print "$dir/Doc\n";
 | 
						|
  open(IN, "$dir/Doc") || die "Unable to read $dir/Doc";
 | 
						|
  push(@deps, "$dir/Doc");
 | 
						|
  my @docfile = <IN>;
 | 
						|
  close IN;
 | 
						|
  foreach $_ (@docfile) {
 | 
						|
    chomp;
 | 
						|
    /^#/ && next;
 | 
						|
    /^([A-Z]+)\s*(.*)/ || die "Parse error: $_";
 | 
						|
    $cmd = $1;
 | 
						|
    $arg = $2;
 | 
						|
    if ($cmd eq "C") { process("$dir/$arg"); }
 | 
						|
    elsif ($cmd eq "H") {
 | 
						|
      push @stack, "H";
 | 
						|
      print OUT "<chapt>$arg\n";
 | 
						|
    } elsif ($cmd eq "S") {
 | 
						|
      print "    $arg\n";
 | 
						|
      my @files = map("$dir/$_", split(' ', $arg));
 | 
						|
      my $fargs = join(' ', @files);
 | 
						|
      open(DOC, "$srcdir/doc/kernel-doc -bird $fargs |") || die "Unable to start kernel-doc";
 | 
						|
      push(@deps, @files);
 | 
						|
      while (<DOC>) { print OUT; }
 | 
						|
      close DOC;
 | 
						|
    } elsif ($cmd eq "D") {
 | 
						|
      print "    $arg\n";
 | 
						|
      include("$dir/$arg");
 | 
						|
    } else { die "Unknown command: $cmd"; }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
sub gen_deps {
 | 
						|
  open(DEP, ">", "$out.d");
 | 
						|
  print DEP "$out:";
 | 
						|
  foreach $f (@deps) {
 | 
						|
    print DEP " \\\n  $f";
 | 
						|
  }
 | 
						|
  print DEP "\n\n";
 | 
						|
 | 
						|
  foreach $f (@deps) {
 | 
						|
    print DEP "$f:\n\n";
 | 
						|
  }
 | 
						|
  close DEP;
 | 
						|
}
 |