use strict;
use warnings;
+use Getopt::Long;
-my $docdir = $ARGV[0] or die "$0: missing required argument: docdir\n";
-my $hfile = $ARGV[1] . '.h'
- or die "$0: missing required argument: output file\n";
-my $cfile = $ARGV[1] . '.c';
+my $docdir = '';
+my $outdir = '.';
+my $depfile = '';
+my $hfilebasename = '';
-my $hfilebasename;
-if ($hfile =~ m!.*/([^/]+)$!)
-{
- $hfilebasename = $1;
-}
-else
-{
- $hfilebasename = $hfile;
-}
+GetOptions(
+ 'docdir=s' => \$docdir,
+ 'outdir=s' => \$outdir,
+ 'basename=s' => \$hfilebasename,
+ 'depfile=s' => \$depfile,) or die "$0: wrong arguments";
+
+$docdir or die "$0: missing required argument: docdir\n";
+$hfilebasename or die "$0: missing required argument: basename\n";
+
+my $hfile = $hfilebasename . '.h';
+my $cfile = $hfilebasename . '.c';
my $define = $hfilebasename;
$define =~ tr/a-z/A-Z/;
opendir(DIR, $docdir)
or die "$0: could not open documentation source dir '$docdir': $!\n";
-open(my $hfile_handle, '>', $hfile)
+open(my $hfile_handle, '>', "$outdir/$hfile")
or die "$0: could not open output file '$hfile': $!\n";
-open(my $cfile_handle, '>', $cfile)
+open(my $cfile_handle, '>', "$outdir/$cfile")
or die "$0: could not open output file '$cfile': $!\n";
+my $depfile_handle;
+if ($depfile)
+{
+ open($depfile_handle, '>', $depfile)
+ or die "$0: could not open output file '$depfile': $!\n";
+}
+
print $hfile_handle "/*
* *** Do not change this file by hand. It is automatically
* *** generated from the DocBook documentation.
my ($cmdid, @cmdnames, $cmddesc, $cmdsynopsis);
$file =~ /\.sgml$/ or next;
+ print $depfile_handle "$outdir/$cfile $outdir/$hfile: $docdir/$file\n"
+ if ($depfile);
+
open(my $fh, '<', "$docdir/$file") or next;
my $filecontent = join('', <$fh>);
close $fh;
close $cfile_handle;
close $hfile_handle;
+close $depfile_handle if ($depfile);
closedir DIR;
if (IsNewer('src/bin/psql/sql_help.h', 'src/bin/psql/create_help.pl'))
{
print "Generating sql_help.h...\n";
- chdir('src/bin/psql');
- system("perl create_help.pl ../../../doc/src/sgml/ref sql_help");
- chdir('../../..');
+ my $psql = 'src/bin/psql';
+ system("perl $psql/create_help.pl --docdir doc/src/sgml/ref --outdir $psql --basename sql_help");
}
if (IsNewer('src/common/kwlist_d.h', 'src/include/parser/kwlist.h'))