$NetBSD: patch-Configure,v 1.14 2023/07/06 09:22:14 wiz Exp $

* Use "uname -r" to get OS version for *BSD.
* Move $loclibpth to the end of $dlist, instead of the beginning.
* Detect systems which have <fenv.h> but where using it fails.
* Honor more ldflags in shared objects.
* Add Minix
* Several other changes.
* Add rpath for QNX

--- Configure.orig	2022-12-20 12:11:59.000000000 +0000
+++ Configure
@@ -3515,7 +3515,8 @@ EOM
 			osvers=`echo "$4"|sed 's/^v//'`
 			;;
 		freebsd) osname=freebsd
-			osvers="$3" ;;
+			osvers=`$uname -r | UU/tr '[A-Z]' '[a-z]'`
+			;;
 		genix)	osname=genix ;;
 		gnu)	osname=gnu
 			osvers="$3" ;;
@@ -3537,11 +3538,11 @@ EOM
 			;;
 		MiNT)	osname=mint
 			;;
-		minix)	osname=minix
+		minix*) osname=minix
 			osvers=`$uname -r`
 			;;
 		netbsd*) osname=netbsd
-			osvers="$3"
+			osvers=`$uname -r | UU/tr '[A-Z]' '[a-z]'`
 			;;
 		news-os) osvers="$3"
 			case "$3" in
@@ -3551,7 +3552,7 @@ EOM
 			;;
 		nonstop-ux) osname=nonstopux ;;
 		openbsd) osname=openbsd
-			osvers="$3"
+			osvers=`$uname -r | UU/tr '[A-Z]' '[a-z]'`
 			;;
 		os2)	osname=os2
 			osvers="$4"
@@ -3566,6 +3567,9 @@ EOM
 		qnx) osname=qnx
 			osvers="$4"
 			;;
+		sco_sv) osname=sco_sv
+			osvers=`$uname -r`v`$uname -v`
+			;;
 		solaris) osname=solaris
 			case "$3" in
 			5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
@@ -4943,7 +4947,7 @@ esac
 # If using gcc or clang, we can get better values for libpth, incpth
 # and usrinc directly from the compiler.
 # Note that ccname for clang is also gcc.
-case "$ccname" in
+case "xx$ccname" in
     gcc)
 	realpath=`which realpath 2>/dev/null | sed 's/no realpath in.*//'`
 	$echo 'extern int foo;' > try.c
@@ -5027,14 +5031,14 @@ case "$plibpth" in
 esac
 case "$libpth" in
 ' ') dlist='';;
-'') dlist="$loclibpth $plibpth $glibpth";;
+'') dlist="$plibpth $glibpth $loclibpth";;
 *) dlist="$libpth";;
 esac
 
 : Now check and see which directories actually exist, avoiding duplicates
 for xxx in $dlist
 do
-    if $test -d $xxx; then
+    if $test -d $xxx -o "$xxx" = "$prefix/lib"; then
 		case " $libpth " in
 		*" $xxx "*) ;;
 		*) libpth="$libpth $xxx";;
@@ -5150,7 +5154,7 @@ lib_ext=$_a
 obj_ext=$_o
 path_sep=$p_
 
-rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
+rm_try="@TOOLS_RM@ -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
 
 : Which makefile gets called first.  This is used by make depend.
 case "$firstmakefile" in
@@ -5493,7 +5497,7 @@ default|recommended)
 	*-fno-stack-protector*)
 	    echo "Do not add -fstack-protector nor -fstack-protector-strong" 2>&1
 	    ;;
-	*) case "$gccversion" in
+	nothing) case "$gccversion" in
 	   ?*)	set stack-protector-strong -fstack-protector-strong
 		eval $checkccflag
 		case "$dflt" in
@@ -6476,6 +6480,15 @@ case "$nm_so_opt" in
 	;;
 esac
 
+: Mac OS X 10.7 is different
+case "$osname" in
+    darwin)
+	case "$osvers" in
+	    11.*)
+		libnames="$libnames /usr/lib/system/libsystem_*.dylib"
+	esac
+esac
+
 : Figure out where the libc is located
 case "$runnm" in
 true)
