diff options
author | Nicholas Clark <nick@ccl4.org> | 2013-07-03 18:31:02 +0200 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2013-07-07 12:42:02 +0200 |
commit | 145bbcacfa5da244463c1a32e9230278dd2eff31 (patch) | |
tree | f92b6eafd7dd9c7adcec7cc9de9fa5d535fe4d00 /utils | |
parent | f1f44974ad7245157b1b472771053946362694f8 (diff) | |
download | perl-145bbcacfa5da244463c1a32e9230278dd2eff31.tar.gz |
Replace utils/Makefile.SH with utils/Makefile.PL
This shares all the existing deficiencies of utils/Makefile.SH, and
generates a byte-for-byte identical utils/Makefile, including boilerplate
that claims it was generated by utils/Makefile.SH
utils/Makefile remains as a file checked into the repository, and is not (yet)
deleted, because as-was only *nix platforms could run utils/Makefile.SH to
generate utils/Makefile. This messy state of affairs means that if you build
with static linking, the checked-out utils/Makefile is modified
('../miniperl' is replaced with '../perl')
The next commit will resolve just these bugs.
In turn, it seems that the pre-generated utils/Makefile is only used by
Win32, as VMS contains rules in descrip_mms.template to build the
utilities. Probably the next thing to unpick is the build on VMS, but it
seems better to reduce the size of the "problem" in both utils/Makefile.PL
and vms/descrip_mms.template by attempting to move the work from them to
the extension directories and ExtUtils::MakeMaker.
Diffstat (limited to 'utils')
-rw-r--r-- | utils/Makefile.PL (renamed from utils/Makefile.SH) | 69 |
1 files changed, 24 insertions, 45 deletions
diff --git a/utils/Makefile.SH b/utils/Makefile.PL index a4a7e4a9d2..7e33806034 100644 --- a/utils/Makefile.SH +++ b/utils/Makefile.PL @@ -1,49 +1,34 @@ -case $PERL_CONFIG_SH in -'') - if test -f config.sh; then TOP=.; - elif test -f ../config.sh; then TOP=..; - elif test -f ../../config.sh; then TOP=../..; - elif test -f ../../../config.sh; then TOP=../../..; - elif test -f ../../../../config.sh; then TOP=../../../..; - else - echo "Can't find config.sh."; exit 1 - fi - . $TOP/config.sh - ;; -esac -: This forces SH files to create target in same directory as SH file. -: This is so that make depend always knows where to find SH derivatives. -case "$0" in -*/Makefile.SH) cd `expr X$0 : 'X\(.*\)/'` ;; -Makefile.SH) ;; -*) case `pwd` in - */utils) ;; - *) if test -d utils; then cd utils - else echo "Can't figure out where to write output."; exit 1 - fi;; - esac;; -esac - -echo "Extracting utils/Makefile (with variable substitutions)" -rm -f Makefile +#!./miniperl -w +use strict; +use Config; + +if (@ARGV) { + my $dir = shift; + chdir $dir or die "Can't chdir '$dir': $!"; +} + +require 'regen/regen_lib.pl'; + +my $target = 'utils/Makefile'; +print "Extracting $target (with variable substitutions)\n"; +my $fh = open_new($target, undef, undef, 1); + # These use the Cwd extension. For statically-built perls, we # need perl, not just miniperl. -case "$usedl" in - define) perl="../miniperl" ;; - *) perl="../perl" ;; -esac -cat >Makefile <<!GROK!THIS! +my $perl = defined $Config{usedl} ? '../miniperl' : '../perl'; + +print $fh <<"EOT"; # Generated from utils/Makefile.SH. The generated file is # shipped with the source kit for systems such as win32 # which don't do .SH extraction. PERL = $perl REALPERL = ../perl -RUN = $run # Used mainly cross-compilation setups. +RUN = $Config{run} # Used mainly cross-compilation setups. -!GROK!THIS! +EOT -cat >>Makefile <<'!NO!SUBS!' +print $fh <<'EOT'; # Files to be built with variable substitution after miniperl is # available. Dependencies handled manually below (for now). @@ -117,12 +102,6 @@ distclean: clobber veryclean: distclean -rm -f *~ *.org -!NO!SUBS! -$eunicefix Makefile -case `pwd` in -*SH) - $rm -f ../Makefile - $ln Makefile ../Makefile - ;; -esac -rm -f $firstmakefile +EOT + +close_and_rename($fh); |