From 1c013c8e3a8f948a83e557f1e61bedff8ac94acd Mon Sep 17 00:00:00 2001 From: "H.Merijn Brand - Tux" Date: Sat, 10 Oct 2015 15:24:49 +0200 Subject: [PATCH] Backporting work on AmigaOS With an additional fix for bad commit 683e3b31e8b72ccea0ba577bdee2bc58caa738ad Serious problem with the change to Configure itself is that a case/esac was added that span TWO metaunits, so both had to get it. I don't know if adding the LINT:extern in Signal.U is safe enough --- U/compline/ccflags.U | 24 ++++++++++++++---------- U/modified/Findhdr.U | 7 +++++++ U/modified/Head.U | 5 ++++- U/modified/Oldconfig.U | 1 + U/modified/Signal.U | 5 +++++ U/modified/Tr.U | 4 ++-- U/modified/package.U | 4 ++-- U/modified/sig_name.U | 4 ++++ U/perl/Extensions.U | 21 +++++++++++++-------- U/perl/d_procselfexe.U | 11 +++++++---- U/perl/patchlevel.U | 8 ++++---- 11 files changed, 63 insertions(+), 31 deletions(-) diff --git a/U/compline/ccflags.U b/U/compline/ccflags.U index 3049410..4226327 100644 --- a/U/compline/ccflags.U +++ b/U/compline/ccflags.U @@ -45,7 +45,7 @@ ?RCS: Revision 3.0 1993/08/18 12:05:31 ram ?RCS: Baseline for dist 3.0 netwide release. ?RCS: -?MAKE:ccflags ldflags lkflags cppflags optimize locincpth: test cat \ +?MAKE:ccflags ldflags lkflags cppflags optimize locincpth: test cat osname \ Myread Guess Options Oldconfig +gccversion mips_type +usrinc \ package contains rm +cc cppstdin cppminus cpprun cpplast libpth \ libs loclibpth hint usesocks sh run rm_try sysroot @@ -231,15 +231,19 @@ default|recommended) # is to add the flag to the flags passed to the compiler at link time, # as that way the compiler can do the right implementation dependant # thing. (NWC) - case "$gccversion" in - ?*) set stack-protector-strong -fstack-protector-strong - eval $checkccflag - case "$dflt" in - *-fstack-protector-strong*) ;; # It got added. - *) # Try the plain/older -fstack-protector. - set stack-protector -fstack-protector - eval $checkccflag - ;; + case "$osname" in + amigaos) ;; # -fstack-protector builds but doesn't work + *) case "$gccversion" in + ?*) set stack-protector-strong -fstack-protector-strong + eval $checkccflag + case "$dflt" in + *-fstack-protector-strong*) ;; # It got added. + *) # Try the plain/older -fstack-protector. + set stack-protector -fstack-protector + eval $checkccflag + ;; + esac + ;; esac ;; esac diff --git a/U/modified/Findhdr.U b/U/modified/Findhdr.U index 7ab56f9..1a2547e 100644 --- a/U/modified/Findhdr.U +++ b/U/modified/Findhdr.U @@ -46,6 +46,11 @@ echo " " echo "Computing filename position in cpp output for #include directives..." >&4 case "$osname" in +amigaos) fieldn=3 ;; # Workaround for a bug in abc (pdksh). +esac +case "$fieldn" in +'') +case "$osname" in vos) testaccess=-e ;; *) testaccess=-r ;; esac @@ -70,6 +75,8 @@ EOF chmod +x fieldn fieldn=`./fieldn` $rm -f foo.c fieldn +;; +esac case $fieldn in '') pos='???';; 1) pos=first;; diff --git a/U/modified/Head.U b/U/modified/Head.U index 72615a5..35e93bf 100644 --- a/U/modified/Head.U +++ b/U/modified/Head.U @@ -140,7 +140,10 @@ EOF exit 1 fi -if test ! -c /dev/null ; then +if test -f /sys/utilities/MultiView ; then + # AmigaOS, test -c for /dev/null is not useful + : +elif test ! -c /dev/null ; then cat </dev/null`" in -ABYZ) +case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`"-"`echo AbyZ | $tr '[:upper:]' '[:lower:]' 2>/dev/null`" in +ABYZ-abyz) echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4 up='[:upper:]' low='[:lower:]' diff --git a/U/modified/package.U b/U/modified/package.U index 828ada3..49768c8 100644 --- a/U/modified/package.U +++ b/U/modified/package.U @@ -45,8 +45,8 @@ last=`echo $package | sed -e 's/^.\(.*\)/\1/'` ?X: include Tr in our dependency or that would create a cycle. Therefore, ?X: we have to somehow duplicate the work done in Tr. That's life. ?X: -case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in -ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;; +case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`"-"`echo AbyZ | tr '[:upper:]' '[:lower:]' 2>/dev/null`" in +ABYZ-abyz) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;; *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;; esac @end diff --git a/U/modified/sig_name.U b/U/modified/sig_name.U index c91c5e7..040268e 100644 --- a/U/modified/sig_name.U +++ b/U/modified/sig_name.U @@ -116,6 +116,8 @@ ?X: The list is sorted on signal number, with duplicates moved to ?X: the end.. : generate list of signal names +case "$sig_num_init" in +'') echo " " case "$sig_name_init" in '') doinit=yes ;; @@ -158,4 +160,6 @@ echo $sig_name | $awk \ }' sig_size=`echo $sig_name | awk '{print NF}'` $rm -f signal signal.c signal.awk signal.lst signal_cmd +;; +esac diff --git a/U/perl/Extensions.U b/U/perl/Extensions.U index aa958ff..90d9aa1 100644 --- a/U/perl/Extensions.U +++ b/U/perl/Extensions.U @@ -86,13 +86,13 @@ find_extensions=' case "$xxx" in DynaLoader|dynaload) ;; *) - this_ext=`echo $xxx | $sed -e s/-/\\\//g`; + this_ext=`echo "$xxx" | $sed -e s/-/\\\//g`; case "$this_ext" in Scalar/List/Utils) this_ext="List/Util" ;; PathTools) this_ext="Cwd" ;; esac; - echo " $xs_extensions $nonxs_extensions" > $tdir/$$.tmp; - if $contains " $this_ext " $tdir/$$.tmp; then + echo " $xs_extensions $nonxs_extensions" > "$tdir/$$.tmp"; + if $contains " $this_ext " "$tdir/$$.tmp"; then echo >&4; echo "Duplicate directories detected for extension $xxx" >&4; echo "Configure cannot correctly recover from this - shall I abort?" >&4; @@ -110,15 +110,15 @@ find_extensions=' esac; echo "Ok. You will need to correct config.sh before running make." >&4; fi; - $ls -1 $xxx > $tdir/$$.tmp; - if $contains "\.xs$" $tdir/$$.tmp > /dev/null 2>&1; then + $ls -1 "$xxx" > "$tdir/$$.tmp"; + if $contains "\.xs$" "$tdir/$$.tmp" > /dev/null 2>&1; then xs_extensions="$xs_extensions $this_ext"; - elif $contains "\.c$" $tdir/$$.tmp > /dev/null 2>&1; then + elif $contains "\.c$" "$tdir/$$.tmp" > /dev/null 2>&1; then xs_extensions="$xs_extensions $this_ext"; - elif $test -d $xxx; then + elif $test -d "$xxx"; then nonxs_extensions="$nonxs_extensions $this_ext"; fi; - $rm -f $tdir/$$.tmp; + $rm -f "$tdir/$$.tmp"; ;; esac; done' @@ -150,6 +150,11 @@ avail_ext='' for xxx in $xs_extensions ; do case "$xxx" in ?X: Handle possible DOS 8.3 filename and case alterations + Amiga*) + case "$osname" in + amigaos) avail_ext="$avail_ext $xxx" ;; + esac + ;; DB_File|db_file) case "$i_db" in $define) avail_ext="$avail_ext $xxx" ;; diff --git a/U/perl/d_procselfexe.U b/U/perl/d_procselfexe.U index 7958a9e..16e3bb8 100644 --- a/U/perl/d_procselfexe.U +++ b/U/perl/d_procselfexe.U @@ -30,7 +30,8 @@ echo " " procselfexe='' val="$undef" -case "$d_readlink" in +case "$d_procselfexe" in +'') case "$d_readlink" in "$define") : NetBSD first as /proc/self is a symlink to /proc/curproc, and it feels : more tidy to avoid an extra level of symlink @@ -50,8 +51,10 @@ case "$d_readlink" in fi done ;; + esac + $rm -f reflect + set d_procselfexe + eval $setvar +;; esac -$rm -f reflect -set d_procselfexe -eval $setvar diff --git a/U/perl/patchlevel.U b/U/perl/patchlevel.U index 21e6956..b172ac6 100644 --- a/U/perl/patchlevel.U +++ b/U/perl/patchlevel.U @@ -147,15 +147,15 @@ case "$osname" in dos|vms) : XXX Should be a Configure test for double-dots in filenames. version=`echo $revision $patchlevel $subversion | \ - $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'` + $awk '{ printf "%d_%d_%d", $1, $2, $3 }'` api_versionstring=`echo $api_revision $api_version $api_subversion | \ - $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'` + $awk '{ printf "%d_%d_%d", $1, $2, $3 }'` ;; *) version=`echo $revision $patchlevel $subversion | \ - $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'` + $awk '{ printf "%d.%d.%d", $1, $2, $3 }'` api_versionstring=`echo $api_revision $api_version $api_subversion | \ - $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'` + $awk '{ printf "%d.%d.%d", $1, $2, $3 }'` ;; esac : Special case the 5.005_xx maintenance series, which used 5.005 -- 1.8.3.1