You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdegraphics/ksvg/scripts/generate.pl

70 lines
2.1 KiB

#!/usr/bin/perl -w
my $kalyptusdir = "../../../kdebindings/kalyptus";
use File::Basename;
my $here = `pwd`;
chomp $here;
my $outdir = $here . "/generate.pl.tmpdir";
my $finaloutdir = $here;
## Note: outdir and finaloutdir should NOT be the same dir!
if (! -d $outdir) { mkdir $outdir; }
mkdir $finaloutdir unless (-d $finaloutdir);
# Need to cd to kalyptus's directory so that perl finds Ast.pm etc.
chdir "$kalyptusdir" or die "Couldn't go to $kalyptusdir (edit script to change dir)\n";
# Find out which header files we need to parse
my %excludes = (
);
# List headers, and exclude the ones listed above
my @headers = ();
my $incdir=$here;
opendir (INCS, $incdir) or die "Couldn't find $incdir";
foreach $filename (readdir(INCS)) {
$entry = $incdir."/".$filename;
if ( ( -e $entry or -l $entry ) # A real file or a symlink
&& ( ! -d _ ) ) # Not a symlink to a dir though
{
push(@headers, $entry)
if ( !defined $excludes{$filename} # Not excluded
&& $filename =~ /\.h$/ ); # Not a backup file etc. Only headers.
}
}
closedir INCS;
# Launch kalyptus
system "perl kalyptus @ARGV -fECMA --name=ksvg --outputdir=$outdir @headers";
my $exit = $? >> 8;
exit $exit if ($exit);
# Generate diff for generateddata.cpp
if ( -e "$finaloutdir/generateddata.cpp" ) {
system "diff -u $finaloutdir/generateddata.cpp $outdir/generateddata.cpp > $outdir/generateddata.cpp.diff";
}
# Copy changed or new files to finaloutdir
#opendir (OUT, $outdir) or die "Couldn't opendir $outdir";
#foreach $filename (readdir(OUT)) {
my $filename = "generateddata.cpp";
#next if ( -d "$outdir/$filename" ); # only files, not dirs
my $docopy = 1;
if ( -f "$finaloutdir/$filename" ) {
# How can I do a fast file compare in perl?
system "cmp -s $outdir/$filename $finaloutdir/$filename";
$docopy = ($?>>8); # 0 if files identical, 1 if different
}
if ($docopy) {
#print STDERR "Updating $filename...\n";
system "cp -f $outdir/$filename $finaloutdir/$filename";
}
# Delete outdir
system "rm -rf $outdir";