- echo " "
- rp="Any additional ld flags (NOT including libraries)?"
- . ./myread
-@@ -2828,52 +2891,6 @@ n) echo "OK, that should do.";;
- esac
- $rm -f try try.* core
-
--: Set private lib path
--case "$plibpth" in
--%s
-- plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
-- fi;;
--esac
--case "$libpth" in
--' ') dlist='';;
--'') dlist="$plibpth $glibpth";;
--*) dlist="$libpth";;
--esac
--
--: Now check and see which directories actually exist, avoiding duplicates
--libpth=''
--for xxx in $dlist
--do
-- if $test -d $xxx; then
-- case " $libpth " in
-- *" $xxx "*) ;;
-- *) libpth="$libpth $xxx";;
-- esac
-- fi
--done
--$cat <<'EOM'
--
--Some systems have incompatible or broken versions of libraries. Among
--the directories listed in the question below, please remove any you
--know not to be holding relevant libraries, and add any that are needed.
--Say "none" for none.
--
--EOM
--case "$libpth" in
--'') dflt='none';;
--*)
-- set X $libpth
-- shift
-- dflt=${1+"$@"}
-- ;;
--esac
--rp="Directories to use for library searches?"
--. ./myread
--case "$ans" in
--none) libpth=' ';;
--*) libpth="$ans";;
--esac
--
- : compute shared library extension
- case "$so" in
- '')
-EOPATCH
-}
-
-if ($major < 5 && extract_from_file('Configure',
- qr!if \$cc \$ccflags try\.c -o try >/dev/null 2>&1; then!)) {
- # Analogous to the more general fix of dfe9444ca7881e71
- # Without this flags such as -m64 may not be passed to this compile, which
- # results in a byteorder of '1234' instead of '12345678', which can then
- # cause crashes.
-
- if (extract_from_file('Configure', qr/xxx_prompt=y/)) {
- # 8e07c86ebc651fe9 or later
- # ("This is my patch patch.1n for perl5.001.")
- apply_patch(<<'EOPATCH');
-diff --git a/Configure b/Configure
-index 62249dd..c5c384e 100755
---- a/Configure
-+++ b/Configure
-@@ -8247,7 +8247,7 @@ main()
- }
- EOCP
- xxx_prompt=y
-- if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
-+ if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
- dflt=`./try`
- case "$dflt" in
- [1-4][1-4][1-4][1-4]|12345678|87654321)
-EOPATCH
- } else {
- apply_patch(<<'EOPATCH');
-diff --git a/Configure b/Configure
-index 53649d5..f1cd64a 100755
---- a/Configure
-+++ b/Configure
-@@ -6362,7 +6362,7 @@ main()
- printf("\n");
- }
- EOCP
-- if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
-+ if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1 ; then
- dflt=`./try`
- case "$dflt" in
- ????|????????) echo "(The test program ran ok.)";;
-EOPATCH
- }
-}
-
-if ($major < 6 && !extract_from_file('Configure',
- qr!^\t-A\)$!)) {
- # This adds the -A option to Configure, which is incredibly useful
- # Effectively this is commits 02e93a22d20fc9a5, 5f83a3e9d818c3ad,
- # bde6b06b2c493fef, f7c3111703e46e0c and 2 lines of trailing whitespace
- # removed by 613d6c3e99b9decc, but applied at slightly different locations
- # to ensure a clean patch back to 5.000
- # Note, if considering patching to the intermediate revisions to fix bugs
- # in -A handling, f7c3111703e46e0c is from 2002, and hence $major == 8
-
- # To add to the fun, early patches add -K and -O options, and it's not
- # trivial to get patch to put the C<. ./posthint.sh> in the right place
- edit_file('Configure', sub {
- my $code = shift;
- $code =~ s/(optstr = ")([^"]+";\s*# getopt-style specification)/$1A:$2/
- or die "Substitution failed";
- $code =~ s!^(: who configured the system)!
-touch posthint.sh
-. ./posthint.sh
-
-$1!ms
- or die "Substitution failed";
- return $code;
- });
- apply_patch(<<'EOPATCH');
-diff --git a/Configure b/Configure
-index 4b55fa6..60c3c64 100755
---- a/Configure
-+++ b/Configure
-@@ -1150,6 +1150,7 @@ set X `for arg in "$@"; do echo "X$arg"; done |
- eval "set $*"
- shift
- rm -f options.awk
-+rm -f posthint.sh
-
- : set up default values
- fastread=''
-@@ -1172,6 +1173,56 @@ while test $# -gt 0; do
- case "$1" in
- -d) shift; fastread=yes;;
- -e) shift; alldone=cont;;
-+ -A)
-+ shift
-+ xxx=''
-+ yyy="$1"
-+ zzz=''
-+ uuu=undef
-+ case "$yyy" in
-+ *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
-+ case "$zzz" in
-+ *:*) zzz='' ;;
-+ *) xxx=append
-+ zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
-+ yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
-+ esac
-+ ;;
-+ esac
-+ case "$xxx" in
-+ '') case "$yyy" in
-+ *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
-+ yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
-+ zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
-+ yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
-+ *) xxx=`echo "$yyy"|sed 's!:.*!!'`
-+ yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
-+ esac
-+ ;;
-+ esac
-+ case "$xxx" in
-+ append)
-+ echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
-+ clear)
-+ echo "$yyy=''" >> posthint.sh ;;
-+ define)
-+ case "$zzz" in
-+ '') zzz=define ;;
-+ esac
-+ echo "$yyy='$zzz'" >> posthint.sh ;;
-+ eval)
-+ echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
-+ prepend)
-+ echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
-+ undef)
-+ case "$zzz" in
-+ '') zzz="$uuu" ;;
-+ esac
-+ echo "$yyy=$zzz" >> posthint.sh ;;
-+ *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
-+ esac
-+ shift
-+ ;;
- -f)
- shift
- cd ..
-EOPATCH
-}
-
-if ($major < 8 && !extract_from_file('Configure',
- qr/^\t\tif test ! -t 0; then$/)) {
- # Before dfe9444ca7881e71, Configure would refuse to run if stdin was not a
- # tty. With that commit, the tty requirement was dropped for -de and -dE
- # Commit aaeb8e512e8e9e14 dropped the tty requirement for -S
- # For those older versions, it's probably easiest if we simply remove the
- # sanity test.
- edit_file('Configure', sub {
- my $code = shift;
- $code =~ s/test ! -t 0/test Perl = rules/;
- return $code;
- });
-}
-
-if ($major == 8 || $major == 9) {
- # Fix symbol detection to that of commit 373dfab3839ca168 if it's any
- # intermediate version 5129fff43c4fe08c or later, as the intermediate
- # versions don't work correctly on (at least) Sparc Linux.
- # 5129fff43c4fe08c adds the first mention of mistrustnm.
- # 373dfab3839ca168 removes the last mention of lc=""
- edit_file('Configure', sub {
- my $code = shift;
- return $code
- if $code !~ /\btc="";/; # 373dfab3839ca168 or later
- return $code
- if $code !~ /\bmistrustnm\b/; # before 5129fff43c4fe08c
- my $fixed = <<'EOC';
-
-: is a C symbol defined?
-csym='tlook=$1;
-case "$3" in
--v) tf=libc.tmp; tdc="";;
--a) tf=libc.tmp; tdc="[]";;
-*) tlook="^$1\$"; tf=libc.list; tdc="()";;
-esac;
-tx=yes;
-case "$reuseval-$4" in
-true-) ;;
-true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
-esac;
-case "$tx" in
-yes)
- tval=false;
- if $test "$runnm" = true; then
- if $contains $tlook $tf >/dev/null 2>&1; then
- tval=true;
- elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
- echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
- $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
- $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
- $rm -f try$_exe try.c core core.* try.core;
- fi;
- else
- echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
- $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
- $rm -f try$_exe try.c;
- fi;
- ;;
-*)
- case "$tval" in
- $define) tval=true;;
- *) tval=false;;
- esac;
- ;;
-esac;
-eval "$2=$tval"'
-
-EOC
- $code =~ s/\n: is a C symbol defined\?\n.*?\neval "\$2=\$tval"'\n\n/$fixed/sm
- or die "substitution failed";
- return $code;
- });
-}
-
-if ($major < 10 && extract_from_file('Configure', qr/^set malloc\.h i_malloc$/)) {
- # This is commit 01d07975f7ef0e7d, trimmed, with $compile inlined as
- # prior to bd9b35c97ad661cc Configure had the malloc.h test before the
- # definition of $compile.
- apply_patch(<<'EOPATCH');
-diff --git a/Configure b/Configure
-index 3d2e8b9..6ce7766 100755
---- a/Configure
-+++ b/Configure
-@@ -6743,5 +6743,22 @@ set d_dosuid
-
- : see if this is a malloc.h system
--set malloc.h i_malloc
--eval $inhdr
-+: we want a real compile instead of Inhdr because some systems have a
-+: malloc.h that just gives a compile error saying to use stdlib.h instead
-+echo " "
-+$cat >try.c <<EOCP
-+#include <stdlib.h>
-+#include <malloc.h>
-+int main () { return 0; }
-+EOCP
-+set try
-+if $cc $optimize $ccflags $ldflags -o try $* try.c $libs > /dev/null 2>&1; then
-+ echo "<malloc.h> found." >&4
-+ val="$define"
-+else
-+ echo "<malloc.h> NOT found." >&4
-+ val="$undef"
-+fi
-+$rm -f try.c try
-+set i_malloc
-+eval $setvar
-
-EOPATCH
-}
-
-# Cwd.xs added in commit 0d2079faa739aaa9. Cwd.pm moved to ext/ 8 years later
-# in commit 403f501d5b37ebf0
-if ($major > 0 && <*/Cwd/Cwd.xs>) {
- if ($major < 10 && !extract_from_file('Makefile.SH', qr/^extra_dep=''$/)) {
- # The Makefile.PL for Unicode::Normalize needs
- # lib/unicore/CombiningClass.pl. Even without a parallel build, we need
- # a dependency to ensure that it builds. This is a variant of commit
- # 9f3ef600c170f61e. Putting this for earlier versions gives us a spot
- # on which to hang the edits below
- apply_patch(<<'EOPATCH');
-diff --git a/Makefile.SH b/Makefile.SH
-index f61d0db..6097954 100644
---- a/Makefile.SH
-+++ b/Makefile.SH
-@@ -155,10 +155,20 @@ esac
-
- : Prepare dependency lists for Makefile.
- dynamic_list=' '
-+extra_dep=''
- for f in $dynamic_ext; do
- : the dependency named here will never exist
- base=`echo "$f" | sed 's/.*\///'`
-- dynamic_list="$dynamic_list lib/auto/$f/$base.$dlext"
-+ this_target="lib/auto/$f/$base.$dlext"
-+ dynamic_list="$dynamic_list $this_target"
-+
-+ : Parallel makes reveal that we have some interdependencies
-+ case $f in
-+ Math/BigInt/FastCalc) extra_dep="$extra_dep
-+$this_target: lib/auto/List/Util/Util.$dlext" ;;
-+ Unicode/Normalize) extra_dep="$extra_dep
-+$this_target: lib/unicore/CombiningClass.pl" ;;
-+ esac
- done
-
- static_list=' '
-@@ -987,2 +997,9 @@ n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
- @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
-+!NO!SUBS!
-+
-+$spitshell >>Makefile <<EOF
-+$extra_dep
-+EOF
-+
-+$spitshell >>Makefile <<'!NO!SUBS!'
-
-EOPATCH
- }
- if ($major < 14) {
- # Commits dc0655f797469c47 and d11a62fe01f2ecb2
- edit_file('Makefile.SH', sub {
- my $code = shift;
- foreach my $ext (qw(Encode SDBM_File)) {
- next if $code =~ /\b$ext\) extra_dep=/s;
- $code =~ s!(\) extra_dep="\$extra_dep
-\$this_target: .*?" ;;)
-( esac
-)!$1
- $ext) extra_dep="\$extra_dep
-\$this_target: lib/auto/Cwd/Cwd.\$dlext" ;;
-$2!;
- }
- return $code;
- });
- }
-}
-if ($major == 7) {
- # Remove commits 9fec149bb652b6e9 and 5bab1179608f81d8, which add/amend
- # rules to automatically run regen scripts that rebuild C headers. These
- # cause problems because a git checkout doesn't preserve relative file
- # modification times, hence the regen scripts may fire. This will obscure
- # whether the repository had the correct generated headers checked in.
- # Also, the dependency rules for running the scripts were not correct,
- # which could cause spurious re-builds on re-running make, and can cause
- # complete build failures for a parallel make.
- if (extract_from_file('Makefile.SH',
- qr/Writing it this way gives make a big hint to always run opcode\.pl before/)) {
- apply_commit('70c6e6715e8fec53');
- } elsif (extract_from_file('Makefile.SH',
- qr/^opcode\.h opnames\.h pp_proto\.h pp\.sym: opcode\.pl$/)) {
- revert_commit('9fec149bb652b6e9');
- }
-}
-
-# There was a bug in makedepend.SH which was fixed in version 96a8704c.
-# Symptom was './makedepend: 1: Syntax error: Unterminated quoted string'
-# Remove this if you're actually bisecting a problem related to makedepend.SH
-# If you do this, you may need to add in code to correct the output of older
-# makedepends, which don't correctly filter newer gcc output such as <built-in>
-checkout_file('makedepend.SH');
-
-if ($^O eq 'freebsd') {
- # There are rather too many version-specific FreeBSD hints fixes to patch
- # individually. Also, more than once the FreeBSD hints file has been
- # written in what turned out to be a rather non-future-proof style,
- # with case statements treating the most recent version as the exception,
- # instead of treating previous versions' behaviour explicitly and changing
- # the default to cater for the current behaviour. (As strangely, future
- # versions inherit the current behaviour.)
- checkout_file('hints/freebsd.sh');
-} elsif ($^O eq 'darwin') {
- if ($major < 8) {
- my $faking_it;
- # We can't build on darwin without some of the data in the hints file.
- foreach ('ext/DynaLoader/dl_dyld.xs', 'hints/darwin.sh') {
- next if -f $_;
- ++$faking_it;
- # Probably less surprising to use the earliest version of
- # hints/darwin.sh and then edit in place just below, than use
- # blead's version, as that would create a discontinuity at
- # f556e5b971932902 - before it, hints bugs would be "fixed", after
- # it they'd resurface. This way, we should give the illusion of
- # monotonic bug fixing.
- checkout_file($_, 'f556e5b971932902');
- }
- if ($faking_it) {
- apply_patch(<<'EOPATCH');
-diff -u a/ext/DynaLoader/dl_dyld.xs~ a/ext/DynaLoader/dl_dyld.xs
---- a/ext/DynaLoader/dl_dyld.xs~ 2011-10-11 21:41:27.000000000 +0100
-+++ b/ext/DynaLoader/dl_dyld.xs 2011-10-11 21:42:20.000000000 +0100
-@@ -41,6 +41,35 @@
- #include "perl.h"
- #include "XSUB.h"
-
-+#ifndef pTHX
-+# define pTHX void
-+# define pTHX_
-+#endif
-+#ifndef aTHX
-+# define aTHX
-+# define aTHX_
-+#endif
-+#ifndef dTHX
-+# define dTHXa(a) extern int Perl___notused(void)
-+# define dTHX extern int Perl___notused(void)
-+#endif
-+
-+#ifndef Perl_form_nocontext
-+# define Perl_form_nocontext form
-+#endif
-+
-+#ifndef Perl_warn_nocontext
-+# define Perl_warn_nocontext warn
-+#endif
-+
-+#ifndef PTR2IV
-+# define PTR2IV(p) (IV)(p)
-+#endif
-+
-+#ifndef get_av
-+# define get_av perl_get_av
-+#endif
-+
- #define DL_LOADONCEONLY