dfhack/depends/copy-if-different.pl

31 lines
740 B
Perl

#!/usr/bin/perl
# A replacement for "cmake -E copy_if_different" that supports multiple files,
# which old cmake versions do not support
# Usage: copy-if-different.pl src-file [src-file...] dest-dir
use strict;
use warnings;
use Digest::SHA;
use File::Basename;
use File::Copy;
sub sha_file {
my $filename = shift;
my $sha = Digest::SHA->new(256);
$sha->addfile($filename);
return $sha->hexdigest;
}
my $dest_dir = pop @ARGV or die "no destination dir";
-d $dest_dir or die "not a directory: $dest_dir";
my @src_files = @ARGV or die "no source files";
foreach my $file (@src_files) {
my $dest = "$dest_dir/" . basename($file);
next if -f $dest && sha_file($file) eq sha_file($dest);
copy($file, $dest);
}