You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	doc: add script to compute texi files dependencies
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.
			
			
This commit is contained in:
		
							
								
								
									
										4
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @@ -2337,8 +2337,8 @@ ffserver_extralibs='$ldl' | ||||
| # documentation | ||||
| podpages_deps="perl" | ||||
| manpages_deps="perl pod2man" | ||||
| htmlpages_deps="texi2html" | ||||
| txtpages_deps="makeinfo" | ||||
| htmlpages_deps="perl texi2html" | ||||
| txtpages_deps="perl makeinfo" | ||||
| doc_deps_any="manpages htmlpages podpages txtpages" | ||||
|  | ||||
| # default parameters | ||||
|   | ||||
| @@ -61,7 +61,7 @@ documentation: $(DOCS) | ||||
|  | ||||
| examples: $(DOC_EXAMPLES) | ||||
|  | ||||
| TEXIDEP = awk '/^@(verbatim)?include/ { printf "$@: $(@D)/%s\n", $$2 }' <$< >$(@:%=%.d) | ||||
| TEXIDEP = perl $(SRC_PATH)/doc/texidep.pl $(SRC_PATH) $< $@ >$(@:%=%.d) | ||||
|  | ||||
| doc/%.txt: TAG = TXT | ||||
| doc/%.txt: doc/%.texi | ||||
|   | ||||
							
								
								
									
										32
									
								
								doc/texidep.pl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								doc/texidep.pl
									
									
									
									
									
										Normal file
									
								
							| @@ -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, {}); | ||||
		Reference in New Issue
	
	Block a user