@@ -7656,7 +7669,9 @@ rp='Pathname for the site-specific libra
 . ./getfile
 prefixvar=sitelib
 . ./setprefixvar
-sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
+if $test -z "$sitelib_stem"; then
+	sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
+fi
 
 : Determine list of previous versions to include in @INC
 $cat > getverlist <<EOPL
@@ -8069,7 +8084,9 @@ case "$vendorprefix" in
 	vendorlibexp="$ansexp"
 	;;
 esac
-vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
+if $test -z "$vendorlib_stem"; then
+	vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
+fi
 prefixvar=vendorlib
 . ./installprefix
 
@@ -8569,6 +8586,7 @@ EOM
 			  esac
 			  ;;
 		    *linux*|irix*|gnu*)  dflt="-shared $optimize" ;;
+		    sco_sv) dflt='-shared' ;;
 		    solaris) # See [perl #66604].
 			    # On Solaris 11, gcc -m64 on amd64
 			    # appears not to understand -G.  gcc versions at
@@ -8608,7 +8626,7 @@ EOM
 	esac
 	for thisflag in $ldflags; do
 	    case "$thisflag" in
-		-L*|-R*|-Wl,-R*)
+		-L*|-R*|-Wl,-R*|-Wl,-z*)
 		    case " $dflt " in
 			*" $thisflag "*) ;;
 			*) dflt="$dflt $thisflag" ;;
@@ -8864,7 +8882,7 @@ if "$useshrplib"; then
 	freebsd|minix|mirbsd|netbsd|openbsd|interix|dragonfly|bitrig)
 		xxx="-Wl,-R$shrpdir"
 		;;
-	bsdos|linux|irix*|dec_osf|gnu*|haiku)
+	bsdos|linux|irix*|dec_osf|gnu*|haiku|nto)
 		xxx="-Wl,-rpath,$shrpdir"
 		;;
 	hpux*)
@@ -8874,6 +8892,9 @@ if "$useshrplib"; then
 	cygwin)
 		# cygwin needs only ldlibpth
 		;;
+	sco_sv)
+		xxx="-Wl,-R$shrpdir"
+		;;
 	*)
 		tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
 		;;
@@ -9948,6 +9969,13 @@ esac
 : Check if we want perlio
 useperlio="$define"
 
+: Look for a hint-file generated 'call-back-unit'.  We need
+: to set some defaults for building perl in pkgsrc.
+if $test -f pkgsrc.cbu; then
+	echo "Setting pkgsrc-specific hints regarding compiler/linker flags..."
+	. ./pkgsrc.cbu
+fi
+
 : Set the vendorbin variables
 case "$vendorprefix" in
 '')	d_vendorbin="$undef"
@@ -20573,7 +20601,15 @@ RCAT(Rei,ser)
 ACAT(Cir,cus)
 EOCP
 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
-if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
+# yuck, what a hack.
+# MIPSPro compiler/preprocessor behaves differently if invoked on
+# stdin vs file.  Here we test for stdin, but lateron we use files.
+# So force it to work the way we know it does:
+if [ x"${OPSYS}" = x"IRIX" ]; then
+	echo "Hacking MIPSPro on file vs. stdin..." >&4
+	echo "We know we can catify or stringify, separately or together!"
+	cpp_stuff=42
+elif $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
 	echo "Oh!  Smells like ANSI's been here." >&4
 	echo "We can catify or stringify, separately or together!"
 	cpp_stuff=42
@@ -23519,6 +23555,18 @@ eval $inhdr
 set fenv.h i_fenv
 eval $inhdr
 
+: And really validate that it is OK to include it
+: On NetBSD 6.x non-amd64 non-i386 and non-sparc this fails
+cat > try.c <<EOCP
+#include <fenv.h>
+int main() { return 0; }
+EOCP
+set try
+if ! eval $compile_ok; then
+	echo "<fenv.h> found to be unusable, disabling" >&4
+	i_fenv=$undef
+fi
+
 : see if this is a fp.h system
 set fp.h i_fp
 eval $inhdr
