summaryrefslogtreecommitdiff
path: root/regen/uconfig_h.pl
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2011-03-22 15:53:20 +0000
committerNicholas Clark <nick@ccl4.org>2011-03-28 10:21:47 +0100
commitd0817dbe582693d4dbd2f1ae8097b9b0f5f8530e (patch)
tree5291edaab579d40d272d579e62168edc141d7eef /regen/uconfig_h.pl
parent88f1af6092edef582e05fbebaf7780bd7cde0504 (diff)
downloadperl-d0817dbe582693d4dbd2f1ae8097b9b0f5f8530e.tar.gz
Add regen/uconfig_h.pl to regenerate uconfig.h
Most of the work is done by config_h.SH, but the wrapper is needed to add the digest lines, so that t/porting/regen.t can verify that it's up to date. I think that we need to take the "digest" approach, rather than "build to a temporary file during testing", as we can't rely on a working Unix shell on all platforms, and we couldn't even be sure that we get the skip list correct.
Diffstat (limited to 'regen/uconfig_h.pl')
-rwxr-xr-xregen/uconfig_h.pl30
1 files changed, 30 insertions, 0 deletions
diff --git a/regen/uconfig_h.pl b/regen/uconfig_h.pl
new file mode 100755
index 0000000000..8f714e2877
--- /dev/null
+++ b/regen/uconfig_h.pl
@@ -0,0 +1,30 @@
+#!/usr/bin/perl -w
+#
+# Regenerate (overwriting only if changed):
+#
+# uconfig.h
+#
+# from uconfig.h config_h.SH
+#
+# Accepts the standard regen_lib -q and -v args.
+
+use strict;
+use Config;
+require 'regen/regen_lib.pl';
+
+my ($uconfig_h, $uconfig_h_new, $config_h_sh)
+ = ('uconfig.h', 'uconfig.h-new', 'config_h.SH');
+
+$ENV{CONFIG_SH} = 'uconfig.sh';
+$ENV{CONFIG_H} = $uconfig_h_new;
+safer_unlink($uconfig_h_new);
+
+my $command = 'sh ./config_h.SH';
+system $command and die "`$command` failed, \$?=$?";
+
+open FH, ">>$uconfig_h_new" or die "Can't append to $uconfig_h_new: $!";
+
+print FH "\n", read_only_bottom([$ENV{CONFIG_SH}, 'config_h.SH']);
+
+safer_close(*FH);
+rename_if_different($uconfig_h_new, $uconfig_h);