summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsource4/script/mkproto.pl21
1 files changed, 16 insertions, 5 deletions
diff --git a/source4/script/mkproto.pl b/source4/script/mkproto.pl
index 13e5715272..682712b679 100755
--- a/source4/script/mkproto.pl
+++ b/source4/script/mkproto.pl
@@ -25,6 +25,7 @@ my $public_data = \$_public;
my $private_data = \$_private;
my $builddir = undef;
my $srcdir = undef;
+my $always_create = $ENV{MK_PROTO_ALWAYS_CREATE};
sub public($)
{
@@ -49,6 +50,7 @@ sub usage()
print " --private-define=DEF Same as --define, but just for private header\n";
print " --srcdir=path Read files relative to this directory\n";
print " --builddir=path Write file relative to this directory\n";
+ print " --always-create Always create new proto headers, even if the content hasn't changed\n";
print " --help Print this help message\n\n";
exit 0;
}
@@ -65,6 +67,7 @@ GetOptions(
'private-define=s' => \$private_define,
'srcdir=s' => sub { my ($f,$v) = @_; $srcdir = $v; },
'builddir=s' => sub { my ($f,$v) = @_; $builddir = $v; },
+ 'always-create' => \$always_create,
'help' => \&usage
) or exit(1);
@@ -238,12 +241,20 @@ if (not defined($private_file) and defined($public_file)) {
print STDOUT $$private_data;
}
-mkpath(dirname($public_file), 0, 0755);
-open(PUBLIC, ">$public_file") or die("Can't open `$public_file': $!");
-print PUBLIC "$$public_data";
-close(PUBLIC);
+my $old_public_data = file_load($public_file);
+my $old_private_data = file_load($private_file);
+
+if (defined($always_create) or not defined($old_public_data) or ($old_public_data ne $$public_data))
+{
+ mkpath(dirname($public_file), 0, 0755);
+ open(PUBLIC, ">$public_file") or die("Can't open `$public_file': $!");
+ print PUBLIC "$$public_data";
+ close(PUBLIC);
+}
+
+if (($public_file ne $private_file) and (defined($always_create) or
+ not defined($old_private_data) or ($old_private_data ne $$private_data))) {
-if ($public_file ne $private_file) {
mkpath(dirname($private_file), 0, 0755);
open(PRIVATE, ">$private_file") or die("Can't open `$private_file': $!");
print PRIVATE "$$private_data";