7152e5efbb
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.
66 lines
1.4 KiB
Perl
Executable file
66 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;
|
|
}
|