|
21 | 21 |
|
22 | 22 | use strict;
|
23 | 23 | use warnings;
|
| 24 | +use Getopt::Long; |
24 | 25 |
|
25 |
| -my $docdir = $ARGV[0] or die "$0: missing required argument: docdir\n"; |
26 |
| -my $hfile = $ARGV[1] . '.h' |
27 |
| - or die "$0: missing required argument: output file\n"; |
28 |
| -my $cfile = $ARGV[1] . '.c'; |
| 26 | +my $docdir = ''; |
| 27 | +my $outdir = '.'; |
| 28 | +my $depfile = ''; |
| 29 | +my $hfilebasename = ''; |
29 | 30 |
|
30 |
| -my $hfilebasename; |
31 |
| -if ($hfile =~ m!.*/([^/]+)$!) |
32 |
| -{ |
33 |
| - $hfilebasename = $1; |
34 |
| -} |
35 |
| -else |
36 |
| -{ |
37 |
| - $hfilebasename = $hfile; |
38 |
| -} |
| 31 | +GetOptions( |
| 32 | + 'docdir=s' => \$docdir, |
| 33 | + 'outdir=s' => \$outdir, |
| 34 | + 'basename=s' => \$hfilebasename, |
| 35 | + 'depfile=s' => \$depfile,) or die "$0: wrong arguments"; |
| 36 | + |
| 37 | +$docdir or die "$0: missing required argument: docdir\n"; |
| 38 | +$hfilebasename or die "$0: missing required argument: basename\n"; |
| 39 | + |
| 40 | +my $hfile = $hfilebasename . '.h'; |
| 41 | +my $cfile = $hfilebasename . '.c'; |
39 | 42 |
|
40 | 43 | my $define = $hfilebasename;
|
41 | 44 | $define =~ tr/a-z/A-Z/;
|
42 | 45 | $define =~ s/\W/_/g;
|
43 | 46 |
|
44 | 47 | opendir(DIR, $docdir)
|
45 | 48 | or die "$0: could not open documentation source dir '$docdir': $!\n";
|
46 |
| -open(my $hfile_handle, '>', $hfile) |
| 49 | +open(my $hfile_handle, '>', "$outdir/$hfile") |
47 | 50 | or die "$0: could not open output file '$hfile': $!\n";
|
48 |
| -open(my $cfile_handle, '>', $cfile) |
| 51 | +open(my $cfile_handle, '>', "$outdir/$cfile") |
49 | 52 | or die "$0: could not open output file '$cfile': $!\n";
|
50 | 53 |
|
| 54 | +my $depfile_handle; |
| 55 | +if ($depfile) |
| 56 | +{ |
| 57 | + open($depfile_handle, '>', $depfile) |
| 58 | + or die "$0: could not open output file '$depfile': $!\n"; |
| 59 | +} |
| 60 | + |
51 | 61 | print $hfile_handle "/*
|
52 | 62 | * *** Do not change this file by hand. It is automatically
|
53 | 63 | * *** generated from the DocBook documentation.
|
|
98 | 108 | my ($cmdid, @cmdnames, $cmddesc, $cmdsynopsis);
|
99 | 109 | $file =~ /\.sgml$/ or next;
|
100 | 110 |
|
| 111 | + print $depfile_handle "$outdir/$cfile $outdir/$hfile: $docdir/$file\n" |
| 112 | + if ($depfile); |
| 113 | + |
101 | 114 | open(my $fh, '<', "$docdir/$file") or next;
|
102 | 115 | my $filecontent = join('', <$fh>);
|
103 | 116 | close $fh;
|
|
216 | 229 |
|
217 | 230 | close $cfile_handle;
|
218 | 231 | close $hfile_handle;
|
| 232 | +close $depfile_handle if ($depfile); |
219 | 233 | closedir DIR;
|
0 commit comments