mirror of https://github.com/FFmpeg/FFmpeg.git
Replace the inline awk script with a Perl script which tracks the
dependencies recursively.
This allows to correctly track dependencies for files including files
with a second level include (for example: ffmpeg-devices.texi ->
devices.texi -> outdevs.texi).
This also adds a dependency on perl for computing the dependencies, which
should not be a problem since perl is already required all the way for
building documentation.
This is a variant of commit 628ceac652
which was reverted due to out-of-tree build failure.
pull/48/merge
parent
5cda499d66
commit
5b073da7a1
3 changed files with 35 additions and 3 deletions
@ -0,0 +1,32 @@ |
||||
#! /usr/bin/env perl |
||||
|
||||
# This script will print the dependency of a Texinfo file to stdout. |
||||
# texidep.pl <src-path> <input.texi> <output.ext> |
||||
|
||||
use warnings; |
||||
use strict; |
||||
|
||||
die unless @ARGV == 3; |
||||
|
||||
my ($src_path, $root, $target) = @ARGV; |
||||
|
||||
sub print_deps { |
||||
my ($file, $deps) = @_; |
||||
$deps->{$file} = 1; |
||||
|
||||
open(my $fh, "<", "$file") or die "Cannot open file '$file': $!"; |
||||
while (<$fh>) { |
||||
if (my ($i) = /^\@(?:verbatim)?include\s+(\S+)/) { |
||||
die "Circular dependency found in file $root\n" if exists $deps->{"doc/$1"}; |
||||
print "$target: doc/$1\n"; |
||||
|
||||
# skip looking for config.texi dependencies, since it has |
||||
# none, and is not located in the source tree |
||||
if ("$1" ne "config.texi") { |
||||
print_deps("$src_path/doc/$1", {%$deps}); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
print_deps($root, {}); |
Loading…
Reference in new issue