All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2 0/6] gnuconfig and csky updates
@ 2019-05-28 20:34 Thomas Petazzoni
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 1/6] package/lmbench: use UPDATE_CONFIG_HOOK instead of CONFIG_UPDATE Thomas Petazzoni
                   ` (5 more replies)
  0 siblings, 6 replies; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-28 20:34 UTC (permalink / raw)
  To: buildroot

Hello,

Here is a second iteration of the C-SKY updates, with a few more
changes on the gnuconfig side:

 - Some preparation commits that unify how non-autotools package
   update their gnuconfig files

 - The patch updating gnuconfig to a newer version now updates the
   gnuconfig version mentioned in support/gnuconfig/README.buildroot

 - The rest of the patch series is unchanged.

Thanks,

Thomas

Thomas Petazzoni (6):
  package/lmbench: use UPDATE_CONFIG_HOOK instead of CONFIG_UPDATE
  support/gnuconfig: update README.buildroot with reality
  support/gnuconfig: update to 2019-05-28
  toolchain/toolchain-external/toolchain-external-csky: new package
  configs/csky_gx6605s: use the C-SKY external toolchain package
  support/config-fragments/autobuild: add testing for the C-SKY
    architecture

 DEVELOPERS                                    |    1 +
 configs/csky_gx6605s_defconfig                |    9 +-
 package/lmbench/lmbench.mk                    |    3 +-
 .../config-fragments/autobuild/csky.config    |    3 +
 .../autobuild/toolchain-configs.csv           |    1 +
 support/gnuconfig/README.buildroot            |    4 +-
 support/gnuconfig/config.guess                |  836 +++---
 support/gnuconfig/config.sub                  | 2525 ++++++++---------
 toolchain/toolchain-external/Config.in        |    6 +
 .../toolchain-external-csky/Config.in         |   15 +
 .../toolchain-external-csky/Config.in.options |    9 +
 .../toolchain-external-csky.hash              |    2 +
 .../toolchain-external-csky.mk                |   11 +
 13 files changed, 1827 insertions(+), 1598 deletions(-)
 create mode 100644 support/config-fragments/autobuild/csky.config
 create mode 100644 toolchain/toolchain-external/toolchain-external-csky/Config.in
 create mode 100644 toolchain/toolchain-external/toolchain-external-csky/Config.in.options
 create mode 100644 toolchain/toolchain-external/toolchain-external-csky/toolchain-external-csky.hash
 create mode 100644 toolchain/toolchain-external/toolchain-external-csky/toolchain-external-csky.mk

-- 
2.21.0

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 1/6] package/lmbench: use UPDATE_CONFIG_HOOK instead of CONFIG_UPDATE
  2019-05-28 20:34 [Buildroot] [PATCH v2 0/6] gnuconfig and csky updates Thomas Petazzoni
@ 2019-05-28 20:34 ` Thomas Petazzoni
  2019-05-30 10:33   ` Peter Korsgaard
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 2/6] support/gnuconfig: update README.buildroot with reality Thomas Petazzoni
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-28 20:34 UTC (permalink / raw)
  To: buildroot

jimtcl, perl, usb_modeswitch and x264 are registering
UPDATE_CONFIG_HOOK as a post patch hook to get their gnuconfig files
updated. lmbench is the only package calling CONFIG_UPDATE directly,
so for consistency, let's make it use the same logic as jimtcl, perl,
usb_modeswitch and x264.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 package/lmbench/lmbench.mk | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/package/lmbench/lmbench.mk b/package/lmbench/lmbench.mk
index c52d6a5a39..2f3b19b5f8 100644
--- a/package/lmbench/lmbench.mk
+++ b/package/lmbench/lmbench.mk
@@ -18,8 +18,9 @@ LMBENCH_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc`
 LMBENCH_LDLIBS = `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc`
 endif
 
+LMBENCH_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK
+
 define LMBENCH_CONFIGURE_CMDS
-	$(call CONFIG_UPDATE,$(@D))
 	sed -i 's/CFLAGS=/CFLAGS+=/g' $(@D)/src/Makefile
 	sed -i 's/LDLIBS=/LDLIBS+=/g' $(@D)/scripts/build
 	sed -i '/cd .*doc/d' $(@D)/src/Makefile
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 2/6] support/gnuconfig: update README.buildroot with reality
  2019-05-28 20:34 [Buildroot] [PATCH v2 0/6] gnuconfig and csky updates Thomas Petazzoni
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 1/6] package/lmbench: use UPDATE_CONFIG_HOOK instead of CONFIG_UPDATE Thomas Petazzoni
@ 2019-05-28 20:34 ` Thomas Petazzoni
  2019-05-30 10:34   ` Peter Korsgaard
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28 Thomas Petazzoni
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-28 20:34 UTC (permalink / raw)
  To: buildroot

4 out of 5 packages who are not using autotools but needed their
gnuconfig files updated were not complying with the recommandation in
support/gnuconfig/README.buildroot. The fifth package was converted to
be like the others: use UPDATE_CONFIG_HOOK as a <pkg>_POST_PATCH_HOOKS
rather than calling the CONFIG_UPDATE macro directly.

Now that all packages are consistent, update the README.buildroot file
to match the reality.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 support/gnuconfig/README.buildroot | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/support/gnuconfig/README.buildroot b/support/gnuconfig/README.buildroot
index a71ed93010..7ba2a332a4 100644
--- a/support/gnuconfig/README.buildroot
+++ b/support/gnuconfig/README.buildroot
@@ -10,7 +10,7 @@ If for some reason your package does not use the autotools-package
 infrastructure, you can request the config.guess and/or config.sub
 files of your package to be updated by using:
 
-      $(call CONFIG_UPDATE,directory-of-your-package-sources)
+<pkg>_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK
 
 --- UPDATE ---
 GNU config is now managed in git, so to update:
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28
  2019-05-28 20:34 [Buildroot] [PATCH v2 0/6] gnuconfig and csky updates Thomas Petazzoni
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 1/6] package/lmbench: use UPDATE_CONFIG_HOOK instead of CONFIG_UPDATE Thomas Petazzoni
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 2/6] support/gnuconfig: update README.buildroot with reality Thomas Petazzoni
@ 2019-05-28 20:34 ` Thomas Petazzoni
  2019-05-30 10:36   ` Peter Korsgaard
                     ` (2 more replies)
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 4/6] toolchain/toolchain-external/toolchain-external-csky: new package Thomas Petazzoni
                   ` (2 subsequent siblings)
  5 siblings, 3 replies; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-28 20:34 UTC (permalink / raw)
  To: buildroot

This update includes support for the C-SKY architecture.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
Note: this was suggested by Peter for next, instead of just patching
the files to add csky support. It should be applied after
cherry-picking 910b431d6383cd1ce4cd9eeb0a8466cb977c3789 from master.
---
 support/gnuconfig/README.buildroot |    2 +-
 support/gnuconfig/config.guess     |  836 +++++----
 support/gnuconfig/config.sub       | 2525 ++++++++++++++--------------
 3 files changed, 1774 insertions(+), 1589 deletions(-)

diff --git a/support/gnuconfig/README.buildroot b/support/gnuconfig/README.buildroot
index 7ba2a332a4..115c9fd1e1 100644
--- a/support/gnuconfig/README.buildroot
+++ b/support/gnuconfig/README.buildroot
@@ -24,4 +24,4 @@ Currently no patches are needed, but they may be needed again in the
 future.
 
 The current Buildroot version is based on the Git commit
-dafd8e767ec87b90aac62f0fcedd11944c84b50a of the config.git repository.
+bad92f031d2d5d980389d2c833f1c218a57443e6 of the config.git repository.
diff --git a/support/gnuconfig/config.guess b/support/gnuconfig/config.guess
index c4bd827a7b..b40e17b137 100755
--- a/support/gnuconfig/config.guess
+++ b/support/gnuconfig/config.guess
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2016 Free Software Foundation, Inc.
+#   Copyright 1992-2019 Free Software Foundation, Inc.
 
-timestamp='2016-05-15'
+timestamp='2019-05-28'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2016-05-15'
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -27,7 +27,7 @@ timestamp='2016-05-15'
 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 #
 # Please send patches to <config-patches@gnu.org>.
 
@@ -39,7 +39,7 @@ Usage: $0 [OPTION]
 
 Output the configuration name of the system \`$me' is run on.
 
-Operation modes:
+Options:
   -h, --help         print this help, then exit
   -t, --time-stamp   print date of last modification, then exit
   -v, --version      print version number, then exit
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2016 Free Software Foundation, Inc.
+Copyright 1992-2019 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,8 +84,6 @@ if test $# != 0; then
   exit 1
 fi
 
-trap 'exit 1' 1 2 15
-
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
 # temporary files to be created and, as you can see below, it is a
@@ -96,34 +94,38 @@ trap 'exit 1' 1 2 15
 
 # Portable tmp directory creation inspired by the Autoconf team.
 
-set_cc_for_build='
-trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
-: ${TMPDIR=/tmp} ;
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
- { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
- { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
- { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
-dummy=$tmp/dummy ;
-tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
-case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,)    echo "int x;" > $dummy.c ;
-	for c in cc gcc c89 c99 ; do
-	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
-	     CC_FOR_BUILD="$c"; break ;
-	  fi ;
-	done ;
-	if test x"$CC_FOR_BUILD" = x ; then
-	  CC_FOR_BUILD=no_compiler_found ;
-	fi
-	;;
- ,,*)   CC_FOR_BUILD=$CC ;;
- ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ; set_cc_for_build= ;'
+tmp=
+# shellcheck disable=SC2172
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
+
+set_cc_for_build() {
+    : "${TMPDIR=/tmp}"
+    # shellcheck disable=SC2039
+    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+	{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
+	{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+	{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
+    dummy=$tmp/dummy
+    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
+	,,)    echo "int x;" > "$dummy.c"
+	       for driver in cc gcc c89 c99 ; do
+		   if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+		       CC_FOR_BUILD="$driver"
+		       break
+		   fi
+	       done
+	       if test x"$CC_FOR_BUILD" = x ; then
+		   CC_FOR_BUILD=no_compiler_found
+	       fi
+	       ;;
+	,,*)   CC_FOR_BUILD=$CC ;;
+	,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+    esac
+}
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi at noc.rutgers.edu 1994-08-24)
-if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+if test -f /.attbin/uname ; then
 	PATH=$PATH:/.attbin ; export PATH
 fi
 
@@ -132,14 +134,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-case "${UNAME_SYSTEM}" in
+case "$UNAME_SYSTEM" in
 Linux|GNU|GNU/*)
 	# If the system lacks a compiler, then just pick glibc.
 	# We could probably try harder.
 	LIBC=gnu
 
-	eval $set_cc_for_build
-	cat <<-EOF > $dummy.c
+	set_cc_for_build
+	cat <<-EOF > "$dummy.c"
 	#include <features.h>
 	#if defined(__UCLIBC__)
 	LIBC=uclibc
@@ -149,13 +151,20 @@ Linux|GNU|GNU/*)
 	LIBC=gnu
 	#endif
 	EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+
+	# If ldd exists, use it to detect musl libc.
+	if command -v ldd >/dev/null && \
+		ldd --version 2>&1 | grep -q ^musl
+	then
+	    LIBC=musl
+	fi
 	;;
 esac
 
 # Note: order is significant - the case branches are not exclusive.
 
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
     *:NetBSD:*:*)
 	# NetBSD (nbsd) targets should (where applicable) match one or
 	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -169,30 +178,30 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# portion of the name.  We always set it to "unknown".
 	sysctl="sysctl -n hw.machine_arch"
 	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-	    /sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || \
+	    "/sbin/$sysctl" 2>/dev/null || \
+	    "/usr/sbin/$sysctl" 2>/dev/null || \
 	    echo unknown)`
-	case "${UNAME_MACHINE_ARCH}" in
+	case "$UNAME_MACHINE_ARCH" in
 	    armeb) machine=armeb-unknown ;;
 	    arm*) machine=arm-unknown ;;
 	    sh3el) machine=shl-unknown ;;
 	    sh3eb) machine=sh-unknown ;;
 	    sh5el) machine=sh5le-unknown ;;
 	    earmv*)
-		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
-		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
-		machine=${arch}${endian}-unknown
+		arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+		endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+		machine="${arch}${endian}"-unknown
 		;;
-	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	    *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
 	esac
 	# The Operating System including object format, if it has switched
 	# to ELF recently (or will in the future) and ABI.
-	case "${UNAME_MACHINE_ARCH}" in
+	case "$UNAME_MACHINE_ARCH" in
 	    earm*)
 		os=netbsdelf
 		;;
 	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-		eval $set_cc_for_build
+		set_cc_for_build
 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
 			| grep -q __ELF__
 		then
@@ -208,10 +217,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		;;
 	esac
 	# Determine ABI tags.
-	case "${UNAME_MACHINE_ARCH}" in
+	case "$UNAME_MACHINE_ARCH" in
 	    earm*)
 		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
-		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+		abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
 		;;
 	esac
 	# The OS release
@@ -219,46 +228,55 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# thus, need a distinct triplet. However, they do not need
 	# kernel version information, so it can be replaced with a
 	# suitable tag, in the style of linux-gnu.
-	case "${UNAME_VERSION}" in
+	case "$UNAME_VERSION" in
 	    Debian*)
 		release='-gnu'
 		;;
 	    *)
-		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
+		release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
 		;;
 	esac
 	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
 	# contains redundant information, the shorter form:
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}${abi}"
+	echo "$machine-${os}${release}${abi-}"
 	exit ;;
     *:Bitrig:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+	echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
 	exit ;;
     *:OpenBSD:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
 	exit ;;
     *:LibertyBSD:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
-	echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
+	echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
+	exit ;;
+    *:MidnightBSD:*:*)
+	echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
 	exit ;;
     *:ekkoBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
 	exit ;;
     *:SolidBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
 	exit ;;
     macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
 	exit ;;
     *:MirBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
 	exit ;;
     *:Sortix:*:*)
-	echo ${UNAME_MACHINE}-unknown-sortix
+	echo "$UNAME_MACHINE"-unknown-sortix
+	exit ;;
+    *:Redox:*:*)
+	echo "$UNAME_MACHINE"-unknown-redox
 	exit ;;
+    mips:OSF1:*.*)
+        echo mips-dec-osf1
+        exit ;;
     alpha:OSF1:*:*)
 	case $UNAME_RELEASE in
 	*4.0)
@@ -310,28 +328,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# A Tn.n version is a released field test version.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+	echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
 	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
 	exitcode=$?
 	trap '' 0
 	exit $exitcode ;;
-    Alpha\ *:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# Should we change UNAME_MACHINE based on the output of uname instead
-	# of the specific Alpha model?
-	echo alpha-pc-interix
-	exit ;;
-    21064:Windows_NT:50:3)
-	echo alpha-dec-winnt3.5
-	exit ;;
     Amiga*:UNIX_System_V:4.0:*)
 	echo m68k-unknown-sysv4
 	exit ;;
     *:[Aa]miga[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-amigaos
+	echo "$UNAME_MACHINE"-unknown-amigaos
 	exit ;;
     *:[Mm]orph[Oo][Ss]:*:*)
-	echo ${UNAME_MACHINE}-unknown-morphos
+	echo "$UNAME_MACHINE"-unknown-morphos
 	exit ;;
     *:OS/390:*:*)
 	echo i370-ibm-openedition
@@ -343,7 +352,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	echo powerpc-ibm-os400
 	exit ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix${UNAME_RELEASE}
+	echo arm-acorn-riscix"$UNAME_RELEASE"
 	exit ;;
     arm*:riscos:*:*|arm*:RISCOS:*:*)
 	echo arm-unknown-riscos
@@ -370,19 +379,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	    sparc) echo sparc-icl-nx7; exit ;;
 	esac ;;
     s390x:SunOS:*:*)
-	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
 	exit ;;
     sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
 	exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
 	exit ;;
     i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-	echo i386-pc-auroraux${UNAME_RELEASE}
+	echo i386-pc-auroraux"$UNAME_RELEASE"
 	exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	eval $set_cc_for_build
+	set_cc_for_build
 	SUN_ARCH=i386
 	# If there is a compiler, see if it is configured for 64-bit objects.
 	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
@@ -395,13 +404,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		SUN_ARCH=x86_64
 	    fi
 	fi
-	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
 	exit ;;
     sun4*:SunOS:6*:*)
 	# According to config.sub, this is the proper way to canonicalize
 	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
 	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
 	exit ;;
     sun4*:SunOS:*:*)
 	case "`/usr/bin/arch -k`" in
@@ -410,25 +419,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		;;
 	esac
 	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
 	exit ;;
     sun3*:SunOS:*:*)
-	echo m68k-sun-sunos${UNAME_RELEASE}
+	echo m68k-sun-sunos"$UNAME_RELEASE"
 	exit ;;
     sun*:*:4.2BSD:*)
 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
+	test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
 	case "`/bin/arch`" in
 	    sun3)
-		echo m68k-sun-sunos${UNAME_RELEASE}
+		echo m68k-sun-sunos"$UNAME_RELEASE"
 		;;
 	    sun4)
-		echo sparc-sun-sunos${UNAME_RELEASE}
+		echo sparc-sun-sunos"$UNAME_RELEASE"
 		;;
 	esac
 	exit ;;
     aushp:SunOS:*:*)
-	echo sparc-auspex-sunos${UNAME_RELEASE}
+	echo sparc-auspex-sunos"$UNAME_RELEASE"
 	exit ;;
     # The situation for MiNT is a little confusing.  The machine name
     # can be virtually everything (everything which is not
@@ -439,44 +448,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint"$UNAME_RELEASE"
 	exit ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint"$UNAME_RELEASE"
 	exit ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-	echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint"$UNAME_RELEASE"
 	exit ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-	echo m68k-milan-mint${UNAME_RELEASE}
+	echo m68k-milan-mint"$UNAME_RELEASE"
 	exit ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-	echo m68k-hades-mint${UNAME_RELEASE}
+	echo m68k-hades-mint"$UNAME_RELEASE"
 	exit ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-	echo m68k-unknown-mint${UNAME_RELEASE}
+	echo m68k-unknown-mint"$UNAME_RELEASE"
 	exit ;;
     m68k:machten:*:*)
-	echo m68k-apple-machten${UNAME_RELEASE}
+	echo m68k-apple-machten"$UNAME_RELEASE"
 	exit ;;
     powerpc:machten:*:*)
-	echo powerpc-apple-machten${UNAME_RELEASE}
+	echo powerpc-apple-machten"$UNAME_RELEASE"
 	exit ;;
     RISC*:Mach:*:*)
 	echo mips-dec-mach_bsd4.3
 	exit ;;
     RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix${UNAME_RELEASE}
+	echo mips-dec-ultrix"$UNAME_RELEASE"
 	exit ;;
     VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix${UNAME_RELEASE}
+	echo vax-dec-ultrix"$UNAME_RELEASE"
 	exit ;;
     2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix${UNAME_RELEASE}
+	echo clipper-intergraph-clix"$UNAME_RELEASE"
 	exit ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
+	set_cc_for_build
+	sed 's/^	//' << EOF > "$dummy.c"
 #ifdef __cplusplus
 #include <stdio.h>  /* for printf() prototype */
 	int main (int argc, char *argv[]) {
@@ -485,23 +494,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 #endif
 	#if defined (host_mips) && defined (MIPSEB)
 	#if defined (SYSTYPE_SYSV)
-	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	  printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
 	#endif
 	#if defined (SYSTYPE_SVR4)
-	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	  printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
 	#endif
 	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
-	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	  printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
 	#endif
 	#endif
 	  exit (-1);
 	}
 EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c &&
-	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
-	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
+	  dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
 	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos${UNAME_RELEASE}
+	echo mips-mips-riscos"$UNAME_RELEASE"
 	exit ;;
     Motorola:PowerMAX_OS:*:*)
 	echo powerpc-motorola-powermax
@@ -527,17 +536,17 @@ EOF
     AViiON:dgux:*:*)
 	# DG/UX returns AViiON for all architectures
 	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
 	then
-	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
+	       [ "$TARGET_BINARY_INTERFACE"x = x ]
 	    then
-		echo m88k-dg-dgux${UNAME_RELEASE}
+		echo m88k-dg-dgux"$UNAME_RELEASE"
 	    else
-		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+		echo m88k-dg-dguxbcs"$UNAME_RELEASE"
 	    fi
 	else
-	    echo i586-dg-dgux${UNAME_RELEASE}
+	    echo i586-dg-dgux"$UNAME_RELEASE"
 	fi
 	exit ;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
@@ -554,7 +563,7 @@ EOF
 	echo m68k-tektronix-bsd
 	exit ;;
     *:IRIX*:*:*)
-	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
 	exit ;;
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
 	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
@@ -566,14 +575,14 @@ EOF
 	if [ -x /usr/bin/oslevel ] ; then
 		IBM_REV=`/usr/bin/oslevel`
 	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
 	fi
-	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
 	exit ;;
     *:AIX:2:3)
 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-		eval $set_cc_for_build
-		sed 's/^		//' << EOF >$dummy.c
+		set_cc_for_build
+		sed 's/^		//' << EOF > "$dummy.c"
 		#include <sys/systemcfg.h>
 
 		main()
@@ -584,7 +593,7 @@ EOF
 			exit(0);
 			}
 EOF
-		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
 		then
 			echo "$SYSTEM_NAME"
 		else
@@ -598,7 +607,7 @@ EOF
 	exit ;;
     *:AIX:*:[4567])
 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
-	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+	if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
 		IBM_ARCH=rs6000
 	else
 		IBM_ARCH=powerpc
@@ -607,18 +616,18 @@ EOF
 		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
 			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
 	else
-		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
 	fi
-	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
 	exit ;;
     *:AIX:*:*)
 	echo rs6000-ibm-aix
 	exit ;;
-    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
 	echo romp-ibm-bsd4.4
 	exit ;;
     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
 	exit ;;                             # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
 	echo rs6000-bull-bosx
@@ -633,28 +642,28 @@ EOF
 	echo m68k-hp-bsd4.4
 	exit ;;
     9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	case "${UNAME_MACHINE}" in
-	    9000/31? )            HP_ARCH=m68000 ;;
-	    9000/[34]?? )         HP_ARCH=m68k ;;
+	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+	case "$UNAME_MACHINE" in
+	    9000/31?)            HP_ARCH=m68000 ;;
+	    9000/[34]??)         HP_ARCH=m68k ;;
 	    9000/[678][0-9][0-9])
 		if [ -x /usr/bin/getconf ]; then
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
 		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-		    case "${sc_cpu_version}" in
+		    case "$sc_cpu_version" in
 		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
 		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
 		      532)                      # CPU_PA_RISC2_0
-			case "${sc_kernel_bits}" in
+			case "$sc_kernel_bits" in
 			  32) HP_ARCH=hppa2.0n ;;
 			  64) HP_ARCH=hppa2.0w ;;
 			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
 			esac ;;
 		    esac
 		fi
-		if [ "${HP_ARCH}" = "" ]; then
-		    eval $set_cc_for_build
-		    sed 's/^		//' << EOF >$dummy.c
+		if [ "$HP_ARCH" = "" ]; then
+		    set_cc_for_build
+		    sed 's/^		//' << EOF > "$dummy.c"
 
 		#define _HPUX_SOURCE
 		#include <stdlib.h>
@@ -687,13 +696,13 @@ EOF
 		    exit (0);
 		}
 EOF
-		    (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
 		fi ;;
 	esac
-	if [ ${HP_ARCH} = hppa2.0w ]
+	if [ "$HP_ARCH" = hppa2.0w ]
 	then
-	    eval $set_cc_for_build
+	    set_cc_for_build
 
 	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
 	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
@@ -712,15 +721,15 @@ EOF
 		HP_ARCH=hppa64
 	    fi
 	fi
-	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
 	exit ;;
     ia64:HP-UX:*:*)
-	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux${HPUX_REV}
+	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux"$HPUX_REV"
 	exit ;;
     3050*:HI-UX:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
+	set_cc_for_build
+	sed 's/^	//' << EOF > "$dummy.c"
 	#include <unistd.h>
 	int
 	main ()
@@ -745,11 +754,11 @@ EOF
 	  exit (0);
 	}
 EOF
-	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
 		{ echo "$SYSTEM_NAME"; exit; }
 	echo unknown-hitachi-hiuxwe2
 	exit ;;
-    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
 	echo hppa1.1-hp-bsd
 	exit ;;
     9000/8??:4.3bsd:*:*)
@@ -758,7 +767,7 @@ EOF
     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
 	echo hppa1.0-hp-mpeix
 	exit ;;
-    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
 	echo hppa1.1-hp-osf
 	exit ;;
     hp8??:OSF1:*:*)
@@ -766,9 +775,9 @@ EOF
 	exit ;;
     i*86:OSF1:*:*)
 	if [ -x /usr/sbin/sysversion ] ; then
-	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	    echo "$UNAME_MACHINE"-unknown-osf1mk
 	else
-	    echo ${UNAME_MACHINE}-unknown-osf1
+	    echo "$UNAME_MACHINE"-unknown-osf1
 	fi
 	exit ;;
     parisc*:Lites*:*:*)
@@ -793,127 +802,120 @@ EOF
 	echo c4-convex-bsd
 	exit ;;
     CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
     CRAY*[A-Z]90:*:*:*)
-	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
 	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
 	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
 	      -e 's/\.[^.]*$/.X/'
 	exit ;;
     CRAY*TS:*:*:*)
-	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
     CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
     CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
     *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
 	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
 	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
 	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
     5000:UNIX_System_V:4.*:*)
 	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+	FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
 	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
 	exit ;;
     sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	echo sparc-unknown-bsdi"$UNAME_RELEASE"
 	exit ;;
     *:BSD/OS:*:*)
-	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
+	exit ;;
+    arm:FreeBSD:*:*)
+	UNAME_PROCESSOR=`uname -p`
+	set_cc_for_build
+	if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_PCS_VFP
+	then
+	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+	else
+	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+	fi
 	exit ;;
     *:FreeBSD:*:*)
 	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	case ${UNAME_PROCESSOR} in
+	case "$UNAME_PROCESSOR" in
 	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+		UNAME_PROCESSOR=x86_64 ;;
+	    i386)
+		UNAME_PROCESSOR=i586 ;;
 	esac
+	echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
 	exit ;;
     i*:CYGWIN*:*)
-	echo ${UNAME_MACHINE}-pc-cygwin
+	echo "$UNAME_MACHINE"-pc-cygwin
 	exit ;;
     *:MINGW64*:*)
-	echo ${UNAME_MACHINE}-pc-mingw64
+	echo "$UNAME_MACHINE"-pc-mingw64
 	exit ;;
     *:MINGW*:*)
-	echo ${UNAME_MACHINE}-pc-mingw32
+	echo "$UNAME_MACHINE"-pc-mingw32
 	exit ;;
     *:MSYS*:*)
-	echo ${UNAME_MACHINE}-pc-msys
-	exit ;;
-    i*:windows32*:*)
-	# uname -m includes "-pc" on this system.
-	echo ${UNAME_MACHINE}-mingw32
+	echo "$UNAME_MACHINE"-pc-msys
 	exit ;;
     i*:PW*:*)
-	echo ${UNAME_MACHINE}-pc-pw32
+	echo "$UNAME_MACHINE"-pc-pw32
 	exit ;;
     *:Interix*:*)
-	case ${UNAME_MACHINE} in
+	case "$UNAME_MACHINE" in
 	    x86)
-		echo i586-pc-interix${UNAME_RELEASE}
+		echo i586-pc-interix"$UNAME_RELEASE"
 		exit ;;
 	    authenticamd | genuineintel | EM64T)
-		echo x86_64-unknown-interix${UNAME_RELEASE}
+		echo x86_64-unknown-interix"$UNAME_RELEASE"
 		exit ;;
 	    IA64)
-		echo ia64-unknown-interix${UNAME_RELEASE}
+		echo ia64-unknown-interix"$UNAME_RELEASE"
 		exit ;;
 	esac ;;
-    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
-	echo i${UNAME_MACHINE}-pc-mks
-	exit ;;
-    8664:Windows_NT:*)
-	echo x86_64-pc-mks
-	exit ;;
-    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
-	# How do we know it's Interix rather than the generic POSIX subsystem?
-	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
-	# UNAME_MACHINE based on the output of uname instead of i386?
-	echo i586-pc-interix
-	exit ;;
     i*:UWIN*:*)
-	echo ${UNAME_MACHINE}-pc-uwin
+	echo "$UNAME_MACHINE"-pc-uwin
 	exit ;;
     amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-unknown-cygwin
-	exit ;;
-    p*:CYGWIN*:*)
-	echo powerpcle-unknown-cygwin
+	echo x86_64-pc-cygwin
 	exit ;;
     prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
 	exit ;;
     *:GNU:*:*)
 	# the GNU system
-	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
 	exit ;;
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+	echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
 	exit ;;
-    i*86:Minix:*:*)
-	echo ${UNAME_MACHINE}-pc-minix
+    *:Minix:*:*)
+	echo "$UNAME_MACHINE"-unknown-minix
 	exit ;;
     aarch64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     aarch64_be:Linux:*:*)
 	UNAME_MACHINE=aarch64_be
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     alpha:Linux:*:*)
 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -927,134 +929,168 @@ EOF
 	esac
 	objdump --private-headers /bin/sh | grep -q ld.so.1
 	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     arc:Linux:*:* | arceb:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     arm*:Linux:*:*)
-	eval $set_cc_for_build
+	set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_EABI__
 	then
-	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	else
 	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
 		| grep -q __ARM_PCS_VFP
 	    then
-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
 	    else
-		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
 	    fi
 	fi
 	exit ;;
     avr32*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     cris:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
 	exit ;;
     crisv32:Linux:*:*)
-	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
 	exit ;;
     e2k:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     frv:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     hexagon:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     i*86:Linux:*:*)
-	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
 	exit ;;
     ia64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     k1om:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     m32r*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     m68*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
+	set_cc_for_build
+	IS_GLIBC=0
+	test x"${LIBC}" = xgnu && IS_GLIBC=1
+	sed 's/^	//' << EOF > "$dummy.c"
 	#undef CPU
-	#undef ${UNAME_MACHINE}
-	#undef ${UNAME_MACHINE}el
+	#undef mips
+	#undef mipsel
+	#undef mips64
+	#undef mips64el
+	#if ${IS_GLIBC} && defined(_ABI64)
+	LIBCABI=gnuabi64
+	#else
+	#if ${IS_GLIBC} && defined(_ABIN32)
+	LIBCABI=gnuabin32
+	#else
+	LIBCABI=${LIBC}
+	#endif
+	#endif
+
+	#if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+	CPU=mipsisa64r6
+	#else
+	#if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+	CPU=mipsisa32r6
+	#else
+	#if defined(__mips64)
+	CPU=mips64
+	#else
+	CPU=mips
+	#endif
+	#endif
+	#endif
+
 	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=${UNAME_MACHINE}el
+	MIPS_ENDIAN=el
 	#else
 	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=${UNAME_MACHINE}
+	MIPS_ENDIAN=
 	#else
-	CPU=
+	MIPS_ENDIAN=
 	#endif
 	#endif
 EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+	test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
 	;;
+    mips64el:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	exit ;;
     openrisc*:Linux:*:*)
-	echo or1k-unknown-linux-${LIBC}
+	echo or1k-unknown-linux-"$LIBC"
 	exit ;;
     or32:Linux:*:* | or1k*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     padre:Linux:*:*)
-	echo sparc-unknown-linux-${LIBC}
+	echo sparc-unknown-linux-"$LIBC"
 	exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-${LIBC}
+	echo hppa64-unknown-linux-"$LIBC"
 	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
-	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
-	  *)    echo hppa-unknown-linux-${LIBC} ;;
+	  PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
+	  PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
+	  *)    echo hppa-unknown-linux-"$LIBC" ;;
 	esac
 	exit ;;
     ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-${LIBC}
+	echo powerpc64-unknown-linux-"$LIBC"
 	exit ;;
     ppc:Linux:*:*)
-	echo powerpc-unknown-linux-${LIBC}
+	echo powerpc-unknown-linux-"$LIBC"
 	exit ;;
     ppc64le:Linux:*:*)
-	echo powerpc64le-unknown-linux-${LIBC}
+	echo powerpc64le-unknown-linux-"$LIBC"
 	exit ;;
     ppcle:Linux:*:*)
-	echo powerpcle-unknown-linux-${LIBC}
+	echo powerpcle-unknown-linux-"$LIBC"
+	exit ;;
+    riscv32:Linux:*:* | riscv64:Linux:*:*)
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+	echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
 	exit ;;
     sh64*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     sh*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     tile*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     vax:Linux:*:*)
-	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+	echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
 	exit ;;
     x86_64:Linux:*:*)
-	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
 	exit ;;
     xtensa*:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
 	exit ;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1068,34 +1104,34 @@ EOF
 	# I am not positive that other SVR4 systems won't match this,
 	# I just have to hope.  -- rms.
 	# Use sysv4.2uw... so that sysv4* matches it.
-	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
 	exit ;;
     i*86:OS/2:*:*)
 	# If we were able to find `uname', then EMX Unix compatibility
 	# is probably installed.
-	echo ${UNAME_MACHINE}-pc-os2-emx
+	echo "$UNAME_MACHINE"-pc-os2-emx
 	exit ;;
     i*86:XTS-300:*:STOP)
-	echo ${UNAME_MACHINE}-unknown-stop
+	echo "$UNAME_MACHINE"-unknown-stop
 	exit ;;
     i*86:atheos:*:*)
-	echo ${UNAME_MACHINE}-unknown-atheos
+	echo "$UNAME_MACHINE"-unknown-atheos
 	exit ;;
     i*86:syllable:*:*)
-	echo ${UNAME_MACHINE}-pc-syllable
+	echo "$UNAME_MACHINE"-pc-syllable
 	exit ;;
     i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-unknown-lynxos${UNAME_RELEASE}
+	echo i386-unknown-lynxos"$UNAME_RELEASE"
 	exit ;;
     i*86:*DOS:*:*)
-	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	echo "$UNAME_MACHINE"-pc-msdosdjgpp
 	exit ;;
-    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
-	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+    i*86:*:4.*:*)
+	UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+		echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
 	else
-		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+		echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
 	fi
 	exit ;;
     i*86:*:5:[678]*)
@@ -1105,12 +1141,12 @@ EOF
 	    *Pentium)	     UNAME_MACHINE=i586 ;;
 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
 	esac
-	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
 	exit ;;
     i*86:*:3.2:*)
 	if test -f /usr/options/cb.name; then
 		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+		echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
 	elif /bin/uname -X 2>/dev/null >/dev/null ; then
 		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
 		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1120,9 +1156,9 @@ EOF
 			&& UNAME_MACHINE=i686
 		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
 			&& UNAME_MACHINE=i686
-		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+		echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
 	else
-		echo ${UNAME_MACHINE}-pc-sysv32
+		echo "$UNAME_MACHINE"-pc-sysv32
 	fi
 	exit ;;
     pc:*:*:*)
@@ -1142,9 +1178,9 @@ EOF
 	exit ;;
     i860:*:4.*:*) # i860-SVR4
 	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	  echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
 	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	  echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
 	fi
 	exit ;;
     mini*:CTIX:SYS*5:*)
@@ -1164,9 +1200,9 @@ EOF
 	test -r /etc/.relid \
 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	  && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+	  && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
 	  && { echo i486-ncr-sysv4; exit; } ;;
@@ -1175,28 +1211,28 @@ EOF
 	test -r /etc/.relid \
 	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
 	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	    && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	    && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
 	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+	    && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	echo m68k-unknown-lynxos"$UNAME_RELEASE"
 	exit ;;
     mc68030:UNIX_System_V:4.*:*)
 	echo m68k-atari-sysv4
 	exit ;;
     TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	echo sparc-unknown-lynxos"$UNAME_RELEASE"
 	exit ;;
     rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	echo rs6000-unknown-lynxos"$UNAME_RELEASE"
 	exit ;;
     PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	echo powerpc-unknown-lynxos"$UNAME_RELEASE"
 	exit ;;
     SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv${UNAME_RELEASE}
+	echo mips-dde-sysv"$UNAME_RELEASE"
 	exit ;;
     RM*:ReliantUNIX-*:*:*)
 	echo mips-sni-sysv4
@@ -1207,7 +1243,7 @@ EOF
     *:SINIX-*:*:*)
 	if uname -p 2>/dev/null >/dev/null ; then
 		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo ${UNAME_MACHINE}-sni-sysv4
+		echo "$UNAME_MACHINE"-sni-sysv4
 	else
 		echo ns32k-sni-sysv
 	fi
@@ -1227,23 +1263,23 @@ EOF
 	exit ;;
     i*86:VOS:*:*)
 	# From Paul.Green at stratus.com.
-	echo ${UNAME_MACHINE}-stratus-vos
+	echo "$UNAME_MACHINE"-stratus-vos
 	exit ;;
     *:VOS:*:*)
 	# From Paul.Green at stratus.com.
 	echo hppa1.1-stratus-vos
 	exit ;;
     mc68*:A/UX:*:*)
-	echo m68k-apple-aux${UNAME_RELEASE}
+	echo m68k-apple-aux"$UNAME_RELEASE"
 	exit ;;
     news*:NEWS-OS:6*:*)
 	echo mips-sony-newsos6
 	exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
 	if [ -d /usr/nec ]; then
-		echo mips-nec-sysv${UNAME_RELEASE}
+		echo mips-nec-sysv"$UNAME_RELEASE"
 	else
-		echo mips-unknown-sysv${UNAME_RELEASE}
+		echo mips-unknown-sysv"$UNAME_RELEASE"
 	fi
 	exit ;;
     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
@@ -1262,49 +1298,56 @@ EOF
 	echo x86_64-unknown-haiku
 	exit ;;
     SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux${UNAME_RELEASE}
+	echo sx4-nec-superux"$UNAME_RELEASE"
 	exit ;;
     SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux${UNAME_RELEASE}
+	echo sx5-nec-superux"$UNAME_RELEASE"
 	exit ;;
     SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux${UNAME_RELEASE}
+	echo sx6-nec-superux"$UNAME_RELEASE"
 	exit ;;
     SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux${UNAME_RELEASE}
+	echo sx7-nec-superux"$UNAME_RELEASE"
 	exit ;;
     SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux${UNAME_RELEASE}
+	echo sx8-nec-superux"$UNAME_RELEASE"
 	exit ;;
     SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux${UNAME_RELEASE}
+	echo sx8r-nec-superux"$UNAME_RELEASE"
 	exit ;;
     SX-ACE:SUPER-UX:*:*)
-	echo sxace-nec-superux${UNAME_RELEASE}
+	echo sxace-nec-superux"$UNAME_RELEASE"
 	exit ;;
     Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	echo powerpc-apple-rhapsody"$UNAME_RELEASE"
 	exit ;;
     *:Rhapsody:*:*)
-	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
 	exit ;;
     *:Darwin:*:*)
-	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-	eval $set_cc_for_build
-	if test "$UNAME_PROCESSOR" = unknown ; then
-	    UNAME_PROCESSOR=powerpc
-	fi
-	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+	set_cc_for_build
+	UNAME_PROCESSOR=`uname -p`
+	case $UNAME_PROCESSOR in
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
 	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
 		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		    (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-		    grep IS_64BIT_ARCH >/dev/null
+		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		       grep IS_64BIT_ARCH >/dev/null
 		then
 		    case $UNAME_PROCESSOR in
 			i386) UNAME_PROCESSOR=x86_64 ;;
 			powerpc) UNAME_PROCESSOR=powerpc64 ;;
 		    esac
 		fi
+		# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+		if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		       grep IS_PPC >/dev/null
+		then
+		    UNAME_PROCESSOR=powerpc
+		fi
 	    fi
 	elif test "$UNAME_PROCESSOR" = i386 ; then
 	    # Avoid executing cc on OS X 10.9, as it ships with a stub
@@ -1315,7 +1358,7 @@ EOF
 	    # that Apple uses in portable devices.
 	    UNAME_PROCESSOR=x86_64
 	fi
-	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
 	exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
 	UNAME_PROCESSOR=`uname -p`
@@ -1323,19 +1366,25 @@ EOF
 		UNAME_PROCESSOR=i386
 		UNAME_MACHINE=pc
 	fi
-	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
 	exit ;;
     *:QNX:*:4*)
 	echo i386-pc-qnx
 	exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-	echo neo-tandem-nsk${UNAME_RELEASE}
+    NEO-*:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk"$UNAME_RELEASE"
 	exit ;;
     NSE-*:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk${UNAME_RELEASE}
+	echo nse-tandem-nsk"$UNAME_RELEASE"
 	exit ;;
-    NSR-?:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk${UNAME_RELEASE}
+    NSR-*:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk"$UNAME_RELEASE"
+	exit ;;
+    NSV-*:NONSTOP_KERNEL:*:*)
+	echo nsv-tandem-nsk"$UNAME_RELEASE"
+	exit ;;
+    NSX-*:NONSTOP_KERNEL:*:*)
+	echo nsx-tandem-nsk"$UNAME_RELEASE"
 	exit ;;
     *:NonStop-UX:*:*)
 	echo mips-compaq-nonstopux
@@ -1344,18 +1393,19 @@ EOF
 	echo bs2000-siemens-sysv
 	exit ;;
     DS/*:UNIX_System_V:*:*)
-	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
 	exit ;;
     *:Plan9:*:*)
 	# "uname -m" is not consistent, so use $cputype instead. 386
 	# is converted to i386 for consistency with other x86
 	# operating systems.
+	# shellcheck disable=SC2154
 	if test "$cputype" = 386; then
 	    UNAME_MACHINE=i386
 	else
 	    UNAME_MACHINE="$cputype"
 	fi
-	echo ${UNAME_MACHINE}-unknown-plan9
+	echo "$UNAME_MACHINE"-unknown-plan9
 	exit ;;
     *:TOPS-10:*:*)
 	echo pdp10-unknown-tops10
@@ -1376,14 +1426,14 @@ EOF
 	echo pdp10-unknown-its
 	exit ;;
     SEI:*:*:SEIUX)
-	echo mips-sei-seiux${UNAME_RELEASE}
+	echo mips-sei-seiux"$UNAME_RELEASE"
 	exit ;;
     *:DragonFly:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
 	exit ;;
     *:*VMS:*:*)
 	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "${UNAME_MACHINE}" in
+	case "$UNAME_MACHINE" in
 	    A*) echo alpha-dec-vms ; exit ;;
 	    I*) echo ia64-dec-vms ; exit ;;
 	    V*) echo vax-dec-vms ; exit ;;
@@ -1392,32 +1442,184 @@ EOF
 	echo i386-pc-xenix
 	exit ;;
     i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
+	echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
 	exit ;;
     i*86:rdos:*:*)
-	echo ${UNAME_MACHINE}-pc-rdos
+	echo "$UNAME_MACHINE"-pc-rdos
 	exit ;;
     i*86:AROS:*:*)
-	echo ${UNAME_MACHINE}-pc-aros
+	echo "$UNAME_MACHINE"-pc-aros
 	exit ;;
     x86_64:VMkernel:*:*)
-	echo ${UNAME_MACHINE}-unknown-esx
+	echo "$UNAME_MACHINE"-unknown-esx
 	exit ;;
     amd64:Isilon\ OneFS:*:*)
 	echo x86_64-unknown-onefs
 	exit ;;
+    *:Unleashed:*:*)
+	echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
+	exit ;;
+esac
+
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+  "4"
+#else
+  ""
+#endif
+  ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+  struct utsname un;
+
+  uname(&un);
+  if (strncmp(un.version, "V2", 2) == 0) {
+    printf ("i386-sequent-ptx2\n"); exit (0);
+  }
+  if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+    printf ("i386-sequent-ptx1\n"); exit (0);
+  }
+  printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+  printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+  printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+  printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+  printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+  struct utsname un;
+  uname (&un);
+  printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+  printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+  struct utsname *un;
+  uname (&un);
+  printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+  printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
+echo "$0: unable to guess system type" >&2
+
+case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+    mips:Linux | mips64:Linux)
+	# If we got here on MIPS GNU/Linux, output extra information.
+	cat >&2 <<EOF
+
+NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
+the system type. Please install a C compiler and try again.
+EOF
+	;;
 esac
 
 cat >&2 <<EOF
-$0: unable to guess system type
 
 This script (version $timestamp), has failed to recognize the
-operating system you are using. If your script is old, overwrite
-config.guess and config.sub with the latest versions from:
+operating system you are using. If your script is old, overwrite *all*
+copies of config.guess and config.sub with the latest versions from:
 
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
 If $0 has already been updated, send the following data and any
 information you think might be pertinent to config-patches@gnu.org to
@@ -1440,16 +1642,16 @@ hostinfo               = `(hostinfo) 2>/dev/null`
 /usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
 
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM  = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM  = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
 EOF
 
 exit 1
 
 # Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
diff --git a/support/gnuconfig/config.sub b/support/gnuconfig/config.sub
index 6d86a1e2f7..5b158ac41c 100755
--- a/support/gnuconfig/config.sub
+++ b/support/gnuconfig/config.sub
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2016 Free Software Foundation, Inc.
+#   Copyright 1992-2019 Free Software Foundation, Inc.
 
-timestamp='2016-05-10'
+timestamp='2019-05-23'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2016-05-10'
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, see <https://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -33,7 +33,7 @@ timestamp='2016-05-10'
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
@@ -57,7 +57,7 @@ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
 
 Canonicalize a configuration name.
 
-Operation modes:
+Options:
   -h, --help         print this help, then exit
   -t, --time-stamp   print date of last modification, then exit
   -v, --version      print version number, then exit
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2016 Free Software Foundation, Inc.
+Copyright 1992-2019 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -89,12 +89,12 @@ while test $# -gt 0 ; do
     - )	# Use stdin as input.
        break ;;
     -* )
-       echo "$me: invalid option $1$help"
+       echo "$me: invalid option $1$help" >&2
        exit 1 ;;
 
     *local*)
        # First pass through any local machine types.
-       echo $1
+       echo "$1"
        exit ;;
 
     * )
@@ -110,1234 +110,1167 @@ case $# in
     exit 1;;
 esac
 
-# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
-# Here we must recognize all the valid KERNEL-OS combinations.
-maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
-case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
-  kopensolaris*-gnu* | \
-  storm-chaos* | os2-emx* | rtmk-nova*)
-    os=-$maybe_os
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
-    ;;
-  android-linux)
-    os=-linux-android
-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-    ;;
-  *)
-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
-    if [ $basic_machine != $1 ]
-    then os=`echo $1 | sed 's/.*-/-/'`
-    else os=; fi
-    ;;
-esac
+# Split fields of configuration type
+# shellcheck disable=SC2162
+IFS="-" read field1 field2 field3 field4 <<EOF
+$1
+EOF
 
-### Let's recognize common machines as not being operating systems so
-### that things like config.sub decstation-3100 work.  We also
-### recognize some manufacturers as not being operating systems, so we
-### can provide default operating systems below.
-case $os in
-	-sun*os*)
-		# Prevent following clause from handling this invalid input.
-		;;
-	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray | -microblaze*)
-		os=
-		basic_machine=$1
-		;;
-	-bluegene*)
-		os=-cnk
-		;;
-	-sim | -cisco | -oki | -wec | -winbond)
-		os=
-		basic_machine=$1
-		;;
-	-scout)
-		;;
-	-wrs)
-		os=-vxworks
-		basic_machine=$1
-		;;
-	-chorusos*)
-		os=-chorusos
-		basic_machine=$1
-		;;
-	-chorusrdb)
-		os=-chorusrdb
-		basic_machine=$1
-		;;
-	-hiux*)
-		os=-hiuxwe2
-		;;
-	-sco6)
-		os=-sco5v6
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5)
-		os=-sco3.2v5
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco4)
-		os=-sco3.2v4
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco3.2v[4-9]*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-sco*)
-		os=-sco3.2v2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-udk*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-isc)
-		os=-isc2.2
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-clix*)
-		basic_machine=clipper-intergraph
-		;;
-	-isc*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
-		;;
-	-lynx*178)
-		os=-lynxos178
-		;;
-	-lynx*5)
-		os=-lynxos5
-		;;
-	-lynx*)
-		os=-lynxos
+# Separate into logical components for further validation
+case $1 in
+	*-*-*-*-*)
+		echo Invalid configuration \`"$1"\': more than four components >&2
+		exit 1
 		;;
-	-ptx*)
-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+	*-*-*-*)
+		basic_machine=$field1-$field2
+		os=$field3-$field4
 		;;
-	-windowsnt*)
-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+	*-*-*)
+		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+		# parts
+		maybe_os=$field2-$field3
+		case $maybe_os in
+			nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
+			| linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+			| storm-chaos* | os2-emx* | rtmk-nova*)
+				basic_machine=$field1
+				os=$maybe_os
+				;;
+			android-linux)
+				basic_machine=$field1-unknown
+				os=linux-android
+				;;
+			*)
+				basic_machine=$field1-$field2
+				os=$field3
+				;;
+		esac
 		;;
-	-psos*)
-		os=-psos
+	*-*)
+		# A lone config we happen to match not fitting any pattern
+		case $field1-$field2 in
+			decstation-3100)
+				basic_machine=mips-dec
+				os=
+				;;
+			*-*)
+				# Second component is usually, but not always the OS
+				case $field2 in
+					# Prevent following clause from handling this valid os
+					sun*os*)
+						basic_machine=$field1
+						os=$field2
+						;;
+					# Manufacturers
+					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
+					| convergent* | ncr* | news | 32* | 3600* | 3100* \
+					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+					| ultra | tti* | harris | dolphin | highlevel | gould \
+					| cbm | ns | masscomp | apple | axis | knuth | cray \
+					| microblaze* | sim | cisco \
+					| oki | wec | wrs | winbond)
+						basic_machine=$field1-$field2
+						os=
+						;;
+					*)
+						basic_machine=$field1
+						os=$field2
+						;;
+				esac
+			;;
+		esac
 		;;
-	-mint | -mint[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
+	*)
+		# Convert single-component short-hands not valid as part of
+		# multi-component configurations.
+		case $field1 in
+			386bsd)
+				basic_machine=i386-pc
+				os=bsd
+				;;
+			a29khif)
+				basic_machine=a29k-amd
+				os=udi
+				;;
+			adobe68k)
+				basic_machine=m68010-adobe
+				os=scout
+				;;
+			alliant)
+				basic_machine=fx80-alliant
+				os=
+				;;
+			altos | altos3068)
+				basic_machine=m68k-altos
+				os=
+				;;
+			am29k)
+				basic_machine=a29k-none
+				os=bsd
+				;;
+			amdahl)
+				basic_machine=580-amdahl
+				os=sysv
+				;;
+			amiga)
+				basic_machine=m68k-unknown
+				os=
+				;;
+			amigaos | amigados)
+				basic_machine=m68k-unknown
+				os=amigaos
+				;;
+			amigaunix | amix)
+				basic_machine=m68k-unknown
+				os=sysv4
+				;;
+			apollo68)
+				basic_machine=m68k-apollo
+				os=sysv
+				;;
+			apollo68bsd)
+				basic_machine=m68k-apollo
+				os=bsd
+				;;
+			aros)
+				basic_machine=i386-pc
+				os=aros
+				;;
+			aux)
+				basic_machine=m68k-apple
+				os=aux
+				;;
+			balance)
+				basic_machine=ns32k-sequent
+				os=dynix
+				;;
+			blackfin)
+				basic_machine=bfin-unknown
+				os=linux
+				;;
+			cegcc)
+				basic_machine=arm-unknown
+				os=cegcc
+				;;
+			convex-c1)
+				basic_machine=c1-convex
+				os=bsd
+				;;
+			convex-c2)
+				basic_machine=c2-convex
+				os=bsd
+				;;
+			convex-c32)
+				basic_machine=c32-convex
+				os=bsd
+				;;
+			convex-c34)
+				basic_machine=c34-convex
+				os=bsd
+				;;
+			convex-c38)
+				basic_machine=c38-convex
+				os=bsd
+				;;
+			cray)
+				basic_machine=j90-cray
+				os=unicos
+				;;
+			crds | unos)
+				basic_machine=m68k-crds
+				os=
+				;;
+			da30)
+				basic_machine=m68k-da30
+				os=
+				;;
+			decstation | pmax | pmin | dec3100 | decstatn)
+				basic_machine=mips-dec
+				os=
+				;;
+			delta88)
+				basic_machine=m88k-motorola
+				os=sysv3
+				;;
+			dicos)
+				basic_machine=i686-pc
+				os=dicos
+				;;
+			djgpp)
+				basic_machine=i586-pc
+				os=msdosdjgpp
+				;;
+			ebmon29k)
+				basic_machine=a29k-amd
+				os=ebmon
+				;;
+			es1800 | OSE68k | ose68k | ose | OSE)
+				basic_machine=m68k-ericsson
+				os=ose
+				;;
+			gmicro)
+				basic_machine=tron-gmicro
+				os=sysv
+				;;
+			go32)
+				basic_machine=i386-pc
+				os=go32
+				;;
+			h8300hms)
+				basic_machine=h8300-hitachi
+				os=hms
+				;;
+			h8300xray)
+				basic_machine=h8300-hitachi
+				os=xray
+				;;
+			h8500hms)
+				basic_machine=h8500-hitachi
+				os=hms
+				;;
+			harris)
+				basic_machine=m88k-harris
+				os=sysv3
+				;;
+			hp300)
+				basic_machine=m68k-hp
+				;;
+			hp300bsd)
+				basic_machine=m68k-hp
+				os=bsd
+				;;
+			hp300hpux)
+				basic_machine=m68k-hp
+				os=hpux
+				;;
+			hppaosf)
+				basic_machine=hppa1.1-hp
+				os=osf
+				;;
+			hppro)
+				basic_machine=hppa1.1-hp
+				os=proelf
+				;;
+			i386mach)
+				basic_machine=i386-mach
+				os=mach
+				;;
+			vsta)
+				basic_machine=i386-pc
+				os=vsta
+				;;
+			isi68 | isi)
+				basic_machine=m68k-isi
+				os=sysv
+				;;
+			m68knommu)
+				basic_machine=m68k-unknown
+				os=linux
+				;;
+			magnum | m3230)
+				basic_machine=mips-mips
+				os=sysv
+				;;
+			merlin)
+				basic_machine=ns32k-utek
+				os=sysv
+				;;
+			mingw64)
+				basic_machine=x86_64-pc
+				os=mingw64
+				;;
+			mingw32)
+				basic_machine=i686-pc
+				os=mingw32
+				;;
+			mingw32ce)
+				basic_machine=arm-unknown
+				os=mingw32ce
+				;;
+			monitor)
+				basic_machine=m68k-rom68k
+				os=coff
+				;;
+			morphos)
+				basic_machine=powerpc-unknown
+				os=morphos
+				;;
+			moxiebox)
+				basic_machine=moxie-unknown
+				os=moxiebox
+				;;
+			msdos)
+				basic_machine=i386-pc
+				os=msdos
+				;;
+			msys)
+				basic_machine=i686-pc
+				os=msys
+				;;
+			mvs)
+				basic_machine=i370-ibm
+				os=mvs
+				;;
+			nacl)
+				basic_machine=le32-unknown
+				os=nacl
+				;;
+			ncr3000)
+				basic_machine=i486-ncr
+				os=sysv4
+				;;
+			netbsd386)
+				basic_machine=i386-pc
+				os=netbsd
+				;;
+			netwinder)
+				basic_machine=armv4l-rebel
+				os=linux
+				;;
+			news | news700 | news800 | news900)
+				basic_machine=m68k-sony
+				os=newsos
+				;;
+			news1000)
+				basic_machine=m68030-sony
+				os=newsos
+				;;
+			necv70)
+				basic_machine=v70-nec
+				os=sysv
+				;;
+			nh3000)
+				basic_machine=m68k-harris
+				os=cxux
+				;;
+			nh[45]000)
+				basic_machine=m88k-harris
+				os=cxux
+				;;
+			nindy960)
+				basic_machine=i960-intel
+				os=nindy
+				;;
+			mon960)
+				basic_machine=i960-intel
+				os=mon960
+				;;
+			nonstopux)
+				basic_machine=mips-compaq
+				os=nonstopux
+				;;
+			os400)
+				basic_machine=powerpc-ibm
+				os=os400
+				;;
+			OSE68000 | ose68000)
+				basic_machine=m68000-ericsson
+				os=ose
+				;;
+			os68k)
+				basic_machine=m68k-none
+				os=os68k
+				;;
+			paragon)
+				basic_machine=i860-intel
+				os=osf
+				;;
+			parisc)
+				basic_machine=hppa-unknown
+				os=linux
+				;;
+			pw32)
+				basic_machine=i586-unknown
+				os=pw32
+				;;
+			rdos | rdos64)
+				basic_machine=x86_64-pc
+				os=rdos
+				;;
+			rdos32)
+				basic_machine=i386-pc
+				os=rdos
+				;;
+			rom68k)
+				basic_machine=m68k-rom68k
+				os=coff
+				;;
+			sa29200)
+				basic_machine=a29k-amd
+				os=udi
+				;;
+			sei)
+				basic_machine=mips-sei
+				os=seiux
+				;;
+			sequent)
+				basic_machine=i386-sequent
+				os=
+				;;
+			sps7)
+				basic_machine=m68k-bull
+				os=sysv2
+				;;
+			st2000)
+				basic_machine=m68k-tandem
+				os=
+				;;
+			stratus)
+				basic_machine=i860-stratus
+				os=sysv4
+				;;
+			sun2)
+				basic_machine=m68000-sun
+				os=
+				;;
+			sun2os3)
+				basic_machine=m68000-sun
+				os=sunos3
+				;;
+			sun2os4)
+				basic_machine=m68000-sun
+				os=sunos4
+				;;
+			sun3)
+				basic_machine=m68k-sun
+				os=
+				;;
+			sun3os3)
+				basic_machine=m68k-sun
+				os=sunos3
+				;;
+			sun3os4)
+				basic_machine=m68k-sun
+				os=sunos4
+				;;
+			sun4)
+				basic_machine=sparc-sun
+				os=
+				;;
+			sun4os3)
+				basic_machine=sparc-sun
+				os=sunos3
+				;;
+			sun4os4)
+				basic_machine=sparc-sun
+				os=sunos4
+				;;
+			sun4sol2)
+				basic_machine=sparc-sun
+				os=solaris2
+				;;
+			sun386 | sun386i | roadrunner)
+				basic_machine=i386-sun
+				os=
+				;;
+			sv1)
+				basic_machine=sv1-cray
+				os=unicos
+				;;
+			symmetry)
+				basic_machine=i386-sequent
+				os=dynix
+				;;
+			t3e)
+				basic_machine=alphaev5-cray
+				os=unicos
+				;;
+			t90)
+				basic_machine=t90-cray
+				os=unicos
+				;;
+			toad1)
+				basic_machine=pdp10-xkl
+				os=tops20
+				;;
+			tpf)
+				basic_machine=s390x-ibm
+				os=tpf
+				;;
+			udi29k)
+				basic_machine=a29k-amd
+				os=udi
+				;;
+			ultra3)
+				basic_machine=a29k-nyu
+				os=sym1
+				;;
+			v810 | necv810)
+				basic_machine=v810-nec
+				os=none
+				;;
+			vaxv)
+				basic_machine=vax-dec
+				os=sysv
+				;;
+			vms)
+				basic_machine=vax-dec
+				os=vms
+				;;
+			vxworks960)
+				basic_machine=i960-wrs
+				os=vxworks
+				;;
+			vxworks68)
+				basic_machine=m68k-wrs
+				os=vxworks
+				;;
+			vxworks29k)
+				basic_machine=a29k-wrs
+				os=vxworks
+				;;
+			xbox)
+				basic_machine=i686-pc
+				os=mingw32
+				;;
+			ymp)
+				basic_machine=ymp-cray
+				os=unicos
+				;;
+			*)
+				basic_machine=$1
+				os=
+				;;
+		esac
 		;;
 esac
 
-# Decode aliases for certain CPU-COMPANY combinations.
+# Decode 1-component or ad-hoc basic machines
 case $basic_machine in
-	# Recognize the basic CPU types without company name.
-	# Some are omitted here because they have special meanings below.
-	1750a | 580 \
-	| a29k \
-	| aarch64 | aarch64_be \
-	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
-	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
-	| am33_2.0 \
-	| arc | arceb \
-	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
-	| avr | avr32 \
-	| ba \
-	| be32 | be64 \
-	| bfin \
-	| c4x | c8051 | clipper \
-	| d10v | d30v | dlx | dsp16xx \
-	| e2k | epiphany \
-	| fido | fr30 | frv | ft32 \
-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-	| hexagon \
-	| i370 | i860 | i960 | ia64 \
-	| ip2k | iq2000 \
-	| k1om \
-	| le32 | le64 \
-	| lm32 \
-	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
-	| mips | mipsbe | mipseb | mipsel | mipsle \
-	| mips16 \
-	| mips64 | mips64el \
-	| mips64octeon | mips64octeonel \
-	| mips64orion | mips64orionel \
-	| mips64r5900 | mips64r5900el \
-	| mips64vr | mips64vrel \
-	| mips64vr4100 | mips64vr4100el \
-	| mips64vr4300 | mips64vr4300el \
-	| mips64vr5000 | mips64vr5000el \
-	| mips64vr5900 | mips64vr5900el \
-	| mipsisa32 | mipsisa32el \
-	| mipsisa32r2 | mipsisa32r2el \
-	| mipsisa32r6 | mipsisa32r6el \
-	| mipsisa64 | mipsisa64el \
-	| mipsisa64r2 | mipsisa64r2el \
-	| mipsisa64r6 | mipsisa64r6el \
-	| mipsisa64sb1 | mipsisa64sb1el \
-	| mipsisa64sr71k | mipsisa64sr71kel \
-	| mipsr5900 | mipsr5900el \
-	| mipstx39 | mipstx39el \
-	| mn10200 | mn10300 \
-	| moxie \
-	| mt \
-	| msp430 \
-	| nds32 | nds32le | nds32be \
-	| nios | nios2 | nios2eb | nios2el \
-	| ns16k | ns32k \
-	| open8 | or1k | or1knd | or32 \
-	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle \
-	| pyramid \
-	| riscv32 | riscv64 \
-	| rl78 | rx \
-	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
-	| sh64 | sh64le \
-	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
-	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu \
-	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-	| ubicom32 \
-	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
-	| visium \
-	| we32k \
-	| x86 | xc16x | xstormy16 | xtensa \
-	| z8k | z80)
-		basic_machine=$basic_machine-unknown
-		;;
-	c54x)
-		basic_machine=tic54x-unknown
-		;;
-	c55x)
-		basic_machine=tic55x-unknown
-		;;
-	c6x)
-		basic_machine=tic6x-unknown
-		;;
-	leon|leon[3-9])
-		basic_machine=sparc-$basic_machine
-		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
-		basic_machine=$basic_machine-unknown
-		os=-none
+	# Here we handle the default manufacturer of certain CPU types.  It is in
+	# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		cpu=hppa1.1
+		vendor=winbond
 		;;
-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+	op50n)
+		cpu=hppa1.1
+		vendor=oki
 		;;
-	ms1)
-		basic_machine=mt-unknown
+	op60c)
+		cpu=hppa1.1
+		vendor=oki
 		;;
-
-	strongarm | thumb | xscale)
-		basic_machine=arm-unknown
+	ibm*)
+		cpu=i370
+		vendor=ibm
 		;;
-	xgate)
-		basic_machine=$basic_machine-unknown
-		os=-none
+	orion105)
+		cpu=clipper
+		vendor=highlevel
 		;;
-	xscaleeb)
-		basic_machine=armeb-unknown
+	mac | mpw | mac-mpw)
+		cpu=m68k
+		vendor=apple
 		;;
-
-	xscaleel)
-		basic_machine=armel-unknown
+	pmac | pmac-mpw)
+		cpu=powerpc
+		vendor=apple
 		;;
 
-	# We use `pc' rather than `unknown'
-	# because (1) that's what they normally are, and
-	# (2) the word "unknown" tends to confuse beginning users.
-	i*86 | x86_64)
-	  basic_machine=$basic_machine-pc
-	  ;;
-	# Object if more than one company name word.
-	*-*-*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
-		;;
-	# Recognize the basic CPU types with company name.
-	580-* \
-	| a29k-* \
-	| aarch64-* | aarch64_be-* \
-	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
-	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
-	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
-	| avr-* | avr32-* \
-	| ba-* \
-	| be32-* | be64-* \
-	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* \
-	| c8051-* | clipper-* | craynv-* | cydra-* \
-	| d10v-* | d30v-* | dlx-* \
-	| e2k-* | elxsi-* \
-	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
-	| h8300-* | h8500-* \
-	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-	| hexagon-* \
-	| i*86-* | i860-* | i960-* | ia64-* \
-	| ip2k-* | iq2000-* \
-	| k1om-* \
-	| le32-* | le64-* \
-	| lm32-* \
-	| m32c-* | m32r-* | m32rle-* \
-	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
-	| microblaze-* | microblazeel-* \
-	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
-	| mips16-* \
-	| mips64-* | mips64el-* \
-	| mips64octeon-* | mips64octeonel-* \
-	| mips64orion-* | mips64orionel-* \
-	| mips64r5900-* | mips64r5900el-* \
-	| mips64vr-* | mips64vrel-* \
-	| mips64vr4100-* | mips64vr4100el-* \
-	| mips64vr4300-* | mips64vr4300el-* \
-	| mips64vr5000-* | mips64vr5000el-* \
-	| mips64vr5900-* | mips64vr5900el-* \
-	| mipsisa32-* | mipsisa32el-* \
-	| mipsisa32r2-* | mipsisa32r2el-* \
-	| mipsisa32r6-* | mipsisa32r6el-* \
-	| mipsisa64-* | mipsisa64el-* \
-	| mipsisa64r2-* | mipsisa64r2el-* \
-	| mipsisa64r6-* | mipsisa64r6el-* \
-	| mipsisa64sb1-* | mipsisa64sb1el-* \
-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
-	| mipsr5900-* | mipsr5900el-* \
-	| mipstx39-* | mipstx39el-* \
-	| mmix-* \
-	| mt-* \
-	| msp430-* \
-	| nds32-* | nds32le-* | nds32be-* \
-	| nios-* | nios2-* | nios2eb-* | nios2el-* \
-	| none-* | np1-* | ns16k-* | ns32k-* \
-	| open8-* \
-	| or1k*-* \
-	| orion-* \
-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
-	| pyramid-* \
-	| riscv32-* | riscv64-* \
-	| rl78-* | romp-* | rs6000-* | rx-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
-	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
-	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
-	| tahoe-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-	| tile*-* \
-	| tron-* \
-	| ubicom32-* \
-	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-	| vax-* \
-	| visium-* \
-	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* \
-	| xstormy16-* | xtensa*-* \
-	| ymp-* \
-	| z8k-* | z80-*)
-		;;
-	# Recognize the basic CPU types without company name, with glob match.
-	xtensa*)
-		basic_machine=$basic_machine-unknown
-		;;
 	# Recognize the various machine names and aliases which stand
 	# for a CPU type and a company and sometimes even an OS.
-	386bsd)
-		basic_machine=i386-unknown
-		os=-bsd
-		;;
 	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-		basic_machine=m68000-att
+		cpu=m68000
+		vendor=att
 		;;
 	3b*)
-		basic_machine=we32k-att
-		;;
-	a29khif)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	abacus)
-		basic_machine=abacus-unknown
-		;;
-	adobe68k)
-		basic_machine=m68010-adobe
-		os=-scout
-		;;
-	alliant | fx80)
-		basic_machine=fx80-alliant
-		;;
-	altos | altos3068)
-		basic_machine=m68k-altos
-		;;
-	am29k)
-		basic_machine=a29k-none
-		os=-bsd
-		;;
-	amd64)
-		basic_machine=x86_64-pc
-		;;
-	amd64-*)
-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	amdahl)
-		basic_machine=580-amdahl
-		os=-sysv
-		;;
-	amiga | amiga-*)
-		basic_machine=m68k-unknown
-		;;
-	amigaos | amigados)
-		basic_machine=m68k-unknown
-		os=-amigaos
-		;;
-	amigaunix | amix)
-		basic_machine=m68k-unknown
-		os=-sysv4
-		;;
-	apollo68)
-		basic_machine=m68k-apollo
-		os=-sysv
-		;;
-	apollo68bsd)
-		basic_machine=m68k-apollo
-		os=-bsd
-		;;
-	aros)
-		basic_machine=i386-pc
-		os=-aros
-		;;
-	asmjs)
-		basic_machine=asmjs-unknown
-		;;
-	aux)
-		basic_machine=m68k-apple
-		os=-aux
-		;;
-	balance)
-		basic_machine=ns32k-sequent
-		os=-dynix
-		;;
-	blackfin)
-		basic_machine=bfin-unknown
-		os=-linux
-		;;
-	blackfin-*)
-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
+		cpu=we32k
+		vendor=att
 		;;
 	bluegene*)
-		basic_machine=powerpc-ibm
-		os=-cnk
-		;;
-	c54x-*)
-		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c55x-*)
-		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c6x-*)
-		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	c90)
-		basic_machine=c90-cray
-		os=-unicos
-		;;
-	cegcc)
-		basic_machine=arm-unknown
-		os=-cegcc
-		;;
-	convex-c1)
-		basic_machine=c1-convex
-		os=-bsd
-		;;
-	convex-c2)
-		basic_machine=c2-convex
-		os=-bsd
-		;;
-	convex-c32)
-		basic_machine=c32-convex
-		os=-bsd
-		;;
-	convex-c34)
-		basic_machine=c34-convex
-		os=-bsd
-		;;
-	convex-c38)
-		basic_machine=c38-convex
-		os=-bsd
-		;;
-	cray | j90)
-		basic_machine=j90-cray
-		os=-unicos
-		;;
-	craynv)
-		basic_machine=craynv-cray
-		os=-unicosmp
-		;;
-	cr16 | cr16-*)
-		basic_machine=cr16-unknown
-		os=-elf
-		;;
-	crds | unos)
-		basic_machine=m68k-crds
-		;;
-	crisv32 | crisv32-* | etraxfs*)
-		basic_machine=crisv32-axis
-		;;
-	cris | cris-* | etrax*)
-		basic_machine=cris-axis
-		;;
-	crx)
-		basic_machine=crx-unknown
-		os=-elf
-		;;
-	da30 | da30-*)
-		basic_machine=m68k-da30
-		;;
-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
-		basic_machine=mips-dec
+		cpu=powerpc
+		vendor=ibm
+		os=cnk
 		;;
 	decsystem10* | dec10*)
-		basic_machine=pdp10-dec
-		os=-tops10
+		cpu=pdp10
+		vendor=dec
+		os=tops10
 		;;
 	decsystem20* | dec20*)
-		basic_machine=pdp10-dec
-		os=-tops20
+		cpu=pdp10
+		vendor=dec
+		os=tops20
 		;;
 	delta | 3300 | motorola-3300 | motorola-delta \
 	      | 3300-motorola | delta-motorola)
-		basic_machine=m68k-motorola
-		;;
-	delta88)
-		basic_machine=m88k-motorola
-		os=-sysv3
-		;;
-	dicos)
-		basic_machine=i686-pc
-		os=-dicos
+		cpu=m68k
+		vendor=motorola
 		;;
-	djgpp)
-		basic_machine=i586-pc
-		os=-msdosdjgpp
-		;;
-	dpx20 | dpx20-*)
-		basic_machine=rs6000-bull
-		os=-bosx
-		;;
-	dpx2* | dpx2*-bull)
-		basic_machine=m68k-bull
-		os=-sysv3
-		;;
-	ebmon29k)
-		basic_machine=a29k-amd
-		os=-ebmon
-		;;
-	elxsi)
-		basic_machine=elxsi-elxsi
-		os=-bsd
+	dpx2*)
+		cpu=m68k
+		vendor=bull
+		os=sysv3
 		;;
 	encore | umax | mmax)
-		basic_machine=ns32k-encore
+		cpu=ns32k
+		vendor=encore
 		;;
-	es1800 | OSE68k | ose68k | ose | OSE)
-		basic_machine=m68k-ericsson
-		os=-ose
+	elxsi)
+		cpu=elxsi
+		vendor=elxsi
+		os=${os:-bsd}
 		;;
 	fx2800)
-		basic_machine=i860-alliant
+		cpu=i860
+		vendor=alliant
 		;;
 	genix)
-		basic_machine=ns32k-ns
-		;;
-	gmicro)
-		basic_machine=tron-gmicro
-		os=-sysv
-		;;
-	go32)
-		basic_machine=i386-pc
-		os=-go32
+		cpu=ns32k
+		vendor=ns
 		;;
 	h3050r* | hiux*)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	h8300hms)
-		basic_machine=h8300-hitachi
-		os=-hms
-		;;
-	h8300xray)
-		basic_machine=h8300-hitachi
-		os=-xray
-		;;
-	h8500hms)
-		basic_machine=h8500-hitachi
-		os=-hms
-		;;
-	harris)
-		basic_machine=m88k-harris
-		os=-sysv3
-		;;
-	hp300-*)
-		basic_machine=m68k-hp
-		;;
-	hp300bsd)
-		basic_machine=m68k-hp
-		os=-bsd
-		;;
-	hp300hpux)
-		basic_machine=m68k-hp
-		os=-hpux
+		cpu=hppa1.1
+		vendor=hitachi
+		os=hiuxwe2
 		;;
 	hp3k9[0-9][0-9] | hp9[0-9][0-9])
-		basic_machine=hppa1.0-hp
+		cpu=hppa1.0
+		vendor=hp
 		;;
 	hp9k2[0-9][0-9] | hp9k31[0-9])
-		basic_machine=m68000-hp
+		cpu=m68000
+		vendor=hp
 		;;
 	hp9k3[2-9][0-9])
-		basic_machine=m68k-hp
+		cpu=m68k
+		vendor=hp
 		;;
 	hp9k6[0-9][0-9] | hp6[0-9][0-9])
-		basic_machine=hppa1.0-hp
+		cpu=hppa1.0
+		vendor=hp
 		;;
 	hp9k7[0-79][0-9] | hp7[0-79][0-9])
-		basic_machine=hppa1.1-hp
+		cpu=hppa1.1
+		vendor=hp
 		;;
 	hp9k78[0-9] | hp78[0-9])
 		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
+		cpu=hppa1.1
+		vendor=hp
 		;;
 	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
 		# FIXME: really hppa2.0-hp
-		basic_machine=hppa1.1-hp
+		cpu=hppa1.1
+		vendor=hp
 		;;
 	hp9k8[0-9][13679] | hp8[0-9][13679])
-		basic_machine=hppa1.1-hp
+		cpu=hppa1.1
+		vendor=hp
 		;;
 	hp9k8[0-9][0-9] | hp8[0-9][0-9])
-		basic_machine=hppa1.0-hp
-		;;
-	hppa-next)
-		os=-nextstep3
-		;;
-	hppaosf)
-		basic_machine=hppa1.1-hp
-		os=-osf
-		;;
-	hppro)
-		basic_machine=hppa1.1-hp
-		os=-proelf
-		;;
-	i370-ibm* | ibm*)
-		basic_machine=i370-ibm
+		cpu=hppa1.0
+		vendor=hp
 		;;
 	i*86v32)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv32
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
+		vendor=pc
+		os=sysv32
 		;;
 	i*86v4*)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv4
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
+		vendor=pc
+		os=sysv4
 		;;
 	i*86v)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-sysv
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
+		vendor=pc
+		os=sysv
 		;;
 	i*86sol2)
-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
-		os=-solaris2
-		;;
-	i386mach)
-		basic_machine=i386-mach
-		os=-mach
+		cpu=`echo "$1" | sed -e 's/86.*/86/'`
+		vendor=pc
+		os=solaris2
 		;;
-	i386-vsta | vsta)
-		basic_machine=i386-unknown
-		os=-vsta
+	j90 | j90-cray)
+		cpu=j90
+		vendor=cray
+		os=${os:-unicos}
 		;;
 	iris | iris4d)
-		basic_machine=mips-sgi
+		cpu=mips
+		vendor=sgi
 		case $os in
-		    -irix*)
+		    irix*)
 			;;
 		    *)
-			os=-irix4
+			os=irix4
 			;;
 		esac
 		;;
-	isi68 | isi)
-		basic_machine=m68k-isi
-		os=-sysv
-		;;
-	leon-*|leon[3-9]-*)
-		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
-		;;
-	m68knommu)
-		basic_machine=m68k-unknown
-		os=-linux
-		;;
-	m68knommu-*)
-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
-		;;
-	m88k-omron*)
-		basic_machine=m88k-omron
-		;;
-	magnum | m3230)
-		basic_machine=mips-mips
-		os=-sysv
-		;;
-	merlin)
-		basic_machine=ns32k-utek
-		os=-sysv
-		;;
-	microblaze*)
-		basic_machine=microblaze-xilinx
-		;;
-	mingw64)
-		basic_machine=x86_64-pc
-		os=-mingw64
-		;;
-	mingw32)
-		basic_machine=i686-pc
-		os=-mingw32
-		;;
-	mingw32ce)
-		basic_machine=arm-unknown
-		os=-mingw32ce
-		;;
 	miniframe)
-		basic_machine=m68000-convergent
-		;;
-	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
-		basic_machine=m68k-atari
-		os=-mint
-		;;
-	mips3*-*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
-		;;
-	mips3*)
-		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
-		;;
-	monitor)
-		basic_machine=m68k-rom68k
-		os=-coff
-		;;
-	morphos)
-		basic_machine=powerpc-unknown
-		os=-morphos
-		;;
-	moxiebox)
-		basic_machine=moxie-unknown
-		os=-moxiebox
-		;;
-	msdos)
-		basic_machine=i386-pc
-		os=-msdos
-		;;
-	ms1-*)
-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
-		;;
-	msys)
-		basic_machine=i686-pc
-		os=-msys
-		;;
-	mvs)
-		basic_machine=i370-ibm
-		os=-mvs
+		cpu=m68000
+		vendor=convergent
 		;;
-	nacl)
-		basic_machine=le32-unknown
-		os=-nacl
-		;;
-	ncr3000)
-		basic_machine=i486-ncr
-		os=-sysv4
-		;;
-	netbsd386)
-		basic_machine=i386-unknown
-		os=-netbsd
-		;;
-	netwinder)
-		basic_machine=armv4l-rebel
-		os=-linux
-		;;
-	news | news700 | news800 | news900)
-		basic_machine=m68k-sony
-		os=-newsos
-		;;
-	news1000)
-		basic_machine=m68030-sony
-		os=-newsos
+	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		cpu=m68k
+		vendor=atari
+		os=mint
 		;;
 	news-3600 | risc-news)
-		basic_machine=mips-sony
-		os=-newsos
-		;;
-	necv70)
-		basic_machine=v70-nec
-		os=-sysv
+		cpu=mips
+		vendor=sony
+		os=newsos
 		;;
-	next | m*-next )
-		basic_machine=m68k-next
+	next | m*-next)
+		cpu=m68k
+		vendor=next
 		case $os in
-		    -nextstep* )
+		    openstep*)
+		        ;;
+		    nextstep*)
 			;;
-		    -ns2*)
-		      os=-nextstep2
+		    ns2*)
+		      os=nextstep2
 			;;
 		    *)
-		      os=-nextstep3
+		      os=nextstep3
 			;;
 		esac
 		;;
-	nh3000)
-		basic_machine=m68k-harris
-		os=-cxux
-		;;
-	nh[45]000)
-		basic_machine=m88k-harris
-		os=-cxux
-		;;
-	nindy960)
-		basic_machine=i960-intel
-		os=-nindy
-		;;
-	mon960)
-		basic_machine=i960-intel
-		os=-mon960
-		;;
-	nonstopux)
-		basic_machine=mips-compaq
-		os=-nonstopux
-		;;
 	np1)
-		basic_machine=np1-gould
-		;;
-	neo-tandem)
-		basic_machine=neo-tandem
-		;;
-	nse-tandem)
-		basic_machine=nse-tandem
-		;;
-	nsr-tandem)
-		basic_machine=nsr-tandem
+		cpu=np1
+		vendor=gould
 		;;
 	op50n-* | op60c-*)
-		basic_machine=hppa1.1-oki
-		os=-proelf
-		;;
-	openrisc | openrisc-*)
-		basic_machine=or32-unknown
-		;;
-	os400)
-		basic_machine=powerpc-ibm
-		os=-os400
-		;;
-	OSE68000 | ose68000)
-		basic_machine=m68000-ericsson
-		os=-ose
-		;;
-	os68k)
-		basic_machine=m68k-none
-		os=-os68k
+		cpu=hppa1.1
+		vendor=oki
+		os=proelf
 		;;
 	pa-hitachi)
-		basic_machine=hppa1.1-hitachi
-		os=-hiuxwe2
-		;;
-	paragon)
-		basic_machine=i860-intel
-		os=-osf
-		;;
-	parisc)
-		basic_machine=hppa-unknown
-		os=-linux
-		;;
-	parisc-*)
-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
-		os=-linux
+		cpu=hppa1.1
+		vendor=hitachi
+		os=hiuxwe2
 		;;
 	pbd)
-		basic_machine=sparc-tti
+		cpu=sparc
+		vendor=tti
 		;;
 	pbb)
-		basic_machine=m68k-tti
-		;;
-	pc532 | pc532-*)
-		basic_machine=ns32k-pc532
+		cpu=m68k
+		vendor=tti
 		;;
-	pc98)
-		basic_machine=i386-pc
-		;;
-	pc98-*)
-		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium | p5 | k5 | k6 | nexgen | viac3)
-		basic_machine=i586-pc
-		;;
-	pentiumpro | p6 | 6x86 | athlon | athlon_*)
-		basic_machine=i686-pc
-		;;
-	pentiumii | pentium2 | pentiumiii | pentium3)
-		basic_machine=i686-pc
-		;;
-	pentium4)
-		basic_machine=i786-pc
-		;;
-	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	pentium4-*)
-		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+	pc532)
+		cpu=ns32k
+		vendor=pc532
 		;;
 	pn)
-		basic_machine=pn-gould
+		cpu=pn
+		vendor=gould
 		;;
-	power)	basic_machine=power-ibm
-		;;
-	ppc | ppcbe)	basic_machine=powerpc-unknown
-		;;
-	ppc-* | ppcbe-*)
-		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
-		basic_machine=powerpcle-unknown
-		;;
-	ppcle-* | powerpclittle-*)
-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64)	basic_machine=powerpc64-unknown
-		;;
-	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
-		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
-		basic_machine=powerpc64le-unknown
-		;;
-	ppc64le-* | powerpc64little-*)
-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+	power)
+		cpu=power
+		vendor=ibm
 		;;
 	ps2)
-		basic_machine=i386-ibm
-		;;
-	pw32)
-		basic_machine=i586-unknown
-		os=-pw32
-		;;
-	rdos | rdos64)
-		basic_machine=x86_64-pc
-		os=-rdos
-		;;
-	rdos32)
-		basic_machine=i386-pc
-		os=-rdos
-		;;
-	rom68k)
-		basic_machine=m68k-rom68k
-		os=-coff
+		cpu=i386
+		vendor=ibm
 		;;
 	rm[46]00)
-		basic_machine=mips-siemens
+		cpu=mips
+		vendor=siemens
 		;;
 	rtpc | rtpc-*)
-		basic_machine=romp-ibm
-		;;
-	s390 | s390-*)
-		basic_machine=s390-ibm
-		;;
-	s390x | s390x-*)
-		basic_machine=s390x-ibm
+		cpu=romp
+		vendor=ibm
 		;;
-	sa29200)
-		basic_machine=a29k-amd
-		os=-udi
-		;;
-	sb1)
-		basic_machine=mipsisa64sb1-unknown
+	sde)
+		cpu=mipsisa32
+		vendor=sde
+		os=${os:-elf}
 		;;
-	sb1el)
-		basic_machine=mipsisa64sb1el-unknown
+	simso-wrs)
+		cpu=sparclite
+		vendor=wrs
+		os=vxworks
 		;;
-	sde)
-		basic_machine=mipsisa32-sde
-		os=-elf
+	tower | tower-32)
+		cpu=m68k
+		vendor=ncr
 		;;
-	sei)
-		basic_machine=mips-sei
-		os=-seiux
+	vpp*|vx|vx-*)
+		cpu=f301
+		vendor=fujitsu
 		;;
-	sequent)
-		basic_machine=i386-sequent
+	w65)
+		cpu=w65
+		vendor=wdc
 		;;
-	sh)
-		basic_machine=sh-hitachi
-		os=-hms
+	w89k-*)
+		cpu=hppa1.1
+		vendor=winbond
+		os=proelf
 		;;
-	sh5el)
-		basic_machine=sh5le-unknown
+	none)
+		cpu=none
+		vendor=none
 		;;
-	sh64)
-		basic_machine=sh64-unknown
+	leon|leon[3-9])
+		cpu=sparc
+		vendor=$basic_machine
 		;;
-	sparclite-wrs | simso-wrs)
-		basic_machine=sparclite-wrs
-		os=-vxworks
+	leon-*|leon[3-9]-*)
+		cpu=sparc
+		vendor=`echo "$basic_machine" | sed 's/-.*//'`
 		;;
-	sps7)
-		basic_machine=m68k-bull
-		os=-sysv2
+
+	*-*)
+		# shellcheck disable=SC2162
+		IFS="-" read cpu vendor <<EOF
+$basic_machine
+EOF
 		;;
-	spur)
-		basic_machine=spur-unknown
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+		cpu=$basic_machine
+		vendor=pc
 		;;
-	st2000)
-		basic_machine=m68k-tandem
+	# These rules are duplicated from below for sake of the special case above;
+	# i.e. things that normalized to x86 arches should also default to "pc"
+	pc98)
+		cpu=i386
+		vendor=pc
 		;;
-	stratus)
-		basic_machine=i860-stratus
-		os=-sysv4
+	x64 | amd64)
+		cpu=x86_64
+		vendor=pc
 		;;
-	strongarm-* | thumb-*)
-		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+	# Recognize the basic CPU types without company name.
+	*)
+		cpu=$basic_machine
+		vendor=unknown
 		;;
-	sun2)
-		basic_machine=m68000-sun
+esac
+
+unset -v basic_machine
+
+# Decode basic machines in the full and proper CPU-Company form.
+case $cpu-$vendor in
+	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
+	# some cases the only manufacturer, in others, it is the most popular.
+	craynv-unknown)
+		vendor=cray
+		os=${os:-unicosmp}
 		;;
-	sun2os3)
-		basic_machine=m68000-sun
-		os=-sunos3
+	c90-unknown | c90-cray)
+		vendor=cray
+		os=${os:-unicos}
 		;;
-	sun2os4)
-		basic_machine=m68000-sun
-		os=-sunos4
+	fx80-unknown)
+		vendor=alliant
 		;;
-	sun3os3)
-		basic_machine=m68k-sun
-		os=-sunos3
+	romp-unknown)
+		vendor=ibm
 		;;
-	sun3os4)
-		basic_machine=m68k-sun
-		os=-sunos4
+	mmix-unknown)
+		vendor=knuth
 		;;
-	sun4os3)
-		basic_machine=sparc-sun
-		os=-sunos3
+	microblaze-unknown | microblazeel-unknown)
+		vendor=xilinx
 		;;
-	sun4os4)
-		basic_machine=sparc-sun
-		os=-sunos4
+	rs6000-unknown)
+		vendor=ibm
 		;;
-	sun4sol2)
-		basic_machine=sparc-sun
-		os=-solaris2
+	vax-unknown)
+		vendor=dec
 		;;
-	sun3 | sun3-*)
-		basic_machine=m68k-sun
+	pdp11-unknown)
+		vendor=dec
 		;;
-	sun4)
-		basic_machine=sparc-sun
+	we32k-unknown)
+		vendor=att
 		;;
-	sun386 | sun386i | roadrunner)
-		basic_machine=i386-sun
+	cydra-unknown)
+		vendor=cydrome
 		;;
-	sv1)
-		basic_machine=sv1-cray
-		os=-unicos
+	i370-ibm*)
+		vendor=ibm
 		;;
-	symmetry)
-		basic_machine=i386-sequent
-		os=-dynix
+	orion-unknown)
+		vendor=highlevel
 		;;
-	t3e)
-		basic_machine=alphaev5-cray
-		os=-unicos
+	xps-unknown | xps100-unknown)
+		cpu=xps100
+		vendor=honeywell
 		;;
-	t90)
-		basic_machine=t90-cray
-		os=-unicos
+
+	# Here we normalize CPU types with a missing or matching vendor
+	dpx20-unknown | dpx20-bull)
+		cpu=rs6000
+		vendor=bull
+		os=${os:-bosx}
 		;;
-	tile*)
-		basic_machine=$basic_machine-unknown
-		os=-linux-gnu
+
+	# Here we normalize CPU types irrespective of the vendor
+	amd64-*)
+		cpu=x86_64
 		;;
-	tx39)
-		basic_machine=mipstx39-unknown
+	blackfin-*)
+		cpu=bfin
+		os=linux
 		;;
-	tx39el)
-		basic_machine=mipstx39el-unknown
+	c54x-*)
+		cpu=tic54x
 		;;
-	toad1)
-		basic_machine=pdp10-xkl
-		os=-tops20
+	c55x-*)
+		cpu=tic55x
 		;;
-	tower | tower-32)
-		basic_machine=m68k-ncr
+	c6x-*)
+		cpu=tic6x
 		;;
-	tpf)
-		basic_machine=s390x-ibm
-		os=-tpf
+	e500v[12]-*)
+		cpu=powerpc
+		os=$os"spe"
 		;;
-	udi29k)
-		basic_machine=a29k-amd
-		os=-udi
+	mips3*-*)
+		cpu=mips64
 		;;
-	ultra3)
-		basic_machine=a29k-nyu
-		os=-sym1
+	ms1-*)
+		cpu=mt
 		;;
-	v810 | necv810)
-		basic_machine=v810-nec
-		os=-none
+	m68knommu-*)
+		cpu=m68k
+		os=linux
 		;;
-	vaxv)
-		basic_machine=vax-dec
-		os=-sysv
+	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+		cpu=s12z
 		;;
-	vms)
-		basic_machine=vax-dec
-		os=-vms
+	openrisc-*)
+		cpu=or32
 		;;
-	vpp*|vx|vx-*)
-		basic_machine=f301-fujitsu
+	parisc-*)
+		cpu=hppa
+		os=linux
 		;;
-	vxworks960)
-		basic_machine=i960-wrs
-		os=-vxworks
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		cpu=i586
 		;;
-	vxworks68)
-		basic_machine=m68k-wrs
-		os=-vxworks
+	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+		cpu=i686
 		;;
-	vxworks29k)
-		basic_machine=a29k-wrs
-		os=-vxworks
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		cpu=i686
 		;;
-	w65*)
-		basic_machine=w65-wdc
-		os=-none
+	pentium4-*)
+		cpu=i786
 		;;
-	w89k-*)
-		basic_machine=hppa1.1-winbond
-		os=-proelf
+	pc98-*)
+		cpu=i386
 		;;
-	xbox)
-		basic_machine=i686-pc
-		os=-mingw32
+	ppc-* | ppcbe-*)
+		cpu=powerpc
 		;;
-	xps | xps100)
-		basic_machine=xps100-honeywell
+	ppcle-* | powerpclittle-*)
+		cpu=powerpcle
 		;;
-	xscale-* | xscalee[bl]-*)
-		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+	ppc64-*)
+		cpu=powerpc64
 		;;
-	ymp)
-		basic_machine=ymp-cray
-		os=-unicos
+	ppc64le-* | powerpc64little-*)
+		cpu=powerpc64le
 		;;
-	z8k-*-coff)
-		basic_machine=z8k-unknown
-		os=-sim
+	sb1-*)
+		cpu=mipsisa64sb1
 		;;
-	z80-*-coff)
-		basic_machine=z80-unknown
-		os=-sim
+	sb1el-*)
+		cpu=mipsisa64sb1el
 		;;
-	none)
-		basic_machine=none-none
-		os=-none
+	sh5e[lb]-*)
+		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
 		;;
-
-# Here we handle the default manufacturer of certain CPU types.  It is in
-# some cases the only manufacturer, in others, it is the most popular.
-	w89k)
-		basic_machine=hppa1.1-winbond
+	spur-*)
+		cpu=spur
 		;;
-	op50n)
-		basic_machine=hppa1.1-oki
+	strongarm-* | thumb-*)
+		cpu=arm
 		;;
-	op60c)
-		basic_machine=hppa1.1-oki
+	tx39-*)
+		cpu=mipstx39
 		;;
-	romp)
-		basic_machine=romp-ibm
+	tx39el-*)
+		cpu=mipstx39el
 		;;
-	mmix)
-		basic_machine=mmix-knuth
+	x64-*)
+		cpu=x86_64
 		;;
-	rs6000)
-		basic_machine=rs6000-ibm
+	xscale-* | xscalee[bl]-*)
+		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
 		;;
-	vax)
-		basic_machine=vax-dec
+
+	# Recognize the canonical CPU Types that limit and/or modify the
+	# company names they are paired with.
+	cr16-*)
+		os=${os:-elf}
 		;;
-	pdp10)
-		# there are many clones, so DEC is not a safe bet
-		basic_machine=pdp10-unknown
+	crisv32-* | etraxfs*-*)
+		cpu=crisv32
+		vendor=axis
 		;;
-	pdp11)
-		basic_machine=pdp11-dec
+	cris-* | etrax*-*)
+		cpu=cris
+		vendor=axis
 		;;
-	we32k)
-		basic_machine=we32k-att
+	crx-*)
+		os=${os:-elf}
 		;;
-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
-		basic_machine=sh-unknown
+	neo-tandem)
+		cpu=neo
+		vendor=tandem
 		;;
-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
-		basic_machine=sparc-sun
+	nse-tandem)
+		cpu=nse
+		vendor=tandem
 		;;
-	cydra)
-		basic_machine=cydra-cydrome
+	nsr-tandem)
+		cpu=nsr
+		vendor=tandem
 		;;
-	orion)
-		basic_machine=orion-highlevel
+	nsv-tandem)
+		cpu=nsv
+		vendor=tandem
 		;;
-	orion105)
-		basic_machine=clipper-highlevel
+	nsx-tandem)
+		cpu=nsx
+		vendor=tandem
 		;;
-	mac | mpw | mac-mpw)
-		basic_machine=m68k-apple
+	s390-*)
+		cpu=s390
+		vendor=ibm
 		;;
-	pmac | pmac-mpw)
-		basic_machine=powerpc-apple
+	s390x-*)
+		cpu=s390x
+		vendor=ibm
 		;;
-	*-unknown)
-		# Make sure to match an already-canonicalized machine name.
+	tile*-*)
+		os=${os:-linux-gnu}
 		;;
+
 	*)
-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
-		exit 1
+		# Recognize the canonical CPU types that are allowed with any
+		# company name.
+		case $cpu in
+			1750a | 580 \
+			| a29k \
+			| aarch64 | aarch64_be \
+			| abacus \
+			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
+			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
+			| alphapca5[67] | alpha64pca5[67] \
+			| am33_2.0 \
+			| amdgcn \
+			| arc | arceb \
+			| arm  | arm[lb]e | arme[lb] | armv* \
+			| avr | avr32 \
+			| asmjs \
+			| ba \
+			| be32 | be64 \
+			| bfin | bpf | bs2000 \
+			| c[123]* | c30 | [cjt]90 | c4x \
+			| c8051 | clipper | craynv | csky | cydra \
+			| d10v | d30v | dlx | dsp16xx \
+			| e2k | elxsi | epiphany \
+			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+			| h8300 | h8500 \
+			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+			| hexagon \
+			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
+			| ip2k | iq2000 \
+			| k1om \
+			| le32 | le64 \
+			| lm32 \
+			| m32c | m32r | m32rle \
+			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+			| m88110 | m88k | maxq | mb | mcore | mep | metag \
+			| microblaze | microblazeel \
+			| mips | mipsbe | mipseb | mipsel | mipsle \
+			| mips16 \
+			| mips64 | mips64eb | mips64el \
+			| mips64octeon | mips64octeonel \
+			| mips64orion | mips64orionel \
+			| mips64r5900 | mips64r5900el \
+			| mips64vr | mips64vrel \
+			| mips64vr4100 | mips64vr4100el \
+			| mips64vr4300 | mips64vr4300el \
+			| mips64vr5000 | mips64vr5000el \
+			| mips64vr5900 | mips64vr5900el \
+			| mipsisa32 | mipsisa32el \
+			| mipsisa32r2 | mipsisa32r2el \
+			| mipsisa32r6 | mipsisa32r6el \
+			| mipsisa64 | mipsisa64el \
+			| mipsisa64r2 | mipsisa64r2el \
+			| mipsisa64r6 | mipsisa64r6el \
+			| mipsisa64sb1 | mipsisa64sb1el \
+			| mipsisa64sr71k | mipsisa64sr71kel \
+			| mipsr5900 | mipsr5900el \
+			| mipstx39 | mipstx39el \
+			| mmix \
+			| mn10200 | mn10300 \
+			| moxie \
+			| mt \
+			| msp430 \
+			| nds32 | nds32le | nds32be \
+			| nfp \
+			| nios | nios2 | nios2eb | nios2el \
+			| none | np1 | ns16k | ns32k | nvptx \
+			| open8 \
+			| or1k* \
+			| or32 \
+			| orion \
+			| picochip \
+			| pdp10 | pdp11 | pj | pjl | pn | power \
+			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+			| pru \
+			| pyramid \
+			| riscv | riscv32 | riscv64 \
+			| rl78 | romp | rs6000 | rx \
+			| score \
+			| sh | shl \
+			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
+			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+			| sparclite \
+			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+			| spu \
+			| tahoe \
+			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+			| tron \
+			| ubicom32 \
+			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+			| vax \
+			| visium \
+			| w65 \
+			| wasm32 | wasm64 \
+			| we32k \
+			| x86 | x86_64 | xc16x | xgate | xps100 \
+			| xstormy16 | xtensa* \
+			| ymp \
+			| z8k | z80)
+				;;
+
+			*)
+				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+				exit 1
+				;;
+		esac
 		;;
 esac
 
 # Here we canonicalize certain aliases for manufacturers.
-case $basic_machine in
-	*-digital*)
-		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+case $vendor in
+	digital*)
+		vendor=dec
 		;;
-	*-commodore*)
-		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+	commodore*)
+		vendor=cbm
 		;;
 	*)
 		;;
@@ -1345,200 +1278,246 @@ esac
 
 # Decode manufacturer-specific aliases for certain operating systems.
 
-if [ x"$os" != x"" ]
+if [ x$os != x ]
 then
 case $os in
-	# First match some system type aliases
-	# that might get confused with valid system types.
-	# -solaris* is a basic system type, with this one exception.
-	-auroraux)
-		os=-auroraux
+	# First match some system type aliases that might get confused
+	# with valid system types.
+	# solaris* is a basic system type, with this one exception.
+	auroraux)
+		os=auroraux
 		;;
-	-solaris1 | -solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+	bluegene*)
+		os=cnk
 		;;
-	-solaris)
-		os=-solaris2
+	solaris1 | solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
 		;;
-	-svr4*)
-		os=-sysv4
+	solaris)
+		os=solaris2
 		;;
-	-unixware*)
-		os=-sysv4.2uw
+	unixware*)
+		os=sysv4.2uw
 		;;
-	-gnu/linux*)
+	gnu/linux*)
 		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
 		;;
-	# First accept the basic system types.
+	# es1800 is here to avoid being matched by es* (a different OS)
+	es1800*)
+		os=ose
+		;;
+	# Some version numbers need modification
+	chorusos*)
+		os=chorusos
+		;;
+	isc)
+		os=isc2.2
+		;;
+	sco6)
+		os=sco5v6
+		;;
+	sco5)
+		os=sco3.2v5
+		;;
+	sco4)
+		os=sco3.2v4
+		;;
+	sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		;;
+	sco3.2v[4-9]* | sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		;;
+	scout)
+		# Don't match below
+		;;
+	sco*)
+		os=sco3.2v2
+		;;
+	psos*)
+		os=psos
+		;;
+	# Now accept the basic system types.
 	# The portable systems comes first.
-	# Each alternative MUST END IN A *, to match a version number.
-	# -sysv* is not here because it comes later, after sysvr4.
-	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-	      | -sym* | -kopensolaris* | -plan9* \
-	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* | -cloudabi* | -sortix* \
-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
-	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
-	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
-	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
-	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
-	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
-	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
-	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
-	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
-	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
-	      | -onefs* | -tirtos* | -phoenix*)
+	# Each alternative MUST end in a * to match a version number.
+	# sysv* is not here because it comes later, after sysvr4.
+	gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
+	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+	     | sym* | kopensolaris* | plan9* \
+	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+	     | aos* | aros* | cloudabi* | sortix* \
+	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+	     | knetbsd* | mirbsd* | netbsd* \
+	     | bitrig* | openbsd* | solidbsd* | libertybsd* \
+	     | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
+	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+	     | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
+	     | chorusrdb* | cegcc* | glidix* \
+	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+	     | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
+	     | linux-newlib* | linux-musl* | linux-uclibc* \
+	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+	     | interix* | uwin* | mks* | rhapsody* | darwin* \
+	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
+	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
+	     | os2* | vos* | palmos* | uclinux* | nucleus* \
+	     | morphos* | superux* | rtmk* | windiss* \
+	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
-	-qnx*)
-		case $basic_machine in
-		    x86-* | i*86-*)
+	qnx*)
+		case $cpu in
+		    x86 | i*86)
 			;;
 		    *)
-			os=-nto$os
+			os=nto-$os
 			;;
 		esac
 		;;
-	-nto-qnx*)
+	hiux*)
+		os=hiuxwe2
 		;;
-	-nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+	nto-qnx*)
 		;;
-	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
-	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+	nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
 		;;
-	-mac*)
-		os=`echo $os | sed -e 's|mac|macos|'`
+	sim | xray | os68k* | v88r* \
+	    | windows* | osx | abug | netware* | os9* \
+	    | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
 		;;
-	-linux-dietlibc)
-		os=-linux-dietlibc
+	linux-dietlibc)
+		os=linux-dietlibc
 		;;
-	-linux*)
+	linux*)
 		os=`echo $os | sed -e 's|linux|linux-gnu|'`
 		;;
-	-sunos5*)
-		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+	lynx*178)
+		os=lynxos178
 		;;
-	-sunos6*)
-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+	lynx*5)
+		os=lynxos5
 		;;
-	-opened*)
-		os=-openedition
+	lynx*)
+		os=lynxos
 		;;
-	-os400*)
-		os=-os400
+	mac*)
+		os=`echo "$os" | sed -e 's|mac|macos|'`
 		;;
-	-wince*)
-		os=-wince
+	opened*)
+		os=openedition
 		;;
-	-osfrose*)
-		os=-osfrose
+	os400*)
+		os=os400
 		;;
-	-osf*)
-		os=-osf
+	sunos5*)
+		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
 		;;
-	-utek*)
-		os=-bsd
+	sunos6*)
+		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
 		;;
-	-dynix*)
-		os=-bsd
+	wince*)
+		os=wince
 		;;
-	-acis*)
-		os=-aos
+	utek*)
+		os=bsd
 		;;
-	-atheos*)
-		os=-atheos
+	dynix*)
+		os=bsd
 		;;
-	-syllable*)
-		os=-syllable
+	acis*)
+		os=aos
 		;;
-	-386bsd)
-		os=-bsd
+	atheos*)
+		os=atheos
 		;;
-	-ctix* | -uts*)
-		os=-sysv
+	syllable*)
+		os=syllable
 		;;
-	-nova*)
-		os=-rtmk-nova
+	386bsd)
+		os=bsd
+		;;
+	ctix* | uts*)
+		os=sysv
+		;;
+	nova*)
+		os=rtmk-nova
 		;;
-	-ns2 )
-		os=-nextstep2
+	ns2)
+		os=nextstep2
 		;;
-	-nsk*)
-		os=-nsk
+	nsk*)
+		os=nsk
 		;;
 	# Preserve the version number of sinix5.
-	-sinix5.*)
+	sinix5.*)
 		os=`echo $os | sed -e 's|sinix|sysv|'`
 		;;
-	-sinix*)
-		os=-sysv4
+	sinix*)
+		os=sysv4
 		;;
-	-tpf*)
-		os=-tpf
+	tpf*)
+		os=tpf
 		;;
-	-triton*)
-		os=-sysv3
+	triton*)
+		os=sysv3
 		;;
-	-oss*)
-		os=-sysv3
+	oss*)
+		os=sysv3
 		;;
-	-svr4)
-		os=-sysv4
+	svr4*)
+		os=sysv4
 		;;
-	-svr3)
-		os=-sysv3
+	svr3)
+		os=sysv3
 		;;
-	-sysvr4)
-		os=-sysv4
+	sysvr4)
+		os=sysv4
 		;;
-	# This must come after -sysvr4.
-	-sysv*)
+	# This must come after sysvr4.
+	sysv*)
 		;;
-	-ose*)
-		os=-ose
+	ose*)
+		os=ose
 		;;
-	-es1800*)
-		os=-ose
+	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+		os=mint
 		;;
-	-xenix)
-		os=-xenix
+	zvmoe)
+		os=zvmoe
 		;;
-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
-		os=-mint
+	dicos*)
+		os=dicos
 		;;
-	-aros*)
-		os=-aros
-		;;
-	-zvmoe)
-		os=-zvmoe
+	pikeos*)
+		# Until real need of OS specific support for
+		# particular features comes up, bare metal
+		# configurations are quite functional.
+		case $cpu in
+		    arm*)
+			os=eabi
+			;;
+		    *)
+			os=elf
+			;;
+		esac
 		;;
-	-dicos*)
-		os=-dicos
+	nacl*)
 		;;
-	-nacl*)
+	ios)
 		;;
-	-ios)
+	none)
 		;;
-	-none)
+	*-eabi)
 		;;
 	*)
-		# Get rid of the `-' at the beginning of $os.
-		os=`echo $os | sed 's/[^-]*-//'`
-		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
 		exit 1
 		;;
 esac
@@ -1554,261 +1533,265 @@ else
 # will signal an error saying that MANUFACTURER isn't an operating
 # system, and we'll never get to this point.
 
-case $basic_machine in
+case $cpu-$vendor in
 	score-*)
-		os=-elf
+		os=elf
 		;;
 	spu-*)
-		os=-elf
+		os=elf
 		;;
 	*-acorn)
-		os=-riscix1.2
+		os=riscix1.2
 		;;
 	arm*-rebel)
-		os=-linux
+		os=linux
 		;;
 	arm*-semi)
-		os=-aout
+		os=aout
 		;;
 	c4x-* | tic4x-*)
-		os=-coff
+		os=coff
 		;;
 	c8051-*)
-		os=-elf
+		os=elf
+		;;
+	clipper-intergraph)
+		os=clix
 		;;
 	hexagon-*)
-		os=-elf
+		os=elf
 		;;
 	tic54x-*)
-		os=-coff
+		os=coff
 		;;
 	tic55x-*)
-		os=-coff
+		os=coff
 		;;
 	tic6x-*)
-		os=-coff
+		os=coff
 		;;
 	# This must come before the *-dec entry.
 	pdp10-*)
-		os=-tops20
+		os=tops20
 		;;
 	pdp11-*)
-		os=-none
+		os=none
 		;;
 	*-dec | vax-*)
-		os=-ultrix4.2
+		os=ultrix4.2
 		;;
 	m68*-apollo)
-		os=-domain
+		os=domain
 		;;
 	i386-sun)
-		os=-sunos4.0.2
+		os=sunos4.0.2
 		;;
 	m68000-sun)
-		os=-sunos3
+		os=sunos3
 		;;
 	m68*-cisco)
-		os=-aout
+		os=aout
 		;;
 	mep-*)
-		os=-elf
+		os=elf
 		;;
 	mips*-cisco)
-		os=-elf
+		os=elf
 		;;
 	mips*-*)
-		os=-elf
+		os=elf
 		;;
 	or32-*)
-		os=-coff
+		os=coff
 		;;
 	*-tti)	# must be before sparc entry or we get the wrong os.
-		os=-sysv3
+		os=sysv3
 		;;
 	sparc-* | *-sun)
-		os=-sunos4.1.1
+		os=sunos4.1.1
 		;;
-	*-be)
-		os=-beos
+	pru-*)
+		os=elf
 		;;
-	*-haiku)
-		os=-haiku
+	*-be)
+		os=beos
 		;;
 	*-ibm)
-		os=-aix
+		os=aix
 		;;
 	*-knuth)
-		os=-mmixware
+		os=mmixware
 		;;
 	*-wec)
-		os=-proelf
+		os=proelf
 		;;
 	*-winbond)
-		os=-proelf
+		os=proelf
 		;;
 	*-oki)
-		os=-proelf
+		os=proelf
 		;;
 	*-hp)
-		os=-hpux
+		os=hpux
 		;;
 	*-hitachi)
-		os=-hiux
+		os=hiux
 		;;
 	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-		os=-sysv
+		os=sysv
 		;;
 	*-cbm)
-		os=-amigaos
+		os=amigaos
 		;;
 	*-dg)
-		os=-dgux
+		os=dgux
 		;;
 	*-dolphin)
-		os=-sysv3
+		os=sysv3
 		;;
 	m68k-ccur)
-		os=-rtu
+		os=rtu
 		;;
 	m88k-omron*)
-		os=-luna
+		os=luna
 		;;
-	*-next )
-		os=-nextstep
+	*-next)
+		os=nextstep
 		;;
 	*-sequent)
-		os=-ptx
+		os=ptx
 		;;
 	*-crds)
-		os=-unos
+		os=unos
 		;;
 	*-ns)
-		os=-genix
+		os=genix
 		;;
 	i370-*)
-		os=-mvs
-		;;
-	*-next)
-		os=-nextstep3
+		os=mvs
 		;;
 	*-gould)
-		os=-sysv
+		os=sysv
 		;;
 	*-highlevel)
-		os=-bsd
+		os=bsd
 		;;
 	*-encore)
-		os=-bsd
+		os=bsd
 		;;
 	*-sgi)
-		os=-irix
+		os=irix
 		;;
 	*-siemens)
-		os=-sysv4
+		os=sysv4
 		;;
 	*-masscomp)
-		os=-rtu
+		os=rtu
 		;;
 	f30[01]-fujitsu | f700-fujitsu)
-		os=-uxpv
+		os=uxpv
 		;;
 	*-rom68k)
-		os=-coff
+		os=coff
 		;;
 	*-*bug)
-		os=-coff
+		os=coff
 		;;
 	*-apple)
-		os=-macos
+		os=macos
 		;;
 	*-atari*)
-		os=-mint
+		os=mint
+		;;
+	*-wrs)
+		os=vxworks
 		;;
 	*)
-		os=-none
+		os=none
 		;;
 esac
 fi
 
 # Here we handle the case where we know the os, and the CPU type, but not the
 # manufacturer.  We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
-	*-unknown)
+case $vendor in
+	unknown)
 		case $os in
-			-riscix*)
+			riscix*)
 				vendor=acorn
 				;;
-			-sunos*)
+			sunos*)
 				vendor=sun
 				;;
-			-cnk*|-aix*)
+			cnk*|-aix*)
 				vendor=ibm
 				;;
-			-beos*)
+			beos*)
 				vendor=be
 				;;
-			-hpux*)
+			hpux*)
 				vendor=hp
 				;;
-			-mpeix*)
+			mpeix*)
 				vendor=hp
 				;;
-			-hiux*)
+			hiux*)
 				vendor=hitachi
 				;;
-			-unos*)
+			unos*)
 				vendor=crds
 				;;
-			-dgux*)
+			dgux*)
 				vendor=dg
 				;;
-			-luna*)
+			luna*)
 				vendor=omron
 				;;
-			-genix*)
+			genix*)
 				vendor=ns
 				;;
-			-mvs* | -opened*)
+			clix*)
+				vendor=intergraph
+				;;
+			mvs* | opened*)
 				vendor=ibm
 				;;
-			-os400*)
+			os400*)
 				vendor=ibm
 				;;
-			-ptx*)
+			ptx*)
 				vendor=sequent
 				;;
-			-tpf*)
+			tpf*)
 				vendor=ibm
 				;;
-			-vxsim* | -vxworks* | -windiss*)
+			vxsim* | vxworks* | windiss*)
 				vendor=wrs
 				;;
-			-aux*)
+			aux*)
 				vendor=apple
 				;;
-			-hms*)
+			hms*)
 				vendor=hitachi
 				;;
-			-mpw* | -macos*)
+			mpw* | macos*)
 				vendor=apple
 				;;
-			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+			*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
 				vendor=atari
 				;;
-			-vos*)
+			vos*)
 				vendor=stratus
 				;;
 		esac
-		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
 		;;
 esac
 
-echo $basic_machine$os
+echo "$cpu-$vendor-$os"
 exit
 
 # Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 4/6] toolchain/toolchain-external/toolchain-external-csky: new package
  2019-05-28 20:34 [Buildroot] [PATCH v2 0/6] gnuconfig and csky updates Thomas Petazzoni
                   ` (2 preceding siblings ...)
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28 Thomas Petazzoni
@ 2019-05-28 20:34 ` Thomas Petazzoni
  2019-05-29  5:48   ` Guo Ren
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 5/6] configs/csky_gx6605s: use the C-SKY external toolchain package Thomas Petazzoni
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 6/6] support/config-fragments/autobuild: add testing for the C-SKY architecture Thomas Petazzoni
  5 siblings, 1 reply; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-28 20:34 UTC (permalink / raw)
  To: buildroot

Currently, the csky_gx6605s_defconfig uses a custom pre-built external
C-SKY toolchain. Rather than using it just for a defconfig, let's
create a proper package for this toolchain, which will make it easier
to use.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
Guo: I've list you as the developer in charge of this package in the
DEVELOPERS, please let me know if this is OK for you (or not). Thanks!
---
 DEVELOPERS                                        |  1 +
 toolchain/toolchain-external/Config.in            |  6 ++++++
 .../toolchain-external-csky/Config.in             | 15 +++++++++++++++
 .../toolchain-external-csky/Config.in.options     |  9 +++++++++
 .../toolchain-external-csky.hash                  |  2 ++
 .../toolchain-external-csky.mk                    | 11 +++++++++++
 6 files changed, 44 insertions(+)
 create mode 100644 toolchain/toolchain-external/toolchain-external-csky/Config.in
 create mode 100644 toolchain/toolchain-external/toolchain-external-csky/Config.in.options
 create mode 100644 toolchain/toolchain-external/toolchain-external-csky/toolchain-external-csky.hash
 create mode 100644 toolchain/toolchain-external/toolchain-external-csky/toolchain-external-csky.mk

diff --git a/DEVELOPERS b/DEVELOPERS
index 66dc2504ff..c3dce03f53 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -977,6 +977,7 @@ N:	Guo Ren <ren_guo@c-sky.com>
 F:	arch/Config.in.csky
 F:	board/csky/
 F:	configs/csky_*
+F:	toolchain/toolchain-external/toolchain-external-csky/
 
 N:	Gustavo Pimentel <gustavo.pimentel@synopsys.com>
 F:	configs/arm_juno_defconfig
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index d234c1c552..76c127aa4a 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -34,6 +34,9 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.
 # ARM big-endian
 source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in"
 
+# C-SKY
+source "toolchain/toolchain-external/toolchain-external-csky/Config.in"
+
 # MIPS (use codesourcery toolchain by default)
 source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in"
 source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in"
@@ -138,6 +141,9 @@ source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.
 # ARM big-endian
 source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options"
 
+# C-SKY
+source "toolchain/toolchain-external/toolchain-external-csky/Config.in.options"
+
 # MIPS
 source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options"
 source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options"
diff --git a/toolchain/toolchain-external/toolchain-external-csky/Config.in b/toolchain/toolchain-external/toolchain-external-csky/Config.in
new file mode 100644
index 0000000000..6ad27d5dd9
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-csky/Config.in
@@ -0,0 +1,15 @@
+config BR2_TOOLCHAIN_EXTERNAL_CSKY
+	bool "C-SKY 2018.01.28"
+	depends on BR2_csky
+	depends on BR2_HOSTARCH = "x86_64"
+	depends on !BR2_STATIC_LIBS
+	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
+	select BR2_INSTALL_LIBSTDCPP
+	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
+	select BR2_TOOLCHAIN_HAS_SSP
+	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+	select BR2_TOOLCHAIN_GCC_AT_LEAST_6
+	help
+	  C-SKY glibc toolchain.
+
+	  https://github.com/c-sky/tools/
diff --git a/toolchain/toolchain-external/toolchain-external-csky/Config.in.options b/toolchain/toolchain-external/toolchain-external-csky/Config.in.options
new file mode 100644
index 0000000000..e77dd0a195
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-csky/Config.in.options
@@ -0,0 +1,9 @@
+if BR2_TOOLCHAIN_EXTERNAL_CSKY
+
+config BR2_TOOLCHAIN_EXTERNAL_PREFIX
+	default "csky-linux"
+
+config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
+	default "toolchain-external-csky"
+
+endif
diff --git a/toolchain/toolchain-external/toolchain-external-csky/toolchain-external-csky.hash b/toolchain/toolchain-external/toolchain-external-csky/toolchain-external-csky.hash
new file mode 100644
index 0000000000..4c97a90eb8
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-csky/toolchain-external-csky.hash
@@ -0,0 +1,2 @@
+# Locally calculated
+sha256 39317f9bea5aa92d6e09269cc5ce00a93914ab7060a498e0be9feee3c0d56e9c csky-linux-tools-x86_64-glibc-linux-4.9.56-20180128.tar.gz
diff --git a/toolchain/toolchain-external/toolchain-external-csky/toolchain-external-csky.mk b/toolchain/toolchain-external/toolchain-external-csky/toolchain-external-csky.mk
new file mode 100644
index 0000000000..2f5c26c00a
--- /dev/null
+++ b/toolchain/toolchain-external/toolchain-external-csky/toolchain-external-csky.mk
@@ -0,0 +1,11 @@
+################################################################################
+#
+# toolchain-external-csky
+#
+################################################################################
+
+TOOLCHAIN_EXTERNAL_CSKY_VERSION = 20180128
+TOOLCHAIN_EXTERNAL_CSKY_SITE = https://github.com/c-sky/tools/raw/master
+TOOLCHAIN_EXTERNAL_CSKY_SOURCE = csky-linux-tools-x86_64-glibc-linux-4.9.56-$(TOOLCHAIN_EXTERNAL_CSKY_VERSION).tar.gz
+
+$(eval $(toolchain-external-package))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 5/6] configs/csky_gx6605s: use the C-SKY external toolchain package
  2019-05-28 20:34 [Buildroot] [PATCH v2 0/6] gnuconfig and csky updates Thomas Petazzoni
                   ` (3 preceding siblings ...)
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 4/6] toolchain/toolchain-external/toolchain-external-csky: new package Thomas Petazzoni
@ 2019-05-28 20:34 ` Thomas Petazzoni
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 6/6] support/config-fragments/autobuild: add testing for the C-SKY architecture Thomas Petazzoni
  5 siblings, 0 replies; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-28 20:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 configs/csky_gx6605s_defconfig | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/configs/csky_gx6605s_defconfig b/configs/csky_gx6605s_defconfig
index d0a2aadc6d..691f970844 100644
--- a/configs/csky_gx6605s_defconfig
+++ b/configs/csky_gx6605s_defconfig
@@ -1,12 +1,7 @@
 BR2_csky=y
 BR2_GLOBAL_PATCH_DIR="board/csky/gx6605s/patches"
-BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
-BR2_TOOLCHAIN_EXTERNAL_URL="https://github.com/c-sky/tools/raw/master/csky-linux-tools-x86_64-glibc-linux-4.9.56-20180128.tar.gz"
-BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="csky-linux"
-BR2_TOOLCHAIN_EXTERNAL_GCC_6=y
-BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9=y
-BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
-BR2_TOOLCHAIN_EXTERNAL_CXX=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CSKY=y
 BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY=y
 BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
 BR2_LINUX_KERNEL=y
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 6/6] support/config-fragments/autobuild: add testing for the C-SKY architecture
  2019-05-28 20:34 [Buildroot] [PATCH v2 0/6] gnuconfig and csky updates Thomas Petazzoni
                   ` (4 preceding siblings ...)
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 5/6] configs/csky_gx6605s: use the C-SKY external toolchain package Thomas Petazzoni
@ 2019-05-28 20:34 ` Thomas Petazzoni
  5 siblings, 0 replies; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-28 20:34 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 support/config-fragments/autobuild/csky.config           | 3 +++
 support/config-fragments/autobuild/toolchain-configs.csv | 1 +
 2 files changed, 4 insertions(+)
 create mode 100644 support/config-fragments/autobuild/csky.config

diff --git a/support/config-fragments/autobuild/csky.config b/support/config-fragments/autobuild/csky.config
new file mode 100644
index 0000000000..c3275efc4b
--- /dev/null
+++ b/support/config-fragments/autobuild/csky.config
@@ -0,0 +1,3 @@
+BR2_csky=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CSKY=y
diff --git a/support/config-fragments/autobuild/toolchain-configs.csv b/support/config-fragments/autobuild/toolchain-configs.csv
index 15a69d60ee..3da53556d3 100644
--- a/support/config-fragments/autobuild/toolchain-configs.csv
+++ b/support/config-fragments/autobuild/toolchain-configs.csv
@@ -59,6 +59,7 @@ support/config-fragments/autobuild/br-sparc64-glibc.config,x86_64
 support/config-fragments/autobuild/br-x86-64-core2-full.config,x86_64
 support/config-fragments/autobuild/br-xtensa-full.config,x86_64
 support/config-fragments/autobuild/br-xtensa-full-internal.config,any
+support/config-fragments/autobuild/csky.config,x86_64
 support/config-fragments/autobuild/linaro-aarch64.config,x86
 support/config-fragments/autobuild/linaro-aarch64-be.config,x86
 support/config-fragments/autobuild/linaro-arm.config,x86
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 4/6] toolchain/toolchain-external/toolchain-external-csky: new package
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 4/6] toolchain/toolchain-external/toolchain-external-csky: new package Thomas Petazzoni
@ 2019-05-29  5:48   ` Guo Ren
  2019-05-29  6:49     ` Thomas Petazzoni
  0 siblings, 1 reply; 18+ messages in thread
From: Guo Ren @ 2019-05-29  5:48 UTC (permalink / raw)
  To: buildroot

Thx Thomas,

On Wed, May 29, 2019 at 4:34 AM Thomas Petazzoni
<thomas.petazzoni@bootlin.com> wrote:
>
> Currently, the csky_gx6605s_defconfig uses a custom pre-built external
> C-SKY toolchain. Rather than using it just for a defconfig, let's
> create a proper package for this toolchain, which will make it easier
> to use.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
> Guo: I've list you as the developer in charge of this package in the
> DEVELOPERS, please let me know if this is OK for you (or not). Thanks!
I'll delete toolchain-external-csky after toolchain buildroot is ready.
csky-linux-tools-x86_64-glibc-linux-4.9.56-20180128.tar.gz is only
support abiv1: ck610.
For abiv2: ck807, ck810, ck860 need another toolchain.

So I don't want to add toolchain-external-csky and I'll change
gx6605s_defconfig to toolchain
buildroot in future.

Best Regards
 Guo Ren

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 4/6] toolchain/toolchain-external/toolchain-external-csky: new package
  2019-05-29  5:48   ` Guo Ren
@ 2019-05-29  6:49     ` Thomas Petazzoni
  0 siblings, 0 replies; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-29  6:49 UTC (permalink / raw)
  To: buildroot

Hello Guo,

On Wed, 29 May 2019 13:48:31 +0800
Guo Ren <guoren@kernel.org> wrote:

> I'll delete toolchain-external-csky after toolchain buildroot is ready.
> csky-linux-tools-x86_64-glibc-linux-4.9.56-20180128.tar.gz is only
> support abiv1: ck610.
> For abiv2: ck807, ck810, ck860 need another toolchain.
> 
> So I don't want to add toolchain-external-csky and I'll change
> gx6605s_defconfig to toolchain
> buildroot in future.

OK. This makes the second part of my patch series a bit useless then,
I'll mark patches 4/6 to 6/6 as Rejected then.

Thanks for the feedback!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 1/6] package/lmbench: use UPDATE_CONFIG_HOOK instead of CONFIG_UPDATE
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 1/6] package/lmbench: use UPDATE_CONFIG_HOOK instead of CONFIG_UPDATE Thomas Petazzoni
@ 2019-05-30 10:33   ` Peter Korsgaard
  0 siblings, 0 replies; 18+ messages in thread
From: Peter Korsgaard @ 2019-05-30 10:33 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > jimtcl, perl, usb_modeswitch and x264 are registering
 > UPDATE_CONFIG_HOOK as a post patch hook to get their gnuconfig files
 > updated. lmbench is the only package calling CONFIG_UPDATE directly,
 > so for consistency, let's make it use the same logic as jimtcl, perl,
 > usb_modeswitch and x264.

 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

Committed to next, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 2/6] support/gnuconfig: update README.buildroot with reality
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 2/6] support/gnuconfig: update README.buildroot with reality Thomas Petazzoni
@ 2019-05-30 10:34   ` Peter Korsgaard
  0 siblings, 0 replies; 18+ messages in thread
From: Peter Korsgaard @ 2019-05-30 10:34 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > 4 out of 5 packages who are not using autotools but needed their
 > gnuconfig files updated were not complying with the recommandation in
 > support/gnuconfig/README.buildroot. The fifth package was converted to
 > be like the others: use UPDATE_CONFIG_HOOK as a <pkg>_POST_PATCH_HOOKS
 > rather than calling the CONFIG_UPDATE macro directly.

 > Now that all packages are consistent, update the README.buildroot file
 > to match the reality.

 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

Committed to next, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28 Thomas Petazzoni
@ 2019-05-30 10:36   ` Peter Korsgaard
  2019-05-30 12:38     ` Thomas Petazzoni
  2019-05-31 20:04   ` Yann E. MORIN
  2019-05-31 21:02   ` Thomas Petazzoni
  2 siblings, 1 reply; 18+ messages in thread
From: Peter Korsgaard @ 2019-05-30 10:36 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > This update includes support for the C-SKY architecture.
 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
 > ---
 > Note: this was suggested by Peter for next, instead of just patching
 > the files to add csky support. It should be applied after
 > cherry-picking 910b431d6383cd1ce4cd9eeb0a8466cb977c3789 from master.

Are you sure about that? It seems to apply nicely as is to next, and
fail with a merge conflict if I cherry-pick 910b431?

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28
  2019-05-30 10:36   ` Peter Korsgaard
@ 2019-05-30 12:38     ` Thomas Petazzoni
  2019-05-30 12:53       ` Peter Korsgaard
  0 siblings, 1 reply; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-30 12:38 UTC (permalink / raw)
  To: buildroot

Hello,

On Thu, 30 May 2019 12:36:55 +0200
Peter Korsgaard <peter@korsgaard.com> wrote:

> >>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:  
> 
>  > This update includes support for the C-SKY architecture.
>  > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
>  > ---
>  > Note: this was suggested by Peter for next, instead of just patching
>  > the files to add csky support. It should be applied after
>  > cherry-picking 910b431d6383cd1ce4cd9eeb0a8466cb977c3789 from master.  
> 
> Are you sure about that? It seems to apply nicely as is to next, and
> fail with a merge conflict if I cherry-pick 910b431?

Yes, because I did the patch based on next. But you know that master
had a change on gnuconfig to support the C-SKY architecture. So perhaps
I should send a series that is based on next + the c-sky patch that is
already in master ?

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28
  2019-05-30 12:38     ` Thomas Petazzoni
@ 2019-05-30 12:53       ` Peter Korsgaard
  2019-05-31 12:57         ` Thomas Petazzoni
  0 siblings, 1 reply; 18+ messages in thread
From: Peter Korsgaard @ 2019-05-30 12:53 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > Hello,
 > On Thu, 30 May 2019 12:36:55 +0200
 > Peter Korsgaard <peter@korsgaard.com> wrote:

 >> >>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:  
 >> 
 >> > This update includes support for the C-SKY architecture.
 >> > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
 >> > ---
 >> > Note: this was suggested by Peter for next, instead of just patching
 >> > the files to add csky support. It should be applied after
 >> > cherry-picking 910b431d6383cd1ce4cd9eeb0a8466cb977c3789 from master.  
 >> 
 >> Are you sure about that? It seems to apply nicely as is to next, and
 >> fail with a merge conflict if I cherry-pick 910b431?

 > Yes, because I did the patch based on next. But you know that master
 > had a change on gnuconfig to support the C-SKY architecture. So perhaps
 > I should send a series that is based on next + the c-sky patch that is
 > already in master ?

Yes, that is probably the easiest for when we need to merge next to
master.

Did you get any further with moving all of this to package/gnuconfig and
downloading it, or is that for later?

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28
  2019-05-30 12:53       ` Peter Korsgaard
@ 2019-05-31 12:57         ` Thomas Petazzoni
  2019-05-31 21:02           ` Peter Korsgaard
  0 siblings, 1 reply; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-31 12:57 UTC (permalink / raw)
  To: buildroot

Hello,

On Thu, 30 May 2019 14:53:22 +0200
Peter Korsgaard <peter@korsgaard.com> wrote:

> Did you get any further with moving all of this to package/gnuconfig and
> downloading it, or is that for later?

So, I tried to do this:

  https://github.com/tpetazzoni/buildroot/commits/gnuconfig

It's not that simple/straightforward though:

 - host-gnuconfig needs host-tar because host-gnuconfig fetches from
   Git so we create/extract a tarball. But host-tar is an autotools
   package, so it ends up depending on host-gnuconfig, creating a
   circular dependency.

   As discussed on IRC, I see three options to solve this:

   (1) Do not overwrite config.guess/config.sub for host packages. This
       will be an issue if we have some very old package that has an old
       config.guess/config.sub, and someone tries to build on a fairly
       "new" architecture, say ARM64.

   (2) Same as (1), but only for host-tar. Host-tar has some reasonably
       frequent releases, so hopefully the problem described in (1) doesn't
       happen.

   (3) Change the gnuconfig package so that it doesn't fetch from Git,
       but directly using wget the two individual files it needs.

 - removing --build=$(GNU_HOST_NAME) from all autotools packages
   doesn't really work well. For example Python 2.x at least then fails
   to build with: "configure: error: Cross compiling required
   --host=HOST-TUPLE and --build=ARCH". We could of course live with
   --build=$(GNU_HOST_NAME), with GNU_HOST_NAME being a recursively
   expanded variable, like my patch series does for libnspr and moarvm.

Overall, I am no longer so sure of the benefits vs. complexity
trade-off here. The above issues can be resolved for sure, but is it
worth it, compared to just having those two files in our tree ?

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28 Thomas Petazzoni
  2019-05-30 10:36   ` Peter Korsgaard
@ 2019-05-31 20:04   ` Yann E. MORIN
  2019-05-31 21:02   ` Thomas Petazzoni
  2 siblings, 0 replies; 18+ messages in thread
From: Yann E. MORIN @ 2019-05-31 20:04 UTC (permalink / raw)
  To: buildroot

Thomas, All,

On 2019-05-28 22:34 +0200, Thomas Petazzoni spake thusly:
> This update includes support for the C-SKY architecture.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>

Since switching to a package-based approach is non-trivial, we can still
live with the bundled copies for a while:

Acked-by: Yann E. MORIN <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

> ---
> Note: this was suggested by Peter for next, instead of just patching
> the files to add csky support. It should be applied after
> cherry-picking 910b431d6383cd1ce4cd9eeb0a8466cb977c3789 from master.
> ---
>  support/gnuconfig/README.buildroot |    2 +-
>  support/gnuconfig/config.guess     |  836 +++++----
>  support/gnuconfig/config.sub       | 2525 ++++++++++++++--------------
>  3 files changed, 1774 insertions(+), 1589 deletions(-)
> 
> diff --git a/support/gnuconfig/README.buildroot b/support/gnuconfig/README.buildroot
> index 7ba2a332a4..115c9fd1e1 100644
> --- a/support/gnuconfig/README.buildroot
> +++ b/support/gnuconfig/README.buildroot
> @@ -24,4 +24,4 @@ Currently no patches are needed, but they may be needed again in the
>  future.
>  
>  The current Buildroot version is based on the Git commit
> -dafd8e767ec87b90aac62f0fcedd11944c84b50a of the config.git repository.
> +bad92f031d2d5d980389d2c833f1c218a57443e6 of the config.git repository.
> diff --git a/support/gnuconfig/config.guess b/support/gnuconfig/config.guess
> index c4bd827a7b..b40e17b137 100755
> --- a/support/gnuconfig/config.guess
> +++ b/support/gnuconfig/config.guess
> @@ -1,8 +1,8 @@
>  #! /bin/sh
>  # Attempt to guess a canonical system name.
> -#   Copyright 1992-2016 Free Software Foundation, Inc.
> +#   Copyright 1992-2019 Free Software Foundation, Inc.
>  
> -timestamp='2016-05-15'
> +timestamp='2019-05-28'
>  
>  # This file is free software; you can redistribute it and/or modify it
>  # under the terms of the GNU General Public License as published by
> @@ -15,7 +15,7 @@ timestamp='2016-05-15'
>  # General Public License for more details.
>  #
>  # You should have received a copy of the GNU General Public License
> -# along with this program; if not, see <http://www.gnu.org/licenses/>.
> +# along with this program; if not, see <https://www.gnu.org/licenses/>.
>  #
>  # As a special exception to the GNU General Public License, if you
>  # distribute this file as part of a program that contains a
> @@ -27,7 +27,7 @@ timestamp='2016-05-15'
>  # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
>  #
>  # You can get the latest version of this script from:
> -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
> +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
>  #
>  # Please send patches to <config-patches@gnu.org>.
>  
> @@ -39,7 +39,7 @@ Usage: $0 [OPTION]
>  
>  Output the configuration name of the system \`$me' is run on.
>  
> -Operation modes:
> +Options:
>    -h, --help         print this help, then exit
>    -t, --time-stamp   print date of last modification, then exit
>    -v, --version      print version number, then exit
> @@ -50,7 +50,7 @@ version="\
>  GNU config.guess ($timestamp)
>  
>  Originally written by Per Bothner.
> -Copyright 1992-2016 Free Software Foundation, Inc.
> +Copyright 1992-2019 Free Software Foundation, Inc.
>  
>  This is free software; see the source for copying conditions.  There is NO
>  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
> @@ -84,8 +84,6 @@ if test $# != 0; then
>    exit 1
>  fi
>  
> -trap 'exit 1' 1 2 15
> -
>  # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
>  # compiler to aid in system detection is discouraged as it requires
>  # temporary files to be created and, as you can see below, it is a
> @@ -96,34 +94,38 @@ trap 'exit 1' 1 2 15
>  
>  # Portable tmp directory creation inspired by the Autoconf team.
>  
> -set_cc_for_build='
> -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
> -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
> -: ${TMPDIR=/tmp} ;
> - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
> - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
> - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
> - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
> -dummy=$tmp/dummy ;
> -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
> -case $CC_FOR_BUILD,$HOST_CC,$CC in
> - ,,)    echo "int x;" > $dummy.c ;
> -	for c in cc gcc c89 c99 ; do
> -	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
> -	     CC_FOR_BUILD="$c"; break ;
> -	  fi ;
> -	done ;
> -	if test x"$CC_FOR_BUILD" = x ; then
> -	  CC_FOR_BUILD=no_compiler_found ;
> -	fi
> -	;;
> - ,,*)   CC_FOR_BUILD=$CC ;;
> - ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
> -esac ; set_cc_for_build= ;'
> +tmp=
> +# shellcheck disable=SC2172
> +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
> +
> +set_cc_for_build() {
> +    : "${TMPDIR=/tmp}"
> +    # shellcheck disable=SC2039
> +    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
> +	{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
> +	{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
> +	{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
> +    dummy=$tmp/dummy
> +    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
> +	,,)    echo "int x;" > "$dummy.c"
> +	       for driver in cc gcc c89 c99 ; do
> +		   if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
> +		       CC_FOR_BUILD="$driver"
> +		       break
> +		   fi
> +	       done
> +	       if test x"$CC_FOR_BUILD" = x ; then
> +		   CC_FOR_BUILD=no_compiler_found
> +	       fi
> +	       ;;
> +	,,*)   CC_FOR_BUILD=$CC ;;
> +	,*,*)  CC_FOR_BUILD=$HOST_CC ;;
> +    esac
> +}
>  
>  # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
>  # (ghazi at noc.rutgers.edu 1994-08-24)
> -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
> +if test -f /.attbin/uname ; then
>  	PATH=$PATH:/.attbin ; export PATH
>  fi
>  
> @@ -132,14 +134,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
>  UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
>  UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
>  
> -case "${UNAME_SYSTEM}" in
> +case "$UNAME_SYSTEM" in
>  Linux|GNU|GNU/*)
>  	# If the system lacks a compiler, then just pick glibc.
>  	# We could probably try harder.
>  	LIBC=gnu
>  
> -	eval $set_cc_for_build
> -	cat <<-EOF > $dummy.c
> +	set_cc_for_build
> +	cat <<-EOF > "$dummy.c"
>  	#include <features.h>
>  	#if defined(__UCLIBC__)
>  	LIBC=uclibc
> @@ -149,13 +151,20 @@ Linux|GNU|GNU/*)
>  	LIBC=gnu
>  	#endif
>  	EOF
> -	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
> +	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
> +
> +	# If ldd exists, use it to detect musl libc.
> +	if command -v ldd >/dev/null && \
> +		ldd --version 2>&1 | grep -q ^musl
> +	then
> +	    LIBC=musl
> +	fi
>  	;;
>  esac
>  
>  # Note: order is significant - the case branches are not exclusive.
>  
> -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
> +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
>      *:NetBSD:*:*)
>  	# NetBSD (nbsd) targets should (where applicable) match one or
>  	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
> @@ -169,30 +178,30 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>  	# portion of the name.  We always set it to "unknown".
>  	sysctl="sysctl -n hw.machine_arch"
>  	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
> -	    /sbin/$sysctl 2>/dev/null || \
> -	    /usr/sbin/$sysctl 2>/dev/null || \
> +	    "/sbin/$sysctl" 2>/dev/null || \
> +	    "/usr/sbin/$sysctl" 2>/dev/null || \
>  	    echo unknown)`
> -	case "${UNAME_MACHINE_ARCH}" in
> +	case "$UNAME_MACHINE_ARCH" in
>  	    armeb) machine=armeb-unknown ;;
>  	    arm*) machine=arm-unknown ;;
>  	    sh3el) machine=shl-unknown ;;
>  	    sh3eb) machine=sh-unknown ;;
>  	    sh5el) machine=sh5le-unknown ;;
>  	    earmv*)
> -		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
> -		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
> -		machine=${arch}${endian}-unknown
> +		arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
> +		endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
> +		machine="${arch}${endian}"-unknown
>  		;;
> -	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
> +	    *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
>  	esac
>  	# The Operating System including object format, if it has switched
>  	# to ELF recently (or will in the future) and ABI.
> -	case "${UNAME_MACHINE_ARCH}" in
> +	case "$UNAME_MACHINE_ARCH" in
>  	    earm*)
>  		os=netbsdelf
>  		;;
>  	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
> -		eval $set_cc_for_build
> +		set_cc_for_build
>  		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
>  			| grep -q __ELF__
>  		then
> @@ -208,10 +217,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>  		;;
>  	esac
>  	# Determine ABI tags.
> -	case "${UNAME_MACHINE_ARCH}" in
> +	case "$UNAME_MACHINE_ARCH" in
>  	    earm*)
>  		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
> -		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
> +		abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
>  		;;
>  	esac
>  	# The OS release
> @@ -219,46 +228,55 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>  	# thus, need a distinct triplet. However, they do not need
>  	# kernel version information, so it can be replaced with a
>  	# suitable tag, in the style of linux-gnu.
> -	case "${UNAME_VERSION}" in
> +	case "$UNAME_VERSION" in
>  	    Debian*)
>  		release='-gnu'
>  		;;
>  	    *)
> -		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
> +		release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
>  		;;
>  	esac
>  	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
>  	# contains redundant information, the shorter form:
>  	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
> -	echo "${machine}-${os}${release}${abi}"
> +	echo "$machine-${os}${release}${abi-}"
>  	exit ;;
>      *:Bitrig:*:*)
>  	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
> -	echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
> +	echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
>  	exit ;;
>      *:OpenBSD:*:*)
>  	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
> -	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
> +	echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
>  	exit ;;
>      *:LibertyBSD:*:*)
>  	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
> -	echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
> +	echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
> +	exit ;;
> +    *:MidnightBSD:*:*)
> +	echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
>  	exit ;;
>      *:ekkoBSD:*:*)
> -	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
> +	echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
>  	exit ;;
>      *:SolidBSD:*:*)
> -	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
> +	echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
>  	exit ;;
>      macppc:MirBSD:*:*)
> -	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
> +	echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
>  	exit ;;
>      *:MirBSD:*:*)
> -	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
> +	echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
>  	exit ;;
>      *:Sortix:*:*)
> -	echo ${UNAME_MACHINE}-unknown-sortix
> +	echo "$UNAME_MACHINE"-unknown-sortix
> +	exit ;;
> +    *:Redox:*:*)
> +	echo "$UNAME_MACHINE"-unknown-redox
>  	exit ;;
> +    mips:OSF1:*.*)
> +        echo mips-dec-osf1
> +        exit ;;
>      alpha:OSF1:*:*)
>  	case $UNAME_RELEASE in
>  	*4.0)
> @@ -310,28 +328,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>  	# A Tn.n version is a released field test version.
>  	# A Xn.n version is an unreleased experimental baselevel.
>  	# 1.2 uses "1.2" for uname -r.
> -	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
> +	echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
>  	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
>  	exitcode=$?
>  	trap '' 0
>  	exit $exitcode ;;
> -    Alpha\ *:Windows_NT*:*)
> -	# How do we know it's Interix rather than the generic POSIX subsystem?
> -	# Should we change UNAME_MACHINE based on the output of uname instead
> -	# of the specific Alpha model?
> -	echo alpha-pc-interix
> -	exit ;;
> -    21064:Windows_NT:50:3)
> -	echo alpha-dec-winnt3.5
> -	exit ;;
>      Amiga*:UNIX_System_V:4.0:*)
>  	echo m68k-unknown-sysv4
>  	exit ;;
>      *:[Aa]miga[Oo][Ss]:*:*)
> -	echo ${UNAME_MACHINE}-unknown-amigaos
> +	echo "$UNAME_MACHINE"-unknown-amigaos
>  	exit ;;
>      *:[Mm]orph[Oo][Ss]:*:*)
> -	echo ${UNAME_MACHINE}-unknown-morphos
> +	echo "$UNAME_MACHINE"-unknown-morphos
>  	exit ;;
>      *:OS/390:*:*)
>  	echo i370-ibm-openedition
> @@ -343,7 +352,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>  	echo powerpc-ibm-os400
>  	exit ;;
>      arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
> -	echo arm-acorn-riscix${UNAME_RELEASE}
> +	echo arm-acorn-riscix"$UNAME_RELEASE"
>  	exit ;;
>      arm*:riscos:*:*|arm*:RISCOS:*:*)
>  	echo arm-unknown-riscos
> @@ -370,19 +379,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>  	    sparc) echo sparc-icl-nx7; exit ;;
>  	esac ;;
>      s390x:SunOS:*:*)
> -	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
> +	echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
>  	exit ;;
>      sun4H:SunOS:5.*:*)
> -	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
> +	echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
>  	exit ;;
>      sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
> -	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
> +	echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
>  	exit ;;
>      i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
> -	echo i386-pc-auroraux${UNAME_RELEASE}
> +	echo i386-pc-auroraux"$UNAME_RELEASE"
>  	exit ;;
>      i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
> -	eval $set_cc_for_build
> +	set_cc_for_build
>  	SUN_ARCH=i386
>  	# If there is a compiler, see if it is configured for 64-bit objects.
>  	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
> @@ -395,13 +404,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>  		SUN_ARCH=x86_64
>  	    fi
>  	fi
> -	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
> +	echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
>  	exit ;;
>      sun4*:SunOS:6*:*)
>  	# According to config.sub, this is the proper way to canonicalize
>  	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
>  	# it's likely to be more like Solaris than SunOS4.
> -	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
> +	echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
>  	exit ;;
>      sun4*:SunOS:*:*)
>  	case "`/usr/bin/arch -k`" in
> @@ -410,25 +419,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>  		;;
>  	esac
>  	# Japanese Language versions have a version number like `4.1.3-JL'.
> -	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
> +	echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
>  	exit ;;
>      sun3*:SunOS:*:*)
> -	echo m68k-sun-sunos${UNAME_RELEASE}
> +	echo m68k-sun-sunos"$UNAME_RELEASE"
>  	exit ;;
>      sun*:*:4.2BSD:*)
>  	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
> -	test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
> +	test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
>  	case "`/bin/arch`" in
>  	    sun3)
> -		echo m68k-sun-sunos${UNAME_RELEASE}
> +		echo m68k-sun-sunos"$UNAME_RELEASE"
>  		;;
>  	    sun4)
> -		echo sparc-sun-sunos${UNAME_RELEASE}
> +		echo sparc-sun-sunos"$UNAME_RELEASE"
>  		;;
>  	esac
>  	exit ;;
>      aushp:SunOS:*:*)
> -	echo sparc-auspex-sunos${UNAME_RELEASE}
> +	echo sparc-auspex-sunos"$UNAME_RELEASE"
>  	exit ;;
>      # The situation for MiNT is a little confusing.  The machine name
>      # can be virtually everything (everything which is not
> @@ -439,44 +448,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>      # MiNT.  But MiNT is downward compatible to TOS, so this should
>      # be no problem.
>      atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
> -	echo m68k-atari-mint${UNAME_RELEASE}
> +	echo m68k-atari-mint"$UNAME_RELEASE"
>  	exit ;;
>      atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
> -	echo m68k-atari-mint${UNAME_RELEASE}
> +	echo m68k-atari-mint"$UNAME_RELEASE"
>  	exit ;;
>      *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
> -	echo m68k-atari-mint${UNAME_RELEASE}
> +	echo m68k-atari-mint"$UNAME_RELEASE"
>  	exit ;;
>      milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
> -	echo m68k-milan-mint${UNAME_RELEASE}
> +	echo m68k-milan-mint"$UNAME_RELEASE"
>  	exit ;;
>      hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
> -	echo m68k-hades-mint${UNAME_RELEASE}
> +	echo m68k-hades-mint"$UNAME_RELEASE"
>  	exit ;;
>      *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
> -	echo m68k-unknown-mint${UNAME_RELEASE}
> +	echo m68k-unknown-mint"$UNAME_RELEASE"
>  	exit ;;
>      m68k:machten:*:*)
> -	echo m68k-apple-machten${UNAME_RELEASE}
> +	echo m68k-apple-machten"$UNAME_RELEASE"
>  	exit ;;
>      powerpc:machten:*:*)
> -	echo powerpc-apple-machten${UNAME_RELEASE}
> +	echo powerpc-apple-machten"$UNAME_RELEASE"
>  	exit ;;
>      RISC*:Mach:*:*)
>  	echo mips-dec-mach_bsd4.3
>  	exit ;;
>      RISC*:ULTRIX:*:*)
> -	echo mips-dec-ultrix${UNAME_RELEASE}
> +	echo mips-dec-ultrix"$UNAME_RELEASE"
>  	exit ;;
>      VAX*:ULTRIX*:*:*)
> -	echo vax-dec-ultrix${UNAME_RELEASE}
> +	echo vax-dec-ultrix"$UNAME_RELEASE"
>  	exit ;;
>      2020:CLIX:*:* | 2430:CLIX:*:*)
> -	echo clipper-intergraph-clix${UNAME_RELEASE}
> +	echo clipper-intergraph-clix"$UNAME_RELEASE"
>  	exit ;;
>      mips:*:*:UMIPS | mips:*:*:RISCos)
> -	eval $set_cc_for_build
> -	sed 's/^	//' << EOF >$dummy.c
> +	set_cc_for_build
> +	sed 's/^	//' << EOF > "$dummy.c"
>  #ifdef __cplusplus
>  #include <stdio.h>  /* for printf() prototype */
>  	int main (int argc, char *argv[]) {
> @@ -485,23 +494,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
>  #endif
>  	#if defined (host_mips) && defined (MIPSEB)
>  	#if defined (SYSTYPE_SYSV)
> -	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
> +	  printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0);
>  	#endif
>  	#if defined (SYSTYPE_SVR4)
> -	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
> +	  printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0);
>  	#endif
>  	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
> -	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
> +	  printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0);
>  	#endif
>  	#endif
>  	  exit (-1);
>  	}
>  EOF
> -	$CC_FOR_BUILD -o $dummy $dummy.c &&
> -	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
> -	  SYSTEM_NAME=`$dummy $dummyarg` &&
> +	$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
> +	  dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
> +	  SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
>  	    { echo "$SYSTEM_NAME"; exit; }
> -	echo mips-mips-riscos${UNAME_RELEASE}
> +	echo mips-mips-riscos"$UNAME_RELEASE"
>  	exit ;;
>      Motorola:PowerMAX_OS:*:*)
>  	echo powerpc-motorola-powermax
> @@ -527,17 +536,17 @@ EOF
>      AViiON:dgux:*:*)
>  	# DG/UX returns AViiON for all architectures
>  	UNAME_PROCESSOR=`/usr/bin/uname -p`
> -	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
> +	if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
>  	then
> -	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
> -	       [ ${TARGET_BINARY_INTERFACE}x = x ]
> +	    if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
> +	       [ "$TARGET_BINARY_INTERFACE"x = x ]
>  	    then
> -		echo m88k-dg-dgux${UNAME_RELEASE}
> +		echo m88k-dg-dgux"$UNAME_RELEASE"
>  	    else
> -		echo m88k-dg-dguxbcs${UNAME_RELEASE}
> +		echo m88k-dg-dguxbcs"$UNAME_RELEASE"
>  	    fi
>  	else
> -	    echo i586-dg-dgux${UNAME_RELEASE}
> +	    echo i586-dg-dgux"$UNAME_RELEASE"
>  	fi
>  	exit ;;
>      M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
> @@ -554,7 +563,7 @@ EOF
>  	echo m68k-tektronix-bsd
>  	exit ;;
>      *:IRIX*:*:*)
> -	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
> +	echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
>  	exit ;;
>      ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
>  	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
> @@ -566,14 +575,14 @@ EOF
>  	if [ -x /usr/bin/oslevel ] ; then
>  		IBM_REV=`/usr/bin/oslevel`
>  	else
> -		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
> +		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
>  	fi
> -	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
> +	echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
>  	exit ;;
>      *:AIX:2:3)
>  	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
> -		eval $set_cc_for_build
> -		sed 's/^		//' << EOF >$dummy.c
> +		set_cc_for_build
> +		sed 's/^		//' << EOF > "$dummy.c"
>  		#include <sys/systemcfg.h>
>  
>  		main()
> @@ -584,7 +593,7 @@ EOF
>  			exit(0);
>  			}
>  EOF
> -		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
> +		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
>  		then
>  			echo "$SYSTEM_NAME"
>  		else
> @@ -598,7 +607,7 @@ EOF
>  	exit ;;
>      *:AIX:*:[4567])
>  	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
> -	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
> +	if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
>  		IBM_ARCH=rs6000
>  	else
>  		IBM_ARCH=powerpc
> @@ -607,18 +616,18 @@ EOF
>  		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
>  			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
>  	else
> -		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
> +		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
>  	fi
> -	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
> +	echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
>  	exit ;;
>      *:AIX:*:*)
>  	echo rs6000-ibm-aix
>  	exit ;;
> -    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
> +    ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
>  	echo romp-ibm-bsd4.4
>  	exit ;;
>      ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
> -	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
> +	echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
>  	exit ;;                             # report: romp-ibm BSD 4.3
>      *:BOSX:*:*)
>  	echo rs6000-bull-bosx
> @@ -633,28 +642,28 @@ EOF
>  	echo m68k-hp-bsd4.4
>  	exit ;;
>      9000/[34678]??:HP-UX:*:*)
> -	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
> -	case "${UNAME_MACHINE}" in
> -	    9000/31? )            HP_ARCH=m68000 ;;
> -	    9000/[34]?? )         HP_ARCH=m68k ;;
> +	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
> +	case "$UNAME_MACHINE" in
> +	    9000/31?)            HP_ARCH=m68000 ;;
> +	    9000/[34]??)         HP_ARCH=m68k ;;
>  	    9000/[678][0-9][0-9])
>  		if [ -x /usr/bin/getconf ]; then
>  		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
>  		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
> -		    case "${sc_cpu_version}" in
> +		    case "$sc_cpu_version" in
>  		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
>  		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
>  		      532)                      # CPU_PA_RISC2_0
> -			case "${sc_kernel_bits}" in
> +			case "$sc_kernel_bits" in
>  			  32) HP_ARCH=hppa2.0n ;;
>  			  64) HP_ARCH=hppa2.0w ;;
>  			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
>  			esac ;;
>  		    esac
>  		fi
> -		if [ "${HP_ARCH}" = "" ]; then
> -		    eval $set_cc_for_build
> -		    sed 's/^		//' << EOF >$dummy.c
> +		if [ "$HP_ARCH" = "" ]; then
> +		    set_cc_for_build
> +		    sed 's/^		//' << EOF > "$dummy.c"
>  
>  		#define _HPUX_SOURCE
>  		#include <stdlib.h>
> @@ -687,13 +696,13 @@ EOF
>  		    exit (0);
>  		}
>  EOF
> -		    (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
> +		    (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
>  		    test -z "$HP_ARCH" && HP_ARCH=hppa
>  		fi ;;
>  	esac
> -	if [ ${HP_ARCH} = hppa2.0w ]
> +	if [ "$HP_ARCH" = hppa2.0w ]
>  	then
> -	    eval $set_cc_for_build
> +	    set_cc_for_build
>  
>  	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
>  	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
> @@ -712,15 +721,15 @@ EOF
>  		HP_ARCH=hppa64
>  	    fi
>  	fi
> -	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
> +	echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
>  	exit ;;
>      ia64:HP-UX:*:*)
> -	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
> -	echo ia64-hp-hpux${HPUX_REV}
> +	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
> +	echo ia64-hp-hpux"$HPUX_REV"
>  	exit ;;
>      3050*:HI-UX:*:*)
> -	eval $set_cc_for_build
> -	sed 's/^	//' << EOF >$dummy.c
> +	set_cc_for_build
> +	sed 's/^	//' << EOF > "$dummy.c"
>  	#include <unistd.h>
>  	int
>  	main ()
> @@ -745,11 +754,11 @@ EOF
>  	  exit (0);
>  	}
>  EOF
> -	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
> +	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
>  		{ echo "$SYSTEM_NAME"; exit; }
>  	echo unknown-hitachi-hiuxwe2
>  	exit ;;
> -    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
> +    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
>  	echo hppa1.1-hp-bsd
>  	exit ;;
>      9000/8??:4.3bsd:*:*)
> @@ -758,7 +767,7 @@ EOF
>      *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
>  	echo hppa1.0-hp-mpeix
>  	exit ;;
> -    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
> +    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
>  	echo hppa1.1-hp-osf
>  	exit ;;
>      hp8??:OSF1:*:*)
> @@ -766,9 +775,9 @@ EOF
>  	exit ;;
>      i*86:OSF1:*:*)
>  	if [ -x /usr/sbin/sysversion ] ; then
> -	    echo ${UNAME_MACHINE}-unknown-osf1mk
> +	    echo "$UNAME_MACHINE"-unknown-osf1mk
>  	else
> -	    echo ${UNAME_MACHINE}-unknown-osf1
> +	    echo "$UNAME_MACHINE"-unknown-osf1
>  	fi
>  	exit ;;
>      parisc*:Lites*:*:*)
> @@ -793,127 +802,120 @@ EOF
>  	echo c4-convex-bsd
>  	exit ;;
>      CRAY*Y-MP:*:*:*)
> -	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
> +	echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
>  	exit ;;
>      CRAY*[A-Z]90:*:*:*)
> -	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
> +	echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
>  	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
>  	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
>  	      -e 's/\.[^.]*$/.X/'
>  	exit ;;
>      CRAY*TS:*:*:*)
> -	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
> +	echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
>  	exit ;;
>      CRAY*T3E:*:*:*)
> -	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
> +	echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
>  	exit ;;
>      CRAY*SV1:*:*:*)
> -	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
> +	echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
>  	exit ;;
>      *:UNICOS/mp:*:*)
> -	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
> +	echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
>  	exit ;;
>      F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
>  	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
>  	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
> -	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
> +	FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
>  	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
>  	exit ;;
>      5000:UNIX_System_V:4.*:*)
>  	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
> -	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
> +	FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
>  	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
>  	exit ;;
>      i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
> -	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
> +	echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
>  	exit ;;
>      sparc*:BSD/OS:*:*)
> -	echo sparc-unknown-bsdi${UNAME_RELEASE}
> +	echo sparc-unknown-bsdi"$UNAME_RELEASE"
>  	exit ;;
>      *:BSD/OS:*:*)
> -	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
> +	echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
> +	exit ;;
> +    arm:FreeBSD:*:*)
> +	UNAME_PROCESSOR=`uname -p`
> +	set_cc_for_build
> +	if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
> +	    | grep -q __ARM_PCS_VFP
> +	then
> +	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
> +	else
> +	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
> +	fi
>  	exit ;;
>      *:FreeBSD:*:*)
>  	UNAME_PROCESSOR=`/usr/bin/uname -p`
> -	case ${UNAME_PROCESSOR} in
> +	case "$UNAME_PROCESSOR" in
>  	    amd64)
> -		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
> -	    *)
> -		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
> +		UNAME_PROCESSOR=x86_64 ;;
> +	    i386)
> +		UNAME_PROCESSOR=i586 ;;
>  	esac
> +	echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
>  	exit ;;
>      i*:CYGWIN*:*)
> -	echo ${UNAME_MACHINE}-pc-cygwin
> +	echo "$UNAME_MACHINE"-pc-cygwin
>  	exit ;;
>      *:MINGW64*:*)
> -	echo ${UNAME_MACHINE}-pc-mingw64
> +	echo "$UNAME_MACHINE"-pc-mingw64
>  	exit ;;
>      *:MINGW*:*)
> -	echo ${UNAME_MACHINE}-pc-mingw32
> +	echo "$UNAME_MACHINE"-pc-mingw32
>  	exit ;;
>      *:MSYS*:*)
> -	echo ${UNAME_MACHINE}-pc-msys
> -	exit ;;
> -    i*:windows32*:*)
> -	# uname -m includes "-pc" on this system.
> -	echo ${UNAME_MACHINE}-mingw32
> +	echo "$UNAME_MACHINE"-pc-msys
>  	exit ;;
>      i*:PW*:*)
> -	echo ${UNAME_MACHINE}-pc-pw32
> +	echo "$UNAME_MACHINE"-pc-pw32
>  	exit ;;
>      *:Interix*:*)
> -	case ${UNAME_MACHINE} in
> +	case "$UNAME_MACHINE" in
>  	    x86)
> -		echo i586-pc-interix${UNAME_RELEASE}
> +		echo i586-pc-interix"$UNAME_RELEASE"
>  		exit ;;
>  	    authenticamd | genuineintel | EM64T)
> -		echo x86_64-unknown-interix${UNAME_RELEASE}
> +		echo x86_64-unknown-interix"$UNAME_RELEASE"
>  		exit ;;
>  	    IA64)
> -		echo ia64-unknown-interix${UNAME_RELEASE}
> +		echo ia64-unknown-interix"$UNAME_RELEASE"
>  		exit ;;
>  	esac ;;
> -    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
> -	echo i${UNAME_MACHINE}-pc-mks
> -	exit ;;
> -    8664:Windows_NT:*)
> -	echo x86_64-pc-mks
> -	exit ;;
> -    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
> -	# How do we know it's Interix rather than the generic POSIX subsystem?
> -	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
> -	# UNAME_MACHINE based on the output of uname instead of i386?
> -	echo i586-pc-interix
> -	exit ;;
>      i*:UWIN*:*)
> -	echo ${UNAME_MACHINE}-pc-uwin
> +	echo "$UNAME_MACHINE"-pc-uwin
>  	exit ;;
>      amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
> -	echo x86_64-unknown-cygwin
> -	exit ;;
> -    p*:CYGWIN*:*)
> -	echo powerpcle-unknown-cygwin
> +	echo x86_64-pc-cygwin
>  	exit ;;
>      prep*:SunOS:5.*:*)
> -	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
> +	echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
>  	exit ;;
>      *:GNU:*:*)
>  	# the GNU system
> -	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
> +	echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
>  	exit ;;
>      *:GNU/*:*:*)
>  	# other systems with GNU libc and userland
> -	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
> +	echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
>  	exit ;;
> -    i*86:Minix:*:*)
> -	echo ${UNAME_MACHINE}-pc-minix
> +    *:Minix:*:*)
> +	echo "$UNAME_MACHINE"-unknown-minix
>  	exit ;;
>      aarch64:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      aarch64_be:Linux:*:*)
>  	UNAME_MACHINE=aarch64_be
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      alpha:Linux:*:*)
>  	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
> @@ -927,134 +929,168 @@ EOF
>  	esac
>  	objdump --private-headers /bin/sh | grep -q ld.so.1
>  	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      arc:Linux:*:* | arceb:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      arm*:Linux:*:*)
> -	eval $set_cc_for_build
> +	set_cc_for_build
>  	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
>  	    | grep -q __ARM_EABI__
>  	then
> -	    echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	else
>  	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
>  		| grep -q __ARM_PCS_VFP
>  	    then
> -		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
> +		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
>  	    else
> -		echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
> +		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
>  	    fi
>  	fi
>  	exit ;;
>      avr32*:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      cris:Linux:*:*)
> -	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
>  	exit ;;
>      crisv32:Linux:*:*)
> -	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
>  	exit ;;
>      e2k:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      frv:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      hexagon:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      i*86:Linux:*:*)
> -	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
>  	exit ;;
>      ia64:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      k1om:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      m32r*:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      m68*:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      mips:Linux:*:* | mips64:Linux:*:*)
> -	eval $set_cc_for_build
> -	sed 's/^	//' << EOF >$dummy.c
> +	set_cc_for_build
> +	IS_GLIBC=0
> +	test x"${LIBC}" = xgnu && IS_GLIBC=1
> +	sed 's/^	//' << EOF > "$dummy.c"
>  	#undef CPU
> -	#undef ${UNAME_MACHINE}
> -	#undef ${UNAME_MACHINE}el
> +	#undef mips
> +	#undef mipsel
> +	#undef mips64
> +	#undef mips64el
> +	#if ${IS_GLIBC} && defined(_ABI64)
> +	LIBCABI=gnuabi64
> +	#else
> +	#if ${IS_GLIBC} && defined(_ABIN32)
> +	LIBCABI=gnuabin32
> +	#else
> +	LIBCABI=${LIBC}
> +	#endif
> +	#endif
> +
> +	#if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
> +	CPU=mipsisa64r6
> +	#else
> +	#if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
> +	CPU=mipsisa32r6
> +	#else
> +	#if defined(__mips64)
> +	CPU=mips64
> +	#else
> +	CPU=mips
> +	#endif
> +	#endif
> +	#endif
> +
>  	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
> -	CPU=${UNAME_MACHINE}el
> +	MIPS_ENDIAN=el
>  	#else
>  	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
> -	CPU=${UNAME_MACHINE}
> +	MIPS_ENDIAN=
>  	#else
> -	CPU=
> +	MIPS_ENDIAN=
>  	#endif
>  	#endif
>  EOF
> -	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
> -	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
> +	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
> +	test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
>  	;;
> +    mips64el:Linux:*:*)
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
> +	exit ;;
>      openrisc*:Linux:*:*)
> -	echo or1k-unknown-linux-${LIBC}
> +	echo or1k-unknown-linux-"$LIBC"
>  	exit ;;
>      or32:Linux:*:* | or1k*:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      padre:Linux:*:*)
> -	echo sparc-unknown-linux-${LIBC}
> +	echo sparc-unknown-linux-"$LIBC"
>  	exit ;;
>      parisc64:Linux:*:* | hppa64:Linux:*:*)
> -	echo hppa64-unknown-linux-${LIBC}
> +	echo hppa64-unknown-linux-"$LIBC"
>  	exit ;;
>      parisc:Linux:*:* | hppa:Linux:*:*)
>  	# Look for CPU level
>  	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
> -	  PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
> -	  PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
> -	  *)    echo hppa-unknown-linux-${LIBC} ;;
> +	  PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
> +	  PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
> +	  *)    echo hppa-unknown-linux-"$LIBC" ;;
>  	esac
>  	exit ;;
>      ppc64:Linux:*:*)
> -	echo powerpc64-unknown-linux-${LIBC}
> +	echo powerpc64-unknown-linux-"$LIBC"
>  	exit ;;
>      ppc:Linux:*:*)
> -	echo powerpc-unknown-linux-${LIBC}
> +	echo powerpc-unknown-linux-"$LIBC"
>  	exit ;;
>      ppc64le:Linux:*:*)
> -	echo powerpc64le-unknown-linux-${LIBC}
> +	echo powerpc64le-unknown-linux-"$LIBC"
>  	exit ;;
>      ppcle:Linux:*:*)
> -	echo powerpcle-unknown-linux-${LIBC}
> +	echo powerpcle-unknown-linux-"$LIBC"
> +	exit ;;
> +    riscv32:Linux:*:* | riscv64:Linux:*:*)
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      s390:Linux:*:* | s390x:Linux:*:*)
> -	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
>  	exit ;;
>      sh64*:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      sh*:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      sparc:Linux:*:* | sparc64:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      tile*:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      vax:Linux:*:*)
> -	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
>  	exit ;;
>      x86_64:Linux:*:*)
> -	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
>  	exit ;;
>      xtensa*:Linux:*:*)
> -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
> +	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
>  	exit ;;
>      i*86:DYNIX/ptx:4*:*)
>  	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
> @@ -1068,34 +1104,34 @@ EOF
>  	# I am not positive that other SVR4 systems won't match this,
>  	# I just have to hope.  -- rms.
>  	# Use sysv4.2uw... so that sysv4* matches it.
> -	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
> +	echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
>  	exit ;;
>      i*86:OS/2:*:*)
>  	# If we were able to find `uname', then EMX Unix compatibility
>  	# is probably installed.
> -	echo ${UNAME_MACHINE}-pc-os2-emx
> +	echo "$UNAME_MACHINE"-pc-os2-emx
>  	exit ;;
>      i*86:XTS-300:*:STOP)
> -	echo ${UNAME_MACHINE}-unknown-stop
> +	echo "$UNAME_MACHINE"-unknown-stop
>  	exit ;;
>      i*86:atheos:*:*)
> -	echo ${UNAME_MACHINE}-unknown-atheos
> +	echo "$UNAME_MACHINE"-unknown-atheos
>  	exit ;;
>      i*86:syllable:*:*)
> -	echo ${UNAME_MACHINE}-pc-syllable
> +	echo "$UNAME_MACHINE"-pc-syllable
>  	exit ;;
>      i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
> -	echo i386-unknown-lynxos${UNAME_RELEASE}
> +	echo i386-unknown-lynxos"$UNAME_RELEASE"
>  	exit ;;
>      i*86:*DOS:*:*)
> -	echo ${UNAME_MACHINE}-pc-msdosdjgpp
> +	echo "$UNAME_MACHINE"-pc-msdosdjgpp
>  	exit ;;
> -    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
> -	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
> +    i*86:*:4.*:*)
> +	UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
>  	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
> -		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
> +		echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
>  	else
> -		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
> +		echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
>  	fi
>  	exit ;;
>      i*86:*:5:[678]*)
> @@ -1105,12 +1141,12 @@ EOF
>  	    *Pentium)	     UNAME_MACHINE=i586 ;;
>  	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
>  	esac
> -	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
> +	echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
>  	exit ;;
>      i*86:*:3.2:*)
>  	if test -f /usr/options/cb.name; then
>  		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
> -		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
> +		echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
>  	elif /bin/uname -X 2>/dev/null >/dev/null ; then
>  		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
>  		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
> @@ -1120,9 +1156,9 @@ EOF
>  			&& UNAME_MACHINE=i686
>  		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
>  			&& UNAME_MACHINE=i686
> -		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
> +		echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
>  	else
> -		echo ${UNAME_MACHINE}-pc-sysv32
> +		echo "$UNAME_MACHINE"-pc-sysv32
>  	fi
>  	exit ;;
>      pc:*:*:*)
> @@ -1142,9 +1178,9 @@ EOF
>  	exit ;;
>      i860:*:4.*:*) # i860-SVR4
>  	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
> -	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
> +	  echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
>  	else # Add other i860-SVR4 vendors below as they are discovered.
> -	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
> +	  echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
>  	fi
>  	exit ;;
>      mini*:CTIX:SYS*5:*)
> @@ -1164,9 +1200,9 @@ EOF
>  	test -r /etc/.relid \
>  	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
>  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
> -	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
> +	  && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
>  	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
> -	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
> +	  && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
>      3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
>  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
>  	  && { echo i486-ncr-sysv4; exit; } ;;
> @@ -1175,28 +1211,28 @@ EOF
>  	test -r /etc/.relid \
>  	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
>  	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
> -	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
> +	    && { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
>  	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
> -	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
> +	    && { echo i586-ncr-sysv4.3"$OS_REL"; exit; }
>  	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
> -	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
> +	    && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
>      m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
> -	echo m68k-unknown-lynxos${UNAME_RELEASE}
> +	echo m68k-unknown-lynxos"$UNAME_RELEASE"
>  	exit ;;
>      mc68030:UNIX_System_V:4.*:*)
>  	echo m68k-atari-sysv4
>  	exit ;;
>      TSUNAMI:LynxOS:2.*:*)
> -	echo sparc-unknown-lynxos${UNAME_RELEASE}
> +	echo sparc-unknown-lynxos"$UNAME_RELEASE"
>  	exit ;;
>      rs6000:LynxOS:2.*:*)
> -	echo rs6000-unknown-lynxos${UNAME_RELEASE}
> +	echo rs6000-unknown-lynxos"$UNAME_RELEASE"
>  	exit ;;
>      PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
> -	echo powerpc-unknown-lynxos${UNAME_RELEASE}
> +	echo powerpc-unknown-lynxos"$UNAME_RELEASE"
>  	exit ;;
>      SM[BE]S:UNIX_SV:*:*)
> -	echo mips-dde-sysv${UNAME_RELEASE}
> +	echo mips-dde-sysv"$UNAME_RELEASE"
>  	exit ;;
>      RM*:ReliantUNIX-*:*:*)
>  	echo mips-sni-sysv4
> @@ -1207,7 +1243,7 @@ EOF
>      *:SINIX-*:*:*)
>  	if uname -p 2>/dev/null >/dev/null ; then
>  		UNAME_MACHINE=`(uname -p) 2>/dev/null`
> -		echo ${UNAME_MACHINE}-sni-sysv4
> +		echo "$UNAME_MACHINE"-sni-sysv4
>  	else
>  		echo ns32k-sni-sysv
>  	fi
> @@ -1227,23 +1263,23 @@ EOF
>  	exit ;;
>      i*86:VOS:*:*)
>  	# From Paul.Green at stratus.com.
> -	echo ${UNAME_MACHINE}-stratus-vos
> +	echo "$UNAME_MACHINE"-stratus-vos
>  	exit ;;
>      *:VOS:*:*)
>  	# From Paul.Green at stratus.com.
>  	echo hppa1.1-stratus-vos
>  	exit ;;
>      mc68*:A/UX:*:*)
> -	echo m68k-apple-aux${UNAME_RELEASE}
> +	echo m68k-apple-aux"$UNAME_RELEASE"
>  	exit ;;
>      news*:NEWS-OS:6*:*)
>  	echo mips-sony-newsos6
>  	exit ;;
>      R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
>  	if [ -d /usr/nec ]; then
> -		echo mips-nec-sysv${UNAME_RELEASE}
> +		echo mips-nec-sysv"$UNAME_RELEASE"
>  	else
> -		echo mips-unknown-sysv${UNAME_RELEASE}
> +		echo mips-unknown-sysv"$UNAME_RELEASE"
>  	fi
>  	exit ;;
>      BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
> @@ -1262,49 +1298,56 @@ EOF
>  	echo x86_64-unknown-haiku
>  	exit ;;
>      SX-4:SUPER-UX:*:*)
> -	echo sx4-nec-superux${UNAME_RELEASE}
> +	echo sx4-nec-superux"$UNAME_RELEASE"
>  	exit ;;
>      SX-5:SUPER-UX:*:*)
> -	echo sx5-nec-superux${UNAME_RELEASE}
> +	echo sx5-nec-superux"$UNAME_RELEASE"
>  	exit ;;
>      SX-6:SUPER-UX:*:*)
> -	echo sx6-nec-superux${UNAME_RELEASE}
> +	echo sx6-nec-superux"$UNAME_RELEASE"
>  	exit ;;
>      SX-7:SUPER-UX:*:*)
> -	echo sx7-nec-superux${UNAME_RELEASE}
> +	echo sx7-nec-superux"$UNAME_RELEASE"
>  	exit ;;
>      SX-8:SUPER-UX:*:*)
> -	echo sx8-nec-superux${UNAME_RELEASE}
> +	echo sx8-nec-superux"$UNAME_RELEASE"
>  	exit ;;
>      SX-8R:SUPER-UX:*:*)
> -	echo sx8r-nec-superux${UNAME_RELEASE}
> +	echo sx8r-nec-superux"$UNAME_RELEASE"
>  	exit ;;
>      SX-ACE:SUPER-UX:*:*)
> -	echo sxace-nec-superux${UNAME_RELEASE}
> +	echo sxace-nec-superux"$UNAME_RELEASE"
>  	exit ;;
>      Power*:Rhapsody:*:*)
> -	echo powerpc-apple-rhapsody${UNAME_RELEASE}
> +	echo powerpc-apple-rhapsody"$UNAME_RELEASE"
>  	exit ;;
>      *:Rhapsody:*:*)
> -	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
> +	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
>  	exit ;;
>      *:Darwin:*:*)
> -	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
> -	eval $set_cc_for_build
> -	if test "$UNAME_PROCESSOR" = unknown ; then
> -	    UNAME_PROCESSOR=powerpc
> -	fi
> -	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
> +	set_cc_for_build
> +	UNAME_PROCESSOR=`uname -p`
> +	case $UNAME_PROCESSOR in
> +	    unknown) UNAME_PROCESSOR=powerpc ;;
> +	esac
> +	if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
>  	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
>  		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
> -		    (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
> -		    grep IS_64BIT_ARCH >/dev/null
> +		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
> +		       grep IS_64BIT_ARCH >/dev/null
>  		then
>  		    case $UNAME_PROCESSOR in
>  			i386) UNAME_PROCESSOR=x86_64 ;;
>  			powerpc) UNAME_PROCESSOR=powerpc64 ;;
>  		    esac
>  		fi
> +		# On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
> +		if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
> +		       (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
> +		       grep IS_PPC >/dev/null
> +		then
> +		    UNAME_PROCESSOR=powerpc
> +		fi
>  	    fi
>  	elif test "$UNAME_PROCESSOR" = i386 ; then
>  	    # Avoid executing cc on OS X 10.9, as it ships with a stub
> @@ -1315,7 +1358,7 @@ EOF
>  	    # that Apple uses in portable devices.
>  	    UNAME_PROCESSOR=x86_64
>  	fi
> -	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
> +	echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
>  	exit ;;
>      *:procnto*:*:* | *:QNX:[0123456789]*:*)
>  	UNAME_PROCESSOR=`uname -p`
> @@ -1323,19 +1366,25 @@ EOF
>  		UNAME_PROCESSOR=i386
>  		UNAME_MACHINE=pc
>  	fi
> -	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
> +	echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
>  	exit ;;
>      *:QNX:*:4*)
>  	echo i386-pc-qnx
>  	exit ;;
> -    NEO-?:NONSTOP_KERNEL:*:*)
> -	echo neo-tandem-nsk${UNAME_RELEASE}
> +    NEO-*:NONSTOP_KERNEL:*:*)
> +	echo neo-tandem-nsk"$UNAME_RELEASE"
>  	exit ;;
>      NSE-*:NONSTOP_KERNEL:*:*)
> -	echo nse-tandem-nsk${UNAME_RELEASE}
> +	echo nse-tandem-nsk"$UNAME_RELEASE"
>  	exit ;;
> -    NSR-?:NONSTOP_KERNEL:*:*)
> -	echo nsr-tandem-nsk${UNAME_RELEASE}
> +    NSR-*:NONSTOP_KERNEL:*:*)
> +	echo nsr-tandem-nsk"$UNAME_RELEASE"
> +	exit ;;
> +    NSV-*:NONSTOP_KERNEL:*:*)
> +	echo nsv-tandem-nsk"$UNAME_RELEASE"
> +	exit ;;
> +    NSX-*:NONSTOP_KERNEL:*:*)
> +	echo nsx-tandem-nsk"$UNAME_RELEASE"
>  	exit ;;
>      *:NonStop-UX:*:*)
>  	echo mips-compaq-nonstopux
> @@ -1344,18 +1393,19 @@ EOF
>  	echo bs2000-siemens-sysv
>  	exit ;;
>      DS/*:UNIX_System_V:*:*)
> -	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
> +	echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
>  	exit ;;
>      *:Plan9:*:*)
>  	# "uname -m" is not consistent, so use $cputype instead. 386
>  	# is converted to i386 for consistency with other x86
>  	# operating systems.
> +	# shellcheck disable=SC2154
>  	if test "$cputype" = 386; then
>  	    UNAME_MACHINE=i386
>  	else
>  	    UNAME_MACHINE="$cputype"
>  	fi
> -	echo ${UNAME_MACHINE}-unknown-plan9
> +	echo "$UNAME_MACHINE"-unknown-plan9
>  	exit ;;
>      *:TOPS-10:*:*)
>  	echo pdp10-unknown-tops10
> @@ -1376,14 +1426,14 @@ EOF
>  	echo pdp10-unknown-its
>  	exit ;;
>      SEI:*:*:SEIUX)
> -	echo mips-sei-seiux${UNAME_RELEASE}
> +	echo mips-sei-seiux"$UNAME_RELEASE"
>  	exit ;;
>      *:DragonFly:*:*)
> -	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
> +	echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
>  	exit ;;
>      *:*VMS:*:*)
>  	UNAME_MACHINE=`(uname -p) 2>/dev/null`
> -	case "${UNAME_MACHINE}" in
> +	case "$UNAME_MACHINE" in
>  	    A*) echo alpha-dec-vms ; exit ;;
>  	    I*) echo ia64-dec-vms ; exit ;;
>  	    V*) echo vax-dec-vms ; exit ;;
> @@ -1392,32 +1442,184 @@ EOF
>  	echo i386-pc-xenix
>  	exit ;;
>      i*86:skyos:*:*)
> -	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
> +	echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
>  	exit ;;
>      i*86:rdos:*:*)
> -	echo ${UNAME_MACHINE}-pc-rdos
> +	echo "$UNAME_MACHINE"-pc-rdos
>  	exit ;;
>      i*86:AROS:*:*)
> -	echo ${UNAME_MACHINE}-pc-aros
> +	echo "$UNAME_MACHINE"-pc-aros
>  	exit ;;
>      x86_64:VMkernel:*:*)
> -	echo ${UNAME_MACHINE}-unknown-esx
> +	echo "$UNAME_MACHINE"-unknown-esx
>  	exit ;;
>      amd64:Isilon\ OneFS:*:*)
>  	echo x86_64-unknown-onefs
>  	exit ;;
> +    *:Unleashed:*:*)
> +	echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
> +	exit ;;
> +esac
> +
> +# No uname command or uname output not recognized.
> +set_cc_for_build
> +cat > "$dummy.c" <<EOF
> +#ifdef _SEQUENT_
> +#include <sys/types.h>
> +#include <sys/utsname.h>
> +#endif
> +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
> +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
> +#include <signal.h>
> +#if defined(_SIZE_T_) || defined(SIGLOST)
> +#include <sys/utsname.h>
> +#endif
> +#endif
> +#endif
> +main ()
> +{
> +#if defined (sony)
> +#if defined (MIPSEB)
> +  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
> +     I don't know....  */
> +  printf ("mips-sony-bsd\n"); exit (0);
> +#else
> +#include <sys/param.h>
> +  printf ("m68k-sony-newsos%s\n",
> +#ifdef NEWSOS4
> +  "4"
> +#else
> +  ""
> +#endif
> +  ); exit (0);
> +#endif
> +#endif
> +
> +#if defined (NeXT)
> +#if !defined (__ARCHITECTURE__)
> +#define __ARCHITECTURE__ "m68k"
> +#endif
> +  int version;
> +  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
> +  if (version < 4)
> +    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
> +  else
> +    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
> +  exit (0);
> +#endif
> +
> +#if defined (MULTIMAX) || defined (n16)
> +#if defined (UMAXV)
> +  printf ("ns32k-encore-sysv\n"); exit (0);
> +#else
> +#if defined (CMU)
> +  printf ("ns32k-encore-mach\n"); exit (0);
> +#else
> +  printf ("ns32k-encore-bsd\n"); exit (0);
> +#endif
> +#endif
> +#endif
> +
> +#if defined (__386BSD__)
> +  printf ("i386-pc-bsd\n"); exit (0);
> +#endif
> +
> +#if defined (sequent)
> +#if defined (i386)
> +  printf ("i386-sequent-dynix\n"); exit (0);
> +#endif
> +#if defined (ns32000)
> +  printf ("ns32k-sequent-dynix\n"); exit (0);
> +#endif
> +#endif
> +
> +#if defined (_SEQUENT_)
> +  struct utsname un;
> +
> +  uname(&un);
> +  if (strncmp(un.version, "V2", 2) == 0) {
> +    printf ("i386-sequent-ptx2\n"); exit (0);
> +  }
> +  if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
> +    printf ("i386-sequent-ptx1\n"); exit (0);
> +  }
> +  printf ("i386-sequent-ptx\n"); exit (0);
> +#endif
> +
> +#if defined (vax)
> +#if !defined (ultrix)
> +#include <sys/param.h>
> +#if defined (BSD)
> +#if BSD == 43
> +  printf ("vax-dec-bsd4.3\n"); exit (0);
> +#else
> +#if BSD == 199006
> +  printf ("vax-dec-bsd4.3reno\n"); exit (0);
> +#else
> +  printf ("vax-dec-bsd\n"); exit (0);
> +#endif
> +#endif
> +#else
> +  printf ("vax-dec-bsd\n"); exit (0);
> +#endif
> +#else
> +#if defined(_SIZE_T_) || defined(SIGLOST)
> +  struct utsname un;
> +  uname (&un);
> +  printf ("vax-dec-ultrix%s\n", un.release); exit (0);
> +#else
> +  printf ("vax-dec-ultrix\n"); exit (0);
> +#endif
> +#endif
> +#endif
> +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
> +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
> +#if defined(_SIZE_T_) || defined(SIGLOST)
> +  struct utsname *un;
> +  uname (&un);
> +  printf ("mips-dec-ultrix%s\n", un.release); exit (0);
> +#else
> +  printf ("mips-dec-ultrix\n"); exit (0);
> +#endif
> +#endif
> +#endif
> +
> +#if defined (alliant) && defined (i860)
> +  printf ("i860-alliant-bsd\n"); exit (0);
> +#endif
> +
> +  exit (1);
> +}
> +EOF
> +
> +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
> +	{ echo "$SYSTEM_NAME"; exit; }
> +
> +# Apollos put the system type in the environment.
> +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
> +
> +echo "$0: unable to guess system type" >&2
> +
> +case "$UNAME_MACHINE:$UNAME_SYSTEM" in
> +    mips:Linux | mips64:Linux)
> +	# If we got here on MIPS GNU/Linux, output extra information.
> +	cat >&2 <<EOF
> +
> +NOTE: MIPS GNU/Linux systems require a C compiler to fully recognize
> +the system type. Please install a C compiler and try again.
> +EOF
> +	;;
>  esac
>  
>  cat >&2 <<EOF
> -$0: unable to guess system type
>  
>  This script (version $timestamp), has failed to recognize the
> -operating system you are using. If your script is old, overwrite
> -config.guess and config.sub with the latest versions from:
> +operating system you are using. If your script is old, overwrite *all*
> +copies of config.guess and config.sub with the latest versions from:
>  
> -  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
> +  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
>  and
> -  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
> +  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
>  
>  If $0 has already been updated, send the following data and any
>  information you think might be pertinent to config-patches at gnu.org to
> @@ -1440,16 +1642,16 @@ hostinfo               = `(hostinfo) 2>/dev/null`
>  /usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
>  /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
>  
> -UNAME_MACHINE = ${UNAME_MACHINE}
> -UNAME_RELEASE = ${UNAME_RELEASE}
> -UNAME_SYSTEM  = ${UNAME_SYSTEM}
> -UNAME_VERSION = ${UNAME_VERSION}
> +UNAME_MACHINE = "$UNAME_MACHINE"
> +UNAME_RELEASE = "$UNAME_RELEASE"
> +UNAME_SYSTEM  = "$UNAME_SYSTEM"
> +UNAME_VERSION = "$UNAME_VERSION"
>  EOF
>  
>  exit 1
>  
>  # Local variables:
> -# eval: (add-hook 'write-file-hooks 'time-stamp)
> +# eval: (add-hook 'before-save-hook 'time-stamp)
>  # time-stamp-start: "timestamp='"
>  # time-stamp-format: "%:y-%02m-%02d"
>  # time-stamp-end: "'"
> diff --git a/support/gnuconfig/config.sub b/support/gnuconfig/config.sub
> index 6d86a1e2f7..5b158ac41c 100755
> --- a/support/gnuconfig/config.sub
> +++ b/support/gnuconfig/config.sub
> @@ -1,8 +1,8 @@
>  #! /bin/sh
>  # Configuration validation subroutine script.
> -#   Copyright 1992-2016 Free Software Foundation, Inc.
> +#   Copyright 1992-2019 Free Software Foundation, Inc.
>  
> -timestamp='2016-05-10'
> +timestamp='2019-05-23'
>  
>  # This file is free software; you can redistribute it and/or modify it
>  # under the terms of the GNU General Public License as published by
> @@ -15,7 +15,7 @@ timestamp='2016-05-10'
>  # General Public License for more details.
>  #
>  # You should have received a copy of the GNU General Public License
> -# along with this program; if not, see <http://www.gnu.org/licenses/>.
> +# along with this program; if not, see <https://www.gnu.org/licenses/>.
>  #
>  # As a special exception to the GNU General Public License, if you
>  # distribute this file as part of a program that contains a
> @@ -33,7 +33,7 @@ timestamp='2016-05-10'
>  # Otherwise, we print the canonical config type on stdout and succeed.
>  
>  # You can get the latest version of this script from:
> -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
> +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
>  
>  # This file is supposed to be the same for all GNU packages
>  # and recognize all the CPU types, system types and aliases
> @@ -57,7 +57,7 @@ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
>  
>  Canonicalize a configuration name.
>  
> -Operation modes:
> +Options:
>    -h, --help         print this help, then exit
>    -t, --time-stamp   print date of last modification, then exit
>    -v, --version      print version number, then exit
> @@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
>  version="\
>  GNU config.sub ($timestamp)
>  
> -Copyright 1992-2016 Free Software Foundation, Inc.
> +Copyright 1992-2019 Free Software Foundation, Inc.
>  
>  This is free software; see the source for copying conditions.  There is NO
>  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
> @@ -89,12 +89,12 @@ while test $# -gt 0 ; do
>      - )	# Use stdin as input.
>         break ;;
>      -* )
> -       echo "$me: invalid option $1$help"
> +       echo "$me: invalid option $1$help" >&2
>         exit 1 ;;
>  
>      *local*)
>         # First pass through any local machine types.
> -       echo $1
> +       echo "$1"
>         exit ;;
>  
>      * )
> @@ -110,1234 +110,1167 @@ case $# in
>      exit 1;;
>  esac
>  
> -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
> -# Here we must recognize all the valid KERNEL-OS combinations.
> -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
> -case $maybe_os in
> -  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
> -  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
> -  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
> -  kopensolaris*-gnu* | \
> -  storm-chaos* | os2-emx* | rtmk-nova*)
> -    os=-$maybe_os
> -    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
> -    ;;
> -  android-linux)
> -    os=-linux-android
> -    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
> -    ;;
> -  *)
> -    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
> -    if [ $basic_machine != $1 ]
> -    then os=`echo $1 | sed 's/.*-/-/'`
> -    else os=; fi
> -    ;;
> -esac
> +# Split fields of configuration type
> +# shellcheck disable=SC2162
> +IFS="-" read field1 field2 field3 field4 <<EOF
> +$1
> +EOF
>  
> -### Let's recognize common machines as not being operating systems so
> -### that things like config.sub decstation-3100 work.  We also
> -### recognize some manufacturers as not being operating systems, so we
> -### can provide default operating systems below.
> -case $os in
> -	-sun*os*)
> -		# Prevent following clause from handling this invalid input.
> -		;;
> -	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
> -	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
> -	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
> -	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
> -	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
> -	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
> -	-apple | -axis | -knuth | -cray | -microblaze*)
> -		os=
> -		basic_machine=$1
> -		;;
> -	-bluegene*)
> -		os=-cnk
> -		;;
> -	-sim | -cisco | -oki | -wec | -winbond)
> -		os=
> -		basic_machine=$1
> -		;;
> -	-scout)
> -		;;
> -	-wrs)
> -		os=-vxworks
> -		basic_machine=$1
> -		;;
> -	-chorusos*)
> -		os=-chorusos
> -		basic_machine=$1
> -		;;
> -	-chorusrdb)
> -		os=-chorusrdb
> -		basic_machine=$1
> -		;;
> -	-hiux*)
> -		os=-hiuxwe2
> -		;;
> -	-sco6)
> -		os=-sco5v6
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
> -		;;
> -	-sco5)
> -		os=-sco3.2v5
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
> -		;;
> -	-sco4)
> -		os=-sco3.2v4
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
> -		;;
> -	-sco3.2.[4-9]*)
> -		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
> -		;;
> -	-sco3.2v[4-9]*)
> -		# Don't forget version if it is 3.2v4 or newer.
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
> -		;;
> -	-sco5v6*)
> -		# Don't forget version if it is 3.2v4 or newer.
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
> -		;;
> -	-sco*)
> -		os=-sco3.2v2
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
> -		;;
> -	-udk*)
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
> -		;;
> -	-isc)
> -		os=-isc2.2
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
> -		;;
> -	-clix*)
> -		basic_machine=clipper-intergraph
> -		;;
> -	-isc*)
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
> -		;;
> -	-lynx*178)
> -		os=-lynxos178
> -		;;
> -	-lynx*5)
> -		os=-lynxos5
> -		;;
> -	-lynx*)
> -		os=-lynxos
> +# Separate into logical components for further validation
> +case $1 in
> +	*-*-*-*-*)
> +		echo Invalid configuration \`"$1"\': more than four components >&2
> +		exit 1
>  		;;
> -	-ptx*)
> -		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
> +	*-*-*-*)
> +		basic_machine=$field1-$field2
> +		os=$field3-$field4
>  		;;
> -	-windowsnt*)
> -		os=`echo $os | sed -e 's/windowsnt/winnt/'`
> +	*-*-*)
> +		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
> +		# parts
> +		maybe_os=$field2-$field3
> +		case $maybe_os in
> +			nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
> +			| linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
> +			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
> +			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
> +			| storm-chaos* | os2-emx* | rtmk-nova*)
> +				basic_machine=$field1
> +				os=$maybe_os
> +				;;
> +			android-linux)
> +				basic_machine=$field1-unknown
> +				os=linux-android
> +				;;
> +			*)
> +				basic_machine=$field1-$field2
> +				os=$field3
> +				;;
> +		esac
>  		;;
> -	-psos*)
> -		os=-psos
> +	*-*)
> +		# A lone config we happen to match not fitting any pattern
> +		case $field1-$field2 in
> +			decstation-3100)
> +				basic_machine=mips-dec
> +				os=
> +				;;
> +			*-*)
> +				# Second component is usually, but not always the OS
> +				case $field2 in
> +					# Prevent following clause from handling this valid os
> +					sun*os*)
> +						basic_machine=$field1
> +						os=$field2
> +						;;
> +					# Manufacturers
> +					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
> +					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
> +					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
> +					| convergent* | ncr* | news | 32* | 3600* | 3100* \
> +					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
> +					| ultra | tti* | harris | dolphin | highlevel | gould \
> +					| cbm | ns | masscomp | apple | axis | knuth | cray \
> +					| microblaze* | sim | cisco \
> +					| oki | wec | wrs | winbond)
> +						basic_machine=$field1-$field2
> +						os=
> +						;;
> +					*)
> +						basic_machine=$field1
> +						os=$field2
> +						;;
> +				esac
> +			;;
> +		esac
>  		;;
> -	-mint | -mint[0-9]*)
> -		basic_machine=m68k-atari
> -		os=-mint
> +	*)
> +		# Convert single-component short-hands not valid as part of
> +		# multi-component configurations.
> +		case $field1 in
> +			386bsd)
> +				basic_machine=i386-pc
> +				os=bsd
> +				;;
> +			a29khif)
> +				basic_machine=a29k-amd
> +				os=udi
> +				;;
> +			adobe68k)
> +				basic_machine=m68010-adobe
> +				os=scout
> +				;;
> +			alliant)
> +				basic_machine=fx80-alliant
> +				os=
> +				;;
> +			altos | altos3068)
> +				basic_machine=m68k-altos
> +				os=
> +				;;
> +			am29k)
> +				basic_machine=a29k-none
> +				os=bsd
> +				;;
> +			amdahl)
> +				basic_machine=580-amdahl
> +				os=sysv
> +				;;
> +			amiga)
> +				basic_machine=m68k-unknown
> +				os=
> +				;;
> +			amigaos | amigados)
> +				basic_machine=m68k-unknown
> +				os=amigaos
> +				;;
> +			amigaunix | amix)
> +				basic_machine=m68k-unknown
> +				os=sysv4
> +				;;
> +			apollo68)
> +				basic_machine=m68k-apollo
> +				os=sysv
> +				;;
> +			apollo68bsd)
> +				basic_machine=m68k-apollo
> +				os=bsd
> +				;;
> +			aros)
> +				basic_machine=i386-pc
> +				os=aros
> +				;;
> +			aux)
> +				basic_machine=m68k-apple
> +				os=aux
> +				;;
> +			balance)
> +				basic_machine=ns32k-sequent
> +				os=dynix
> +				;;
> +			blackfin)
> +				basic_machine=bfin-unknown
> +				os=linux
> +				;;
> +			cegcc)
> +				basic_machine=arm-unknown
> +				os=cegcc
> +				;;
> +			convex-c1)
> +				basic_machine=c1-convex
> +				os=bsd
> +				;;
> +			convex-c2)
> +				basic_machine=c2-convex
> +				os=bsd
> +				;;
> +			convex-c32)
> +				basic_machine=c32-convex
> +				os=bsd
> +				;;
> +			convex-c34)
> +				basic_machine=c34-convex
> +				os=bsd
> +				;;
> +			convex-c38)
> +				basic_machine=c38-convex
> +				os=bsd
> +				;;
> +			cray)
> +				basic_machine=j90-cray
> +				os=unicos
> +				;;
> +			crds | unos)
> +				basic_machine=m68k-crds
> +				os=
> +				;;
> +			da30)
> +				basic_machine=m68k-da30
> +				os=
> +				;;
> +			decstation | pmax | pmin | dec3100 | decstatn)
> +				basic_machine=mips-dec
> +				os=
> +				;;
> +			delta88)
> +				basic_machine=m88k-motorola
> +				os=sysv3
> +				;;
> +			dicos)
> +				basic_machine=i686-pc
> +				os=dicos
> +				;;
> +			djgpp)
> +				basic_machine=i586-pc
> +				os=msdosdjgpp
> +				;;
> +			ebmon29k)
> +				basic_machine=a29k-amd
> +				os=ebmon
> +				;;
> +			es1800 | OSE68k | ose68k | ose | OSE)
> +				basic_machine=m68k-ericsson
> +				os=ose
> +				;;
> +			gmicro)
> +				basic_machine=tron-gmicro
> +				os=sysv
> +				;;
> +			go32)
> +				basic_machine=i386-pc
> +				os=go32
> +				;;
> +			h8300hms)
> +				basic_machine=h8300-hitachi
> +				os=hms
> +				;;
> +			h8300xray)
> +				basic_machine=h8300-hitachi
> +				os=xray
> +				;;
> +			h8500hms)
> +				basic_machine=h8500-hitachi
> +				os=hms
> +				;;
> +			harris)
> +				basic_machine=m88k-harris
> +				os=sysv3
> +				;;
> +			hp300)
> +				basic_machine=m68k-hp
> +				;;
> +			hp300bsd)
> +				basic_machine=m68k-hp
> +				os=bsd
> +				;;
> +			hp300hpux)
> +				basic_machine=m68k-hp
> +				os=hpux
> +				;;
> +			hppaosf)
> +				basic_machine=hppa1.1-hp
> +				os=osf
> +				;;
> +			hppro)
> +				basic_machine=hppa1.1-hp
> +				os=proelf
> +				;;
> +			i386mach)
> +				basic_machine=i386-mach
> +				os=mach
> +				;;
> +			vsta)
> +				basic_machine=i386-pc
> +				os=vsta
> +				;;
> +			isi68 | isi)
> +				basic_machine=m68k-isi
> +				os=sysv
> +				;;
> +			m68knommu)
> +				basic_machine=m68k-unknown
> +				os=linux
> +				;;
> +			magnum | m3230)
> +				basic_machine=mips-mips
> +				os=sysv
> +				;;
> +			merlin)
> +				basic_machine=ns32k-utek
> +				os=sysv
> +				;;
> +			mingw64)
> +				basic_machine=x86_64-pc
> +				os=mingw64
> +				;;
> +			mingw32)
> +				basic_machine=i686-pc
> +				os=mingw32
> +				;;
> +			mingw32ce)
> +				basic_machine=arm-unknown
> +				os=mingw32ce
> +				;;
> +			monitor)
> +				basic_machine=m68k-rom68k
> +				os=coff
> +				;;
> +			morphos)
> +				basic_machine=powerpc-unknown
> +				os=morphos
> +				;;
> +			moxiebox)
> +				basic_machine=moxie-unknown
> +				os=moxiebox
> +				;;
> +			msdos)
> +				basic_machine=i386-pc
> +				os=msdos
> +				;;
> +			msys)
> +				basic_machine=i686-pc
> +				os=msys
> +				;;
> +			mvs)
> +				basic_machine=i370-ibm
> +				os=mvs
> +				;;
> +			nacl)
> +				basic_machine=le32-unknown
> +				os=nacl
> +				;;
> +			ncr3000)
> +				basic_machine=i486-ncr
> +				os=sysv4
> +				;;
> +			netbsd386)
> +				basic_machine=i386-pc
> +				os=netbsd
> +				;;
> +			netwinder)
> +				basic_machine=armv4l-rebel
> +				os=linux
> +				;;
> +			news | news700 | news800 | news900)
> +				basic_machine=m68k-sony
> +				os=newsos
> +				;;
> +			news1000)
> +				basic_machine=m68030-sony
> +				os=newsos
> +				;;
> +			necv70)
> +				basic_machine=v70-nec
> +				os=sysv
> +				;;
> +			nh3000)
> +				basic_machine=m68k-harris
> +				os=cxux
> +				;;
> +			nh[45]000)
> +				basic_machine=m88k-harris
> +				os=cxux
> +				;;
> +			nindy960)
> +				basic_machine=i960-intel
> +				os=nindy
> +				;;
> +			mon960)
> +				basic_machine=i960-intel
> +				os=mon960
> +				;;
> +			nonstopux)
> +				basic_machine=mips-compaq
> +				os=nonstopux
> +				;;
> +			os400)
> +				basic_machine=powerpc-ibm
> +				os=os400
> +				;;
> +			OSE68000 | ose68000)
> +				basic_machine=m68000-ericsson
> +				os=ose
> +				;;
> +			os68k)
> +				basic_machine=m68k-none
> +				os=os68k
> +				;;
> +			paragon)
> +				basic_machine=i860-intel
> +				os=osf
> +				;;
> +			parisc)
> +				basic_machine=hppa-unknown
> +				os=linux
> +				;;
> +			pw32)
> +				basic_machine=i586-unknown
> +				os=pw32
> +				;;
> +			rdos | rdos64)
> +				basic_machine=x86_64-pc
> +				os=rdos
> +				;;
> +			rdos32)
> +				basic_machine=i386-pc
> +				os=rdos
> +				;;
> +			rom68k)
> +				basic_machine=m68k-rom68k
> +				os=coff
> +				;;
> +			sa29200)
> +				basic_machine=a29k-amd
> +				os=udi
> +				;;
> +			sei)
> +				basic_machine=mips-sei
> +				os=seiux
> +				;;
> +			sequent)
> +				basic_machine=i386-sequent
> +				os=
> +				;;
> +			sps7)
> +				basic_machine=m68k-bull
> +				os=sysv2
> +				;;
> +			st2000)
> +				basic_machine=m68k-tandem
> +				os=
> +				;;
> +			stratus)
> +				basic_machine=i860-stratus
> +				os=sysv4
> +				;;
> +			sun2)
> +				basic_machine=m68000-sun
> +				os=
> +				;;
> +			sun2os3)
> +				basic_machine=m68000-sun
> +				os=sunos3
> +				;;
> +			sun2os4)
> +				basic_machine=m68000-sun
> +				os=sunos4
> +				;;
> +			sun3)
> +				basic_machine=m68k-sun
> +				os=
> +				;;
> +			sun3os3)
> +				basic_machine=m68k-sun
> +				os=sunos3
> +				;;
> +			sun3os4)
> +				basic_machine=m68k-sun
> +				os=sunos4
> +				;;
> +			sun4)
> +				basic_machine=sparc-sun
> +				os=
> +				;;
> +			sun4os3)
> +				basic_machine=sparc-sun
> +				os=sunos3
> +				;;
> +			sun4os4)
> +				basic_machine=sparc-sun
> +				os=sunos4
> +				;;
> +			sun4sol2)
> +				basic_machine=sparc-sun
> +				os=solaris2
> +				;;
> +			sun386 | sun386i | roadrunner)
> +				basic_machine=i386-sun
> +				os=
> +				;;
> +			sv1)
> +				basic_machine=sv1-cray
> +				os=unicos
> +				;;
> +			symmetry)
> +				basic_machine=i386-sequent
> +				os=dynix
> +				;;
> +			t3e)
> +				basic_machine=alphaev5-cray
> +				os=unicos
> +				;;
> +			t90)
> +				basic_machine=t90-cray
> +				os=unicos
> +				;;
> +			toad1)
> +				basic_machine=pdp10-xkl
> +				os=tops20
> +				;;
> +			tpf)
> +				basic_machine=s390x-ibm
> +				os=tpf
> +				;;
> +			udi29k)
> +				basic_machine=a29k-amd
> +				os=udi
> +				;;
> +			ultra3)
> +				basic_machine=a29k-nyu
> +				os=sym1
> +				;;
> +			v810 | necv810)
> +				basic_machine=v810-nec
> +				os=none
> +				;;
> +			vaxv)
> +				basic_machine=vax-dec
> +				os=sysv
> +				;;
> +			vms)
> +				basic_machine=vax-dec
> +				os=vms
> +				;;
> +			vxworks960)
> +				basic_machine=i960-wrs
> +				os=vxworks
> +				;;
> +			vxworks68)
> +				basic_machine=m68k-wrs
> +				os=vxworks
> +				;;
> +			vxworks29k)
> +				basic_machine=a29k-wrs
> +				os=vxworks
> +				;;
> +			xbox)
> +				basic_machine=i686-pc
> +				os=mingw32
> +				;;
> +			ymp)
> +				basic_machine=ymp-cray
> +				os=unicos
> +				;;
> +			*)
> +				basic_machine=$1
> +				os=
> +				;;
> +		esac
>  		;;
>  esac
>  
> -# Decode aliases for certain CPU-COMPANY combinations.
> +# Decode 1-component or ad-hoc basic machines
>  case $basic_machine in
> -	# Recognize the basic CPU types without company name.
> -	# Some are omitted here because they have special meanings below.
> -	1750a | 580 \
> -	| a29k \
> -	| aarch64 | aarch64_be \
> -	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
> -	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
> -	| am33_2.0 \
> -	| arc | arceb \
> -	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
> -	| avr | avr32 \
> -	| ba \
> -	| be32 | be64 \
> -	| bfin \
> -	| c4x | c8051 | clipper \
> -	| d10v | d30v | dlx | dsp16xx \
> -	| e2k | epiphany \
> -	| fido | fr30 | frv | ft32 \
> -	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
> -	| hexagon \
> -	| i370 | i860 | i960 | ia64 \
> -	| ip2k | iq2000 \
> -	| k1om \
> -	| le32 | le64 \
> -	| lm32 \
> -	| m32c | m32r | m32rle | m68000 | m68k | m88k \
> -	| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
> -	| mips | mipsbe | mipseb | mipsel | mipsle \
> -	| mips16 \
> -	| mips64 | mips64el \
> -	| mips64octeon | mips64octeonel \
> -	| mips64orion | mips64orionel \
> -	| mips64r5900 | mips64r5900el \
> -	| mips64vr | mips64vrel \
> -	| mips64vr4100 | mips64vr4100el \
> -	| mips64vr4300 | mips64vr4300el \
> -	| mips64vr5000 | mips64vr5000el \
> -	| mips64vr5900 | mips64vr5900el \
> -	| mipsisa32 | mipsisa32el \
> -	| mipsisa32r2 | mipsisa32r2el \
> -	| mipsisa32r6 | mipsisa32r6el \
> -	| mipsisa64 | mipsisa64el \
> -	| mipsisa64r2 | mipsisa64r2el \
> -	| mipsisa64r6 | mipsisa64r6el \
> -	| mipsisa64sb1 | mipsisa64sb1el \
> -	| mipsisa64sr71k | mipsisa64sr71kel \
> -	| mipsr5900 | mipsr5900el \
> -	| mipstx39 | mipstx39el \
> -	| mn10200 | mn10300 \
> -	| moxie \
> -	| mt \
> -	| msp430 \
> -	| nds32 | nds32le | nds32be \
> -	| nios | nios2 | nios2eb | nios2el \
> -	| ns16k | ns32k \
> -	| open8 | or1k | or1knd | or32 \
> -	| pdp10 | pdp11 | pj | pjl \
> -	| powerpc | powerpc64 | powerpc64le | powerpcle \
> -	| pyramid \
> -	| riscv32 | riscv64 \
> -	| rl78 | rx \
> -	| score \
> -	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
> -	| sh64 | sh64le \
> -	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
> -	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
> -	| spu \
> -	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
> -	| ubicom32 \
> -	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
> -	| visium \
> -	| we32k \
> -	| x86 | xc16x | xstormy16 | xtensa \
> -	| z8k | z80)
> -		basic_machine=$basic_machine-unknown
> -		;;
> -	c54x)
> -		basic_machine=tic54x-unknown
> -		;;
> -	c55x)
> -		basic_machine=tic55x-unknown
> -		;;
> -	c6x)
> -		basic_machine=tic6x-unknown
> -		;;
> -	leon|leon[3-9])
> -		basic_machine=sparc-$basic_machine
> -		;;
> -	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
> -		basic_machine=$basic_machine-unknown
> -		os=-none
> +	# Here we handle the default manufacturer of certain CPU types.  It is in
> +	# some cases the only manufacturer, in others, it is the most popular.
> +	w89k)
> +		cpu=hppa1.1
> +		vendor=winbond
>  		;;
> -	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
> +	op50n)
> +		cpu=hppa1.1
> +		vendor=oki
>  		;;
> -	ms1)
> -		basic_machine=mt-unknown
> +	op60c)
> +		cpu=hppa1.1
> +		vendor=oki
>  		;;
> -
> -	strongarm | thumb | xscale)
> -		basic_machine=arm-unknown
> +	ibm*)
> +		cpu=i370
> +		vendor=ibm
>  		;;
> -	xgate)
> -		basic_machine=$basic_machine-unknown
> -		os=-none
> +	orion105)
> +		cpu=clipper
> +		vendor=highlevel
>  		;;
> -	xscaleeb)
> -		basic_machine=armeb-unknown
> +	mac | mpw | mac-mpw)
> +		cpu=m68k
> +		vendor=apple
>  		;;
> -
> -	xscaleel)
> -		basic_machine=armel-unknown
> +	pmac | pmac-mpw)
> +		cpu=powerpc
> +		vendor=apple
>  		;;
>  
> -	# We use `pc' rather than `unknown'
> -	# because (1) that's what they normally are, and
> -	# (2) the word "unknown" tends to confuse beginning users.
> -	i*86 | x86_64)
> -	  basic_machine=$basic_machine-pc
> -	  ;;
> -	# Object if more than one company name word.
> -	*-*-*)
> -		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
> -		exit 1
> -		;;
> -	# Recognize the basic CPU types with company name.
> -	580-* \
> -	| a29k-* \
> -	| aarch64-* | aarch64_be-* \
> -	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
> -	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
> -	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
> -	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
> -	| avr-* | avr32-* \
> -	| ba-* \
> -	| be32-* | be64-* \
> -	| bfin-* | bs2000-* \
> -	| c[123]* | c30-* | [cjt]90-* | c4x-* \
> -	| c8051-* | clipper-* | craynv-* | cydra-* \
> -	| d10v-* | d30v-* | dlx-* \
> -	| e2k-* | elxsi-* \
> -	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
> -	| h8300-* | h8500-* \
> -	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
> -	| hexagon-* \
> -	| i*86-* | i860-* | i960-* | ia64-* \
> -	| ip2k-* | iq2000-* \
> -	| k1om-* \
> -	| le32-* | le64-* \
> -	| lm32-* \
> -	| m32c-* | m32r-* | m32rle-* \
> -	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
> -	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
> -	| microblaze-* | microblazeel-* \
> -	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
> -	| mips16-* \
> -	| mips64-* | mips64el-* \
> -	| mips64octeon-* | mips64octeonel-* \
> -	| mips64orion-* | mips64orionel-* \
> -	| mips64r5900-* | mips64r5900el-* \
> -	| mips64vr-* | mips64vrel-* \
> -	| mips64vr4100-* | mips64vr4100el-* \
> -	| mips64vr4300-* | mips64vr4300el-* \
> -	| mips64vr5000-* | mips64vr5000el-* \
> -	| mips64vr5900-* | mips64vr5900el-* \
> -	| mipsisa32-* | mipsisa32el-* \
> -	| mipsisa32r2-* | mipsisa32r2el-* \
> -	| mipsisa32r6-* | mipsisa32r6el-* \
> -	| mipsisa64-* | mipsisa64el-* \
> -	| mipsisa64r2-* | mipsisa64r2el-* \
> -	| mipsisa64r6-* | mipsisa64r6el-* \
> -	| mipsisa64sb1-* | mipsisa64sb1el-* \
> -	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
> -	| mipsr5900-* | mipsr5900el-* \
> -	| mipstx39-* | mipstx39el-* \
> -	| mmix-* \
> -	| mt-* \
> -	| msp430-* \
> -	| nds32-* | nds32le-* | nds32be-* \
> -	| nios-* | nios2-* | nios2eb-* | nios2el-* \
> -	| none-* | np1-* | ns16k-* | ns32k-* \
> -	| open8-* \
> -	| or1k*-* \
> -	| orion-* \
> -	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
> -	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
> -	| pyramid-* \
> -	| riscv32-* | riscv64-* \
> -	| rl78-* | romp-* | rs6000-* | rx-* \
> -	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
> -	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
> -	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
> -	| sparclite-* \
> -	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
> -	| tahoe-* \
> -	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
> -	| tile*-* \
> -	| tron-* \
> -	| ubicom32-* \
> -	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
> -	| vax-* \
> -	| visium-* \
> -	| we32k-* \
> -	| x86-* | x86_64-* | xc16x-* | xps100-* \
> -	| xstormy16-* | xtensa*-* \
> -	| ymp-* \
> -	| z8k-* | z80-*)
> -		;;
> -	# Recognize the basic CPU types without company name, with glob match.
> -	xtensa*)
> -		basic_machine=$basic_machine-unknown
> -		;;
>  	# Recognize the various machine names and aliases which stand
>  	# for a CPU type and a company and sometimes even an OS.
> -	386bsd)
> -		basic_machine=i386-unknown
> -		os=-bsd
> -		;;
>  	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
> -		basic_machine=m68000-att
> +		cpu=m68000
> +		vendor=att
>  		;;
>  	3b*)
> -		basic_machine=we32k-att
> -		;;
> -	a29khif)
> -		basic_machine=a29k-amd
> -		os=-udi
> -		;;
> -	abacus)
> -		basic_machine=abacus-unknown
> -		;;
> -	adobe68k)
> -		basic_machine=m68010-adobe
> -		os=-scout
> -		;;
> -	alliant | fx80)
> -		basic_machine=fx80-alliant
> -		;;
> -	altos | altos3068)
> -		basic_machine=m68k-altos
> -		;;
> -	am29k)
> -		basic_machine=a29k-none
> -		os=-bsd
> -		;;
> -	amd64)
> -		basic_machine=x86_64-pc
> -		;;
> -	amd64-*)
> -		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	amdahl)
> -		basic_machine=580-amdahl
> -		os=-sysv
> -		;;
> -	amiga | amiga-*)
> -		basic_machine=m68k-unknown
> -		;;
> -	amigaos | amigados)
> -		basic_machine=m68k-unknown
> -		os=-amigaos
> -		;;
> -	amigaunix | amix)
> -		basic_machine=m68k-unknown
> -		os=-sysv4
> -		;;
> -	apollo68)
> -		basic_machine=m68k-apollo
> -		os=-sysv
> -		;;
> -	apollo68bsd)
> -		basic_machine=m68k-apollo
> -		os=-bsd
> -		;;
> -	aros)
> -		basic_machine=i386-pc
> -		os=-aros
> -		;;
> -	asmjs)
> -		basic_machine=asmjs-unknown
> -		;;
> -	aux)
> -		basic_machine=m68k-apple
> -		os=-aux
> -		;;
> -	balance)
> -		basic_machine=ns32k-sequent
> -		os=-dynix
> -		;;
> -	blackfin)
> -		basic_machine=bfin-unknown
> -		os=-linux
> -		;;
> -	blackfin-*)
> -		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		os=-linux
> +		cpu=we32k
> +		vendor=att
>  		;;
>  	bluegene*)
> -		basic_machine=powerpc-ibm
> -		os=-cnk
> -		;;
> -	c54x-*)
> -		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	c55x-*)
> -		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	c6x-*)
> -		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	c90)
> -		basic_machine=c90-cray
> -		os=-unicos
> -		;;
> -	cegcc)
> -		basic_machine=arm-unknown
> -		os=-cegcc
> -		;;
> -	convex-c1)
> -		basic_machine=c1-convex
> -		os=-bsd
> -		;;
> -	convex-c2)
> -		basic_machine=c2-convex
> -		os=-bsd
> -		;;
> -	convex-c32)
> -		basic_machine=c32-convex
> -		os=-bsd
> -		;;
> -	convex-c34)
> -		basic_machine=c34-convex
> -		os=-bsd
> -		;;
> -	convex-c38)
> -		basic_machine=c38-convex
> -		os=-bsd
> -		;;
> -	cray | j90)
> -		basic_machine=j90-cray
> -		os=-unicos
> -		;;
> -	craynv)
> -		basic_machine=craynv-cray
> -		os=-unicosmp
> -		;;
> -	cr16 | cr16-*)
> -		basic_machine=cr16-unknown
> -		os=-elf
> -		;;
> -	crds | unos)
> -		basic_machine=m68k-crds
> -		;;
> -	crisv32 | crisv32-* | etraxfs*)
> -		basic_machine=crisv32-axis
> -		;;
> -	cris | cris-* | etrax*)
> -		basic_machine=cris-axis
> -		;;
> -	crx)
> -		basic_machine=crx-unknown
> -		os=-elf
> -		;;
> -	da30 | da30-*)
> -		basic_machine=m68k-da30
> -		;;
> -	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
> -		basic_machine=mips-dec
> +		cpu=powerpc
> +		vendor=ibm
> +		os=cnk
>  		;;
>  	decsystem10* | dec10*)
> -		basic_machine=pdp10-dec
> -		os=-tops10
> +		cpu=pdp10
> +		vendor=dec
> +		os=tops10
>  		;;
>  	decsystem20* | dec20*)
> -		basic_machine=pdp10-dec
> -		os=-tops20
> +		cpu=pdp10
> +		vendor=dec
> +		os=tops20
>  		;;
>  	delta | 3300 | motorola-3300 | motorola-delta \
>  	      | 3300-motorola | delta-motorola)
> -		basic_machine=m68k-motorola
> -		;;
> -	delta88)
> -		basic_machine=m88k-motorola
> -		os=-sysv3
> -		;;
> -	dicos)
> -		basic_machine=i686-pc
> -		os=-dicos
> +		cpu=m68k
> +		vendor=motorola
>  		;;
> -	djgpp)
> -		basic_machine=i586-pc
> -		os=-msdosdjgpp
> -		;;
> -	dpx20 | dpx20-*)
> -		basic_machine=rs6000-bull
> -		os=-bosx
> -		;;
> -	dpx2* | dpx2*-bull)
> -		basic_machine=m68k-bull
> -		os=-sysv3
> -		;;
> -	ebmon29k)
> -		basic_machine=a29k-amd
> -		os=-ebmon
> -		;;
> -	elxsi)
> -		basic_machine=elxsi-elxsi
> -		os=-bsd
> +	dpx2*)
> +		cpu=m68k
> +		vendor=bull
> +		os=sysv3
>  		;;
>  	encore | umax | mmax)
> -		basic_machine=ns32k-encore
> +		cpu=ns32k
> +		vendor=encore
>  		;;
> -	es1800 | OSE68k | ose68k | ose | OSE)
> -		basic_machine=m68k-ericsson
> -		os=-ose
> +	elxsi)
> +		cpu=elxsi
> +		vendor=elxsi
> +		os=${os:-bsd}
>  		;;
>  	fx2800)
> -		basic_machine=i860-alliant
> +		cpu=i860
> +		vendor=alliant
>  		;;
>  	genix)
> -		basic_machine=ns32k-ns
> -		;;
> -	gmicro)
> -		basic_machine=tron-gmicro
> -		os=-sysv
> -		;;
> -	go32)
> -		basic_machine=i386-pc
> -		os=-go32
> +		cpu=ns32k
> +		vendor=ns
>  		;;
>  	h3050r* | hiux*)
> -		basic_machine=hppa1.1-hitachi
> -		os=-hiuxwe2
> -		;;
> -	h8300hms)
> -		basic_machine=h8300-hitachi
> -		os=-hms
> -		;;
> -	h8300xray)
> -		basic_machine=h8300-hitachi
> -		os=-xray
> -		;;
> -	h8500hms)
> -		basic_machine=h8500-hitachi
> -		os=-hms
> -		;;
> -	harris)
> -		basic_machine=m88k-harris
> -		os=-sysv3
> -		;;
> -	hp300-*)
> -		basic_machine=m68k-hp
> -		;;
> -	hp300bsd)
> -		basic_machine=m68k-hp
> -		os=-bsd
> -		;;
> -	hp300hpux)
> -		basic_machine=m68k-hp
> -		os=-hpux
> +		cpu=hppa1.1
> +		vendor=hitachi
> +		os=hiuxwe2
>  		;;
>  	hp3k9[0-9][0-9] | hp9[0-9][0-9])
> -		basic_machine=hppa1.0-hp
> +		cpu=hppa1.0
> +		vendor=hp
>  		;;
>  	hp9k2[0-9][0-9] | hp9k31[0-9])
> -		basic_machine=m68000-hp
> +		cpu=m68000
> +		vendor=hp
>  		;;
>  	hp9k3[2-9][0-9])
> -		basic_machine=m68k-hp
> +		cpu=m68k
> +		vendor=hp
>  		;;
>  	hp9k6[0-9][0-9] | hp6[0-9][0-9])
> -		basic_machine=hppa1.0-hp
> +		cpu=hppa1.0
> +		vendor=hp
>  		;;
>  	hp9k7[0-79][0-9] | hp7[0-79][0-9])
> -		basic_machine=hppa1.1-hp
> +		cpu=hppa1.1
> +		vendor=hp
>  		;;
>  	hp9k78[0-9] | hp78[0-9])
>  		# FIXME: really hppa2.0-hp
> -		basic_machine=hppa1.1-hp
> +		cpu=hppa1.1
> +		vendor=hp
>  		;;
>  	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
>  		# FIXME: really hppa2.0-hp
> -		basic_machine=hppa1.1-hp
> +		cpu=hppa1.1
> +		vendor=hp
>  		;;
>  	hp9k8[0-9][13679] | hp8[0-9][13679])
> -		basic_machine=hppa1.1-hp
> +		cpu=hppa1.1
> +		vendor=hp
>  		;;
>  	hp9k8[0-9][0-9] | hp8[0-9][0-9])
> -		basic_machine=hppa1.0-hp
> -		;;
> -	hppa-next)
> -		os=-nextstep3
> -		;;
> -	hppaosf)
> -		basic_machine=hppa1.1-hp
> -		os=-osf
> -		;;
> -	hppro)
> -		basic_machine=hppa1.1-hp
> -		os=-proelf
> -		;;
> -	i370-ibm* | ibm*)
> -		basic_machine=i370-ibm
> +		cpu=hppa1.0
> +		vendor=hp
>  		;;
>  	i*86v32)
> -		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
> -		os=-sysv32
> +		cpu=`echo "$1" | sed -e 's/86.*/86/'`
> +		vendor=pc
> +		os=sysv32
>  		;;
>  	i*86v4*)
> -		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
> -		os=-sysv4
> +		cpu=`echo "$1" | sed -e 's/86.*/86/'`
> +		vendor=pc
> +		os=sysv4
>  		;;
>  	i*86v)
> -		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
> -		os=-sysv
> +		cpu=`echo "$1" | sed -e 's/86.*/86/'`
> +		vendor=pc
> +		os=sysv
>  		;;
>  	i*86sol2)
> -		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
> -		os=-solaris2
> -		;;
> -	i386mach)
> -		basic_machine=i386-mach
> -		os=-mach
> +		cpu=`echo "$1" | sed -e 's/86.*/86/'`
> +		vendor=pc
> +		os=solaris2
>  		;;
> -	i386-vsta | vsta)
> -		basic_machine=i386-unknown
> -		os=-vsta
> +	j90 | j90-cray)
> +		cpu=j90
> +		vendor=cray
> +		os=${os:-unicos}
>  		;;
>  	iris | iris4d)
> -		basic_machine=mips-sgi
> +		cpu=mips
> +		vendor=sgi
>  		case $os in
> -		    -irix*)
> +		    irix*)
>  			;;
>  		    *)
> -			os=-irix4
> +			os=irix4
>  			;;
>  		esac
>  		;;
> -	isi68 | isi)
> -		basic_machine=m68k-isi
> -		os=-sysv
> -		;;
> -	leon-*|leon[3-9]-*)
> -		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
> -		;;
> -	m68knommu)
> -		basic_machine=m68k-unknown
> -		os=-linux
> -		;;
> -	m68knommu-*)
> -		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		os=-linux
> -		;;
> -	m88k-omron*)
> -		basic_machine=m88k-omron
> -		;;
> -	magnum | m3230)
> -		basic_machine=mips-mips
> -		os=-sysv
> -		;;
> -	merlin)
> -		basic_machine=ns32k-utek
> -		os=-sysv
> -		;;
> -	microblaze*)
> -		basic_machine=microblaze-xilinx
> -		;;
> -	mingw64)
> -		basic_machine=x86_64-pc
> -		os=-mingw64
> -		;;
> -	mingw32)
> -		basic_machine=i686-pc
> -		os=-mingw32
> -		;;
> -	mingw32ce)
> -		basic_machine=arm-unknown
> -		os=-mingw32ce
> -		;;
>  	miniframe)
> -		basic_machine=m68000-convergent
> -		;;
> -	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
> -		basic_machine=m68k-atari
> -		os=-mint
> -		;;
> -	mips3*-*)
> -		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
> -		;;
> -	mips3*)
> -		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
> -		;;
> -	monitor)
> -		basic_machine=m68k-rom68k
> -		os=-coff
> -		;;
> -	morphos)
> -		basic_machine=powerpc-unknown
> -		os=-morphos
> -		;;
> -	moxiebox)
> -		basic_machine=moxie-unknown
> -		os=-moxiebox
> -		;;
> -	msdos)
> -		basic_machine=i386-pc
> -		os=-msdos
> -		;;
> -	ms1-*)
> -		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
> -		;;
> -	msys)
> -		basic_machine=i686-pc
> -		os=-msys
> -		;;
> -	mvs)
> -		basic_machine=i370-ibm
> -		os=-mvs
> +		cpu=m68000
> +		vendor=convergent
>  		;;
> -	nacl)
> -		basic_machine=le32-unknown
> -		os=-nacl
> -		;;
> -	ncr3000)
> -		basic_machine=i486-ncr
> -		os=-sysv4
> -		;;
> -	netbsd386)
> -		basic_machine=i386-unknown
> -		os=-netbsd
> -		;;
> -	netwinder)
> -		basic_machine=armv4l-rebel
> -		os=-linux
> -		;;
> -	news | news700 | news800 | news900)
> -		basic_machine=m68k-sony
> -		os=-newsos
> -		;;
> -	news1000)
> -		basic_machine=m68030-sony
> -		os=-newsos
> +	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
> +		cpu=m68k
> +		vendor=atari
> +		os=mint
>  		;;
>  	news-3600 | risc-news)
> -		basic_machine=mips-sony
> -		os=-newsos
> -		;;
> -	necv70)
> -		basic_machine=v70-nec
> -		os=-sysv
> +		cpu=mips
> +		vendor=sony
> +		os=newsos
>  		;;
> -	next | m*-next )
> -		basic_machine=m68k-next
> +	next | m*-next)
> +		cpu=m68k
> +		vendor=next
>  		case $os in
> -		    -nextstep* )
> +		    openstep*)
> +		        ;;
> +		    nextstep*)
>  			;;
> -		    -ns2*)
> -		      os=-nextstep2
> +		    ns2*)
> +		      os=nextstep2
>  			;;
>  		    *)
> -		      os=-nextstep3
> +		      os=nextstep3
>  			;;
>  		esac
>  		;;
> -	nh3000)
> -		basic_machine=m68k-harris
> -		os=-cxux
> -		;;
> -	nh[45]000)
> -		basic_machine=m88k-harris
> -		os=-cxux
> -		;;
> -	nindy960)
> -		basic_machine=i960-intel
> -		os=-nindy
> -		;;
> -	mon960)
> -		basic_machine=i960-intel
> -		os=-mon960
> -		;;
> -	nonstopux)
> -		basic_machine=mips-compaq
> -		os=-nonstopux
> -		;;
>  	np1)
> -		basic_machine=np1-gould
> -		;;
> -	neo-tandem)
> -		basic_machine=neo-tandem
> -		;;
> -	nse-tandem)
> -		basic_machine=nse-tandem
> -		;;
> -	nsr-tandem)
> -		basic_machine=nsr-tandem
> +		cpu=np1
> +		vendor=gould
>  		;;
>  	op50n-* | op60c-*)
> -		basic_machine=hppa1.1-oki
> -		os=-proelf
> -		;;
> -	openrisc | openrisc-*)
> -		basic_machine=or32-unknown
> -		;;
> -	os400)
> -		basic_machine=powerpc-ibm
> -		os=-os400
> -		;;
> -	OSE68000 | ose68000)
> -		basic_machine=m68000-ericsson
> -		os=-ose
> -		;;
> -	os68k)
> -		basic_machine=m68k-none
> -		os=-os68k
> +		cpu=hppa1.1
> +		vendor=oki
> +		os=proelf
>  		;;
>  	pa-hitachi)
> -		basic_machine=hppa1.1-hitachi
> -		os=-hiuxwe2
> -		;;
> -	paragon)
> -		basic_machine=i860-intel
> -		os=-osf
> -		;;
> -	parisc)
> -		basic_machine=hppa-unknown
> -		os=-linux
> -		;;
> -	parisc-*)
> -		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		os=-linux
> +		cpu=hppa1.1
> +		vendor=hitachi
> +		os=hiuxwe2
>  		;;
>  	pbd)
> -		basic_machine=sparc-tti
> +		cpu=sparc
> +		vendor=tti
>  		;;
>  	pbb)
> -		basic_machine=m68k-tti
> -		;;
> -	pc532 | pc532-*)
> -		basic_machine=ns32k-pc532
> +		cpu=m68k
> +		vendor=tti
>  		;;
> -	pc98)
> -		basic_machine=i386-pc
> -		;;
> -	pc98-*)
> -		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	pentium | p5 | k5 | k6 | nexgen | viac3)
> -		basic_machine=i586-pc
> -		;;
> -	pentiumpro | p6 | 6x86 | athlon | athlon_*)
> -		basic_machine=i686-pc
> -		;;
> -	pentiumii | pentium2 | pentiumiii | pentium3)
> -		basic_machine=i686-pc
> -		;;
> -	pentium4)
> -		basic_machine=i786-pc
> -		;;
> -	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
> -		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	pentiumpro-* | p6-* | 6x86-* | athlon-*)
> -		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
> -		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	pentium4-*)
> -		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
> +	pc532)
> +		cpu=ns32k
> +		vendor=pc532
>  		;;
>  	pn)
> -		basic_machine=pn-gould
> +		cpu=pn
> +		vendor=gould
>  		;;
> -	power)	basic_machine=power-ibm
> -		;;
> -	ppc | ppcbe)	basic_machine=powerpc-unknown
> -		;;
> -	ppc-* | ppcbe-*)
> -		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	ppcle | powerpclittle | ppc-le | powerpc-little)
> -		basic_machine=powerpcle-unknown
> -		;;
> -	ppcle-* | powerpclittle-*)
> -		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	ppc64)	basic_machine=powerpc64-unknown
> -		;;
> -	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
> -		;;
> -	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
> -		basic_machine=powerpc64le-unknown
> -		;;
> -	ppc64le-* | powerpc64little-*)
> -		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
> +	power)
> +		cpu=power
> +		vendor=ibm
>  		;;
>  	ps2)
> -		basic_machine=i386-ibm
> -		;;
> -	pw32)
> -		basic_machine=i586-unknown
> -		os=-pw32
> -		;;
> -	rdos | rdos64)
> -		basic_machine=x86_64-pc
> -		os=-rdos
> -		;;
> -	rdos32)
> -		basic_machine=i386-pc
> -		os=-rdos
> -		;;
> -	rom68k)
> -		basic_machine=m68k-rom68k
> -		os=-coff
> +		cpu=i386
> +		vendor=ibm
>  		;;
>  	rm[46]00)
> -		basic_machine=mips-siemens
> +		cpu=mips
> +		vendor=siemens
>  		;;
>  	rtpc | rtpc-*)
> -		basic_machine=romp-ibm
> -		;;
> -	s390 | s390-*)
> -		basic_machine=s390-ibm
> -		;;
> -	s390x | s390x-*)
> -		basic_machine=s390x-ibm
> +		cpu=romp
> +		vendor=ibm
>  		;;
> -	sa29200)
> -		basic_machine=a29k-amd
> -		os=-udi
> -		;;
> -	sb1)
> -		basic_machine=mipsisa64sb1-unknown
> +	sde)
> +		cpu=mipsisa32
> +		vendor=sde
> +		os=${os:-elf}
>  		;;
> -	sb1el)
> -		basic_machine=mipsisa64sb1el-unknown
> +	simso-wrs)
> +		cpu=sparclite
> +		vendor=wrs
> +		os=vxworks
>  		;;
> -	sde)
> -		basic_machine=mipsisa32-sde
> -		os=-elf
> +	tower | tower-32)
> +		cpu=m68k
> +		vendor=ncr
>  		;;
> -	sei)
> -		basic_machine=mips-sei
> -		os=-seiux
> +	vpp*|vx|vx-*)
> +		cpu=f301
> +		vendor=fujitsu
>  		;;
> -	sequent)
> -		basic_machine=i386-sequent
> +	w65)
> +		cpu=w65
> +		vendor=wdc
>  		;;
> -	sh)
> -		basic_machine=sh-hitachi
> -		os=-hms
> +	w89k-*)
> +		cpu=hppa1.1
> +		vendor=winbond
> +		os=proelf
>  		;;
> -	sh5el)
> -		basic_machine=sh5le-unknown
> +	none)
> +		cpu=none
> +		vendor=none
>  		;;
> -	sh64)
> -		basic_machine=sh64-unknown
> +	leon|leon[3-9])
> +		cpu=sparc
> +		vendor=$basic_machine
>  		;;
> -	sparclite-wrs | simso-wrs)
> -		basic_machine=sparclite-wrs
> -		os=-vxworks
> +	leon-*|leon[3-9]-*)
> +		cpu=sparc
> +		vendor=`echo "$basic_machine" | sed 's/-.*//'`
>  		;;
> -	sps7)
> -		basic_machine=m68k-bull
> -		os=-sysv2
> +
> +	*-*)
> +		# shellcheck disable=SC2162
> +		IFS="-" read cpu vendor <<EOF
> +$basic_machine
> +EOF
>  		;;
> -	spur)
> -		basic_machine=spur-unknown
> +	# We use `pc' rather than `unknown'
> +	# because (1) that's what they normally are, and
> +	# (2) the word "unknown" tends to confuse beginning users.
> +	i*86 | x86_64)
> +		cpu=$basic_machine
> +		vendor=pc
>  		;;
> -	st2000)
> -		basic_machine=m68k-tandem
> +	# These rules are duplicated from below for sake of the special case above;
> +	# i.e. things that normalized to x86 arches should also default to "pc"
> +	pc98)
> +		cpu=i386
> +		vendor=pc
>  		;;
> -	stratus)
> -		basic_machine=i860-stratus
> -		os=-sysv4
> +	x64 | amd64)
> +		cpu=x86_64
> +		vendor=pc
>  		;;
> -	strongarm-* | thumb-*)
> -		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
> +	# Recognize the basic CPU types without company name.
> +	*)
> +		cpu=$basic_machine
> +		vendor=unknown
>  		;;
> -	sun2)
> -		basic_machine=m68000-sun
> +esac
> +
> +unset -v basic_machine
> +
> +# Decode basic machines in the full and proper CPU-Company form.
> +case $cpu-$vendor in
> +	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
> +	# some cases the only manufacturer, in others, it is the most popular.
> +	craynv-unknown)
> +		vendor=cray
> +		os=${os:-unicosmp}
>  		;;
> -	sun2os3)
> -		basic_machine=m68000-sun
> -		os=-sunos3
> +	c90-unknown | c90-cray)
> +		vendor=cray
> +		os=${os:-unicos}
>  		;;
> -	sun2os4)
> -		basic_machine=m68000-sun
> -		os=-sunos4
> +	fx80-unknown)
> +		vendor=alliant
>  		;;
> -	sun3os3)
> -		basic_machine=m68k-sun
> -		os=-sunos3
> +	romp-unknown)
> +		vendor=ibm
>  		;;
> -	sun3os4)
> -		basic_machine=m68k-sun
> -		os=-sunos4
> +	mmix-unknown)
> +		vendor=knuth
>  		;;
> -	sun4os3)
> -		basic_machine=sparc-sun
> -		os=-sunos3
> +	microblaze-unknown | microblazeel-unknown)
> +		vendor=xilinx
>  		;;
> -	sun4os4)
> -		basic_machine=sparc-sun
> -		os=-sunos4
> +	rs6000-unknown)
> +		vendor=ibm
>  		;;
> -	sun4sol2)
> -		basic_machine=sparc-sun
> -		os=-solaris2
> +	vax-unknown)
> +		vendor=dec
>  		;;
> -	sun3 | sun3-*)
> -		basic_machine=m68k-sun
> +	pdp11-unknown)
> +		vendor=dec
>  		;;
> -	sun4)
> -		basic_machine=sparc-sun
> +	we32k-unknown)
> +		vendor=att
>  		;;
> -	sun386 | sun386i | roadrunner)
> -		basic_machine=i386-sun
> +	cydra-unknown)
> +		vendor=cydrome
>  		;;
> -	sv1)
> -		basic_machine=sv1-cray
> -		os=-unicos
> +	i370-ibm*)
> +		vendor=ibm
>  		;;
> -	symmetry)
> -		basic_machine=i386-sequent
> -		os=-dynix
> +	orion-unknown)
> +		vendor=highlevel
>  		;;
> -	t3e)
> -		basic_machine=alphaev5-cray
> -		os=-unicos
> +	xps-unknown | xps100-unknown)
> +		cpu=xps100
> +		vendor=honeywell
>  		;;
> -	t90)
> -		basic_machine=t90-cray
> -		os=-unicos
> +
> +	# Here we normalize CPU types with a missing or matching vendor
> +	dpx20-unknown | dpx20-bull)
> +		cpu=rs6000
> +		vendor=bull
> +		os=${os:-bosx}
>  		;;
> -	tile*)
> -		basic_machine=$basic_machine-unknown
> -		os=-linux-gnu
> +
> +	# Here we normalize CPU types irrespective of the vendor
> +	amd64-*)
> +		cpu=x86_64
>  		;;
> -	tx39)
> -		basic_machine=mipstx39-unknown
> +	blackfin-*)
> +		cpu=bfin
> +		os=linux
>  		;;
> -	tx39el)
> -		basic_machine=mipstx39el-unknown
> +	c54x-*)
> +		cpu=tic54x
>  		;;
> -	toad1)
> -		basic_machine=pdp10-xkl
> -		os=-tops20
> +	c55x-*)
> +		cpu=tic55x
>  		;;
> -	tower | tower-32)
> -		basic_machine=m68k-ncr
> +	c6x-*)
> +		cpu=tic6x
>  		;;
> -	tpf)
> -		basic_machine=s390x-ibm
> -		os=-tpf
> +	e500v[12]-*)
> +		cpu=powerpc
> +		os=$os"spe"
>  		;;
> -	udi29k)
> -		basic_machine=a29k-amd
> -		os=-udi
> +	mips3*-*)
> +		cpu=mips64
>  		;;
> -	ultra3)
> -		basic_machine=a29k-nyu
> -		os=-sym1
> +	ms1-*)
> +		cpu=mt
>  		;;
> -	v810 | necv810)
> -		basic_machine=v810-nec
> -		os=-none
> +	m68knommu-*)
> +		cpu=m68k
> +		os=linux
>  		;;
> -	vaxv)
> -		basic_machine=vax-dec
> -		os=-sysv
> +	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
> +		cpu=s12z
>  		;;
> -	vms)
> -		basic_machine=vax-dec
> -		os=-vms
> +	openrisc-*)
> +		cpu=or32
>  		;;
> -	vpp*|vx|vx-*)
> -		basic_machine=f301-fujitsu
> +	parisc-*)
> +		cpu=hppa
> +		os=linux
>  		;;
> -	vxworks960)
> -		basic_machine=i960-wrs
> -		os=-vxworks
> +	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
> +		cpu=i586
>  		;;
> -	vxworks68)
> -		basic_machine=m68k-wrs
> -		os=-vxworks
> +	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
> +		cpu=i686
>  		;;
> -	vxworks29k)
> -		basic_machine=a29k-wrs
> -		os=-vxworks
> +	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
> +		cpu=i686
>  		;;
> -	w65*)
> -		basic_machine=w65-wdc
> -		os=-none
> +	pentium4-*)
> +		cpu=i786
>  		;;
> -	w89k-*)
> -		basic_machine=hppa1.1-winbond
> -		os=-proelf
> +	pc98-*)
> +		cpu=i386
>  		;;
> -	xbox)
> -		basic_machine=i686-pc
> -		os=-mingw32
> +	ppc-* | ppcbe-*)
> +		cpu=powerpc
>  		;;
> -	xps | xps100)
> -		basic_machine=xps100-honeywell
> +	ppcle-* | powerpclittle-*)
> +		cpu=powerpcle
>  		;;
> -	xscale-* | xscalee[bl]-*)
> -		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
> +	ppc64-*)
> +		cpu=powerpc64
>  		;;
> -	ymp)
> -		basic_machine=ymp-cray
> -		os=-unicos
> +	ppc64le-* | powerpc64little-*)
> +		cpu=powerpc64le
>  		;;
> -	z8k-*-coff)
> -		basic_machine=z8k-unknown
> -		os=-sim
> +	sb1-*)
> +		cpu=mipsisa64sb1
>  		;;
> -	z80-*-coff)
> -		basic_machine=z80-unknown
> -		os=-sim
> +	sb1el-*)
> +		cpu=mipsisa64sb1el
>  		;;
> -	none)
> -		basic_machine=none-none
> -		os=-none
> +	sh5e[lb]-*)
> +		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
>  		;;
> -
> -# Here we handle the default manufacturer of certain CPU types.  It is in
> -# some cases the only manufacturer, in others, it is the most popular.
> -	w89k)
> -		basic_machine=hppa1.1-winbond
> +	spur-*)
> +		cpu=spur
>  		;;
> -	op50n)
> -		basic_machine=hppa1.1-oki
> +	strongarm-* | thumb-*)
> +		cpu=arm
>  		;;
> -	op60c)
> -		basic_machine=hppa1.1-oki
> +	tx39-*)
> +		cpu=mipstx39
>  		;;
> -	romp)
> -		basic_machine=romp-ibm
> +	tx39el-*)
> +		cpu=mipstx39el
>  		;;
> -	mmix)
> -		basic_machine=mmix-knuth
> +	x64-*)
> +		cpu=x86_64
>  		;;
> -	rs6000)
> -		basic_machine=rs6000-ibm
> +	xscale-* | xscalee[bl]-*)
> +		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
>  		;;
> -	vax)
> -		basic_machine=vax-dec
> +
> +	# Recognize the canonical CPU Types that limit and/or modify the
> +	# company names they are paired with.
> +	cr16-*)
> +		os=${os:-elf}
>  		;;
> -	pdp10)
> -		# there are many clones, so DEC is not a safe bet
> -		basic_machine=pdp10-unknown
> +	crisv32-* | etraxfs*-*)
> +		cpu=crisv32
> +		vendor=axis
>  		;;
> -	pdp11)
> -		basic_machine=pdp11-dec
> +	cris-* | etrax*-*)
> +		cpu=cris
> +		vendor=axis
>  		;;
> -	we32k)
> -		basic_machine=we32k-att
> +	crx-*)
> +		os=${os:-elf}
>  		;;
> -	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
> -		basic_machine=sh-unknown
> +	neo-tandem)
> +		cpu=neo
> +		vendor=tandem
>  		;;
> -	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
> -		basic_machine=sparc-sun
> +	nse-tandem)
> +		cpu=nse
> +		vendor=tandem
>  		;;
> -	cydra)
> -		basic_machine=cydra-cydrome
> +	nsr-tandem)
> +		cpu=nsr
> +		vendor=tandem
>  		;;
> -	orion)
> -		basic_machine=orion-highlevel
> +	nsv-tandem)
> +		cpu=nsv
> +		vendor=tandem
>  		;;
> -	orion105)
> -		basic_machine=clipper-highlevel
> +	nsx-tandem)
> +		cpu=nsx
> +		vendor=tandem
>  		;;
> -	mac | mpw | mac-mpw)
> -		basic_machine=m68k-apple
> +	s390-*)
> +		cpu=s390
> +		vendor=ibm
>  		;;
> -	pmac | pmac-mpw)
> -		basic_machine=powerpc-apple
> +	s390x-*)
> +		cpu=s390x
> +		vendor=ibm
>  		;;
> -	*-unknown)
> -		# Make sure to match an already-canonicalized machine name.
> +	tile*-*)
> +		os=${os:-linux-gnu}
>  		;;
> +
>  	*)
> -		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
> -		exit 1
> +		# Recognize the canonical CPU types that are allowed with any
> +		# company name.
> +		case $cpu in
> +			1750a | 580 \
> +			| a29k \
> +			| aarch64 | aarch64_be \
> +			| abacus \
> +			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
> +			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
> +			| alphapca5[67] | alpha64pca5[67] \
> +			| am33_2.0 \
> +			| amdgcn \
> +			| arc | arceb \
> +			| arm  | arm[lb]e | arme[lb] | armv* \
> +			| avr | avr32 \
> +			| asmjs \
> +			| ba \
> +			| be32 | be64 \
> +			| bfin | bpf | bs2000 \
> +			| c[123]* | c30 | [cjt]90 | c4x \
> +			| c8051 | clipper | craynv | csky | cydra \
> +			| d10v | d30v | dlx | dsp16xx \
> +			| e2k | elxsi | epiphany \
> +			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
> +			| h8300 | h8500 \
> +			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
> +			| hexagon \
> +			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
> +			| ip2k | iq2000 \
> +			| k1om \
> +			| le32 | le64 \
> +			| lm32 \
> +			| m32c | m32r | m32rle \
> +			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
> +			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
> +			| m88110 | m88k | maxq | mb | mcore | mep | metag \
> +			| microblaze | microblazeel \
> +			| mips | mipsbe | mipseb | mipsel | mipsle \
> +			| mips16 \
> +			| mips64 | mips64eb | mips64el \
> +			| mips64octeon | mips64octeonel \
> +			| mips64orion | mips64orionel \
> +			| mips64r5900 | mips64r5900el \
> +			| mips64vr | mips64vrel \
> +			| mips64vr4100 | mips64vr4100el \
> +			| mips64vr4300 | mips64vr4300el \
> +			| mips64vr5000 | mips64vr5000el \
> +			| mips64vr5900 | mips64vr5900el \
> +			| mipsisa32 | mipsisa32el \
> +			| mipsisa32r2 | mipsisa32r2el \
> +			| mipsisa32r6 | mipsisa32r6el \
> +			| mipsisa64 | mipsisa64el \
> +			| mipsisa64r2 | mipsisa64r2el \
> +			| mipsisa64r6 | mipsisa64r6el \
> +			| mipsisa64sb1 | mipsisa64sb1el \
> +			| mipsisa64sr71k | mipsisa64sr71kel \
> +			| mipsr5900 | mipsr5900el \
> +			| mipstx39 | mipstx39el \
> +			| mmix \
> +			| mn10200 | mn10300 \
> +			| moxie \
> +			| mt \
> +			| msp430 \
> +			| nds32 | nds32le | nds32be \
> +			| nfp \
> +			| nios | nios2 | nios2eb | nios2el \
> +			| none | np1 | ns16k | ns32k | nvptx \
> +			| open8 \
> +			| or1k* \
> +			| or32 \
> +			| orion \
> +			| picochip \
> +			| pdp10 | pdp11 | pj | pjl | pn | power \
> +			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
> +			| pru \
> +			| pyramid \
> +			| riscv | riscv32 | riscv64 \
> +			| rl78 | romp | rs6000 | rx \
> +			| score \
> +			| sh | shl \
> +			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
> +			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
> +			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
> +			| sparclite \
> +			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
> +			| spu \
> +			| tahoe \
> +			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
> +			| tron \
> +			| ubicom32 \
> +			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
> +			| vax \
> +			| visium \
> +			| w65 \
> +			| wasm32 | wasm64 \
> +			| we32k \
> +			| x86 | x86_64 | xc16x | xgate | xps100 \
> +			| xstormy16 | xtensa* \
> +			| ymp \
> +			| z8k | z80)
> +				;;
> +
> +			*)
> +				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
> +				exit 1
> +				;;
> +		esac
>  		;;
>  esac
>  
>  # Here we canonicalize certain aliases for manufacturers.
> -case $basic_machine in
> -	*-digital*)
> -		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
> +case $vendor in
> +	digital*)
> +		vendor=dec
>  		;;
> -	*-commodore*)
> -		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
> +	commodore*)
> +		vendor=cbm
>  		;;
>  	*)
>  		;;
> @@ -1345,200 +1278,246 @@ esac
>  
>  # Decode manufacturer-specific aliases for certain operating systems.
>  
> -if [ x"$os" != x"" ]
> +if [ x$os != x ]
>  then
>  case $os in
> -	# First match some system type aliases
> -	# that might get confused with valid system types.
> -	# -solaris* is a basic system type, with this one exception.
> -	-auroraux)
> -		os=-auroraux
> +	# First match some system type aliases that might get confused
> +	# with valid system types.
> +	# solaris* is a basic system type, with this one exception.
> +	auroraux)
> +		os=auroraux
>  		;;
> -	-solaris1 | -solaris1.*)
> -		os=`echo $os | sed -e 's|solaris1|sunos4|'`
> +	bluegene*)
> +		os=cnk
>  		;;
> -	-solaris)
> -		os=-solaris2
> +	solaris1 | solaris1.*)
> +		os=`echo $os | sed -e 's|solaris1|sunos4|'`
>  		;;
> -	-svr4*)
> -		os=-sysv4
> +	solaris)
> +		os=solaris2
>  		;;
> -	-unixware*)
> -		os=-sysv4.2uw
> +	unixware*)
> +		os=sysv4.2uw
>  		;;
> -	-gnu/linux*)
> +	gnu/linux*)
>  		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
>  		;;
> -	# First accept the basic system types.
> +	# es1800 is here to avoid being matched by es* (a different OS)
> +	es1800*)
> +		os=ose
> +		;;
> +	# Some version numbers need modification
> +	chorusos*)
> +		os=chorusos
> +		;;
> +	isc)
> +		os=isc2.2
> +		;;
> +	sco6)
> +		os=sco5v6
> +		;;
> +	sco5)
> +		os=sco3.2v5
> +		;;
> +	sco4)
> +		os=sco3.2v4
> +		;;
> +	sco3.2.[4-9]*)
> +		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
> +		;;
> +	sco3.2v[4-9]* | sco5v6*)
> +		# Don't forget version if it is 3.2v4 or newer.
> +		;;
> +	scout)
> +		# Don't match below
> +		;;
> +	sco*)
> +		os=sco3.2v2
> +		;;
> +	psos*)
> +		os=psos
> +		;;
> +	# Now accept the basic system types.
>  	# The portable systems comes first.
> -	# Each alternative MUST END IN A *, to match a version number.
> -	# -sysv* is not here because it comes later, after sysvr4.
> -	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
> -	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
> -	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
> -	      | -sym* | -kopensolaris* | -plan9* \
> -	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
> -	      | -aos* | -aros* | -cloudabi* | -sortix* \
> -	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
> -	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
> -	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
> -	      | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
> -	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
> -	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
> -	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
> -	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
> -	      | -chorusos* | -chorusrdb* | -cegcc* \
> -	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
> -	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
> -	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
> -	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
> -	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
> -	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
> -	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
> -	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
> -	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
> -	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
> -	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
> -	      | -onefs* | -tirtos* | -phoenix*)
> +	# Each alternative MUST end in a * to match a version number.
> +	# sysv* is not here because it comes later, after sysvr4.
> +	gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
> +	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
> +	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
> +	     | sym* | kopensolaris* | plan9* \
> +	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
> +	     | aos* | aros* | cloudabi* | sortix* \
> +	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
> +	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
> +	     | knetbsd* | mirbsd* | netbsd* \
> +	     | bitrig* | openbsd* | solidbsd* | libertybsd* \
> +	     | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
> +	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
> +	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
> +	     | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
> +	     | chorusrdb* | cegcc* | glidix* \
> +	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
> +	     | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
> +	     | linux-newlib* | linux-musl* | linux-uclibc* \
> +	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
> +	     | interix* | uwin* | mks* | rhapsody* | darwin* \
> +	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
> +	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
> +	     | os2* | vos* | palmos* | uclinux* | nucleus* \
> +	     | morphos* | superux* | rtmk* | windiss* \
> +	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
> +	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
> +	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
> +	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi*)
>  	# Remember, each alternative MUST END IN *, to match a version number.
>  		;;
> -	-qnx*)
> -		case $basic_machine in
> -		    x86-* | i*86-*)
> +	qnx*)
> +		case $cpu in
> +		    x86 | i*86)
>  			;;
>  		    *)
> -			os=-nto$os
> +			os=nto-$os
>  			;;
>  		esac
>  		;;
> -	-nto-qnx*)
> +	hiux*)
> +		os=hiuxwe2
>  		;;
> -	-nto*)
> -		os=`echo $os | sed -e 's|nto|nto-qnx|'`
> +	nto-qnx*)
>  		;;
> -	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
> -	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
> -	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
> +	nto*)
> +		os=`echo $os | sed -e 's|nto|nto-qnx|'`
>  		;;
> -	-mac*)
> -		os=`echo $os | sed -e 's|mac|macos|'`
> +	sim | xray | os68k* | v88r* \
> +	    | windows* | osx | abug | netware* | os9* \
> +	    | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
>  		;;
> -	-linux-dietlibc)
> -		os=-linux-dietlibc
> +	linux-dietlibc)
> +		os=linux-dietlibc
>  		;;
> -	-linux*)
> +	linux*)
>  		os=`echo $os | sed -e 's|linux|linux-gnu|'`
>  		;;
> -	-sunos5*)
> -		os=`echo $os | sed -e 's|sunos5|solaris2|'`
> +	lynx*178)
> +		os=lynxos178
>  		;;
> -	-sunos6*)
> -		os=`echo $os | sed -e 's|sunos6|solaris3|'`
> +	lynx*5)
> +		os=lynxos5
>  		;;
> -	-opened*)
> -		os=-openedition
> +	lynx*)
> +		os=lynxos
>  		;;
> -	-os400*)
> -		os=-os400
> +	mac*)
> +		os=`echo "$os" | sed -e 's|mac|macos|'`
>  		;;
> -	-wince*)
> -		os=-wince
> +	opened*)
> +		os=openedition
>  		;;
> -	-osfrose*)
> -		os=-osfrose
> +	os400*)
> +		os=os400
>  		;;
> -	-osf*)
> -		os=-osf
> +	sunos5*)
> +		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
>  		;;
> -	-utek*)
> -		os=-bsd
> +	sunos6*)
> +		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
>  		;;
> -	-dynix*)
> -		os=-bsd
> +	wince*)
> +		os=wince
>  		;;
> -	-acis*)
> -		os=-aos
> +	utek*)
> +		os=bsd
>  		;;
> -	-atheos*)
> -		os=-atheos
> +	dynix*)
> +		os=bsd
>  		;;
> -	-syllable*)
> -		os=-syllable
> +	acis*)
> +		os=aos
>  		;;
> -	-386bsd)
> -		os=-bsd
> +	atheos*)
> +		os=atheos
>  		;;
> -	-ctix* | -uts*)
> -		os=-sysv
> +	syllable*)
> +		os=syllable
>  		;;
> -	-nova*)
> -		os=-rtmk-nova
> +	386bsd)
> +		os=bsd
> +		;;
> +	ctix* | uts*)
> +		os=sysv
> +		;;
> +	nova*)
> +		os=rtmk-nova
>  		;;
> -	-ns2 )
> -		os=-nextstep2
> +	ns2)
> +		os=nextstep2
>  		;;
> -	-nsk*)
> -		os=-nsk
> +	nsk*)
> +		os=nsk
>  		;;
>  	# Preserve the version number of sinix5.
> -	-sinix5.*)
> +	sinix5.*)
>  		os=`echo $os | sed -e 's|sinix|sysv|'`
>  		;;
> -	-sinix*)
> -		os=-sysv4
> +	sinix*)
> +		os=sysv4
>  		;;
> -	-tpf*)
> -		os=-tpf
> +	tpf*)
> +		os=tpf
>  		;;
> -	-triton*)
> -		os=-sysv3
> +	triton*)
> +		os=sysv3
>  		;;
> -	-oss*)
> -		os=-sysv3
> +	oss*)
> +		os=sysv3
>  		;;
> -	-svr4)
> -		os=-sysv4
> +	svr4*)
> +		os=sysv4
>  		;;
> -	-svr3)
> -		os=-sysv3
> +	svr3)
> +		os=sysv3
>  		;;
> -	-sysvr4)
> -		os=-sysv4
> +	sysvr4)
> +		os=sysv4
>  		;;
> -	# This must come after -sysvr4.
> -	-sysv*)
> +	# This must come after sysvr4.
> +	sysv*)
>  		;;
> -	-ose*)
> -		os=-ose
> +	ose*)
> +		os=ose
>  		;;
> -	-es1800*)
> -		os=-ose
> +	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
> +		os=mint
>  		;;
> -	-xenix)
> -		os=-xenix
> +	zvmoe)
> +		os=zvmoe
>  		;;
> -	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
> -		os=-mint
> +	dicos*)
> +		os=dicos
>  		;;
> -	-aros*)
> -		os=-aros
> -		;;
> -	-zvmoe)
> -		os=-zvmoe
> +	pikeos*)
> +		# Until real need of OS specific support for
> +		# particular features comes up, bare metal
> +		# configurations are quite functional.
> +		case $cpu in
> +		    arm*)
> +			os=eabi
> +			;;
> +		    *)
> +			os=elf
> +			;;
> +		esac
>  		;;
> -	-dicos*)
> -		os=-dicos
> +	nacl*)
>  		;;
> -	-nacl*)
> +	ios)
>  		;;
> -	-ios)
> +	none)
>  		;;
> -	-none)
> +	*-eabi)
>  		;;
>  	*)
> -		# Get rid of the `-' at the beginning of $os.
> -		os=`echo $os | sed 's/[^-]*-//'`
> -		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
> +		echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
>  		exit 1
>  		;;
>  esac
> @@ -1554,261 +1533,265 @@ else
>  # will signal an error saying that MANUFACTURER isn't an operating
>  # system, and we'll never get to this point.
>  
> -case $basic_machine in
> +case $cpu-$vendor in
>  	score-*)
> -		os=-elf
> +		os=elf
>  		;;
>  	spu-*)
> -		os=-elf
> +		os=elf
>  		;;
>  	*-acorn)
> -		os=-riscix1.2
> +		os=riscix1.2
>  		;;
>  	arm*-rebel)
> -		os=-linux
> +		os=linux
>  		;;
>  	arm*-semi)
> -		os=-aout
> +		os=aout
>  		;;
>  	c4x-* | tic4x-*)
> -		os=-coff
> +		os=coff
>  		;;
>  	c8051-*)
> -		os=-elf
> +		os=elf
> +		;;
> +	clipper-intergraph)
> +		os=clix
>  		;;
>  	hexagon-*)
> -		os=-elf
> +		os=elf
>  		;;
>  	tic54x-*)
> -		os=-coff
> +		os=coff
>  		;;
>  	tic55x-*)
> -		os=-coff
> +		os=coff
>  		;;
>  	tic6x-*)
> -		os=-coff
> +		os=coff
>  		;;
>  	# This must come before the *-dec entry.
>  	pdp10-*)
> -		os=-tops20
> +		os=tops20
>  		;;
>  	pdp11-*)
> -		os=-none
> +		os=none
>  		;;
>  	*-dec | vax-*)
> -		os=-ultrix4.2
> +		os=ultrix4.2
>  		;;
>  	m68*-apollo)
> -		os=-domain
> +		os=domain
>  		;;
>  	i386-sun)
> -		os=-sunos4.0.2
> +		os=sunos4.0.2
>  		;;
>  	m68000-sun)
> -		os=-sunos3
> +		os=sunos3
>  		;;
>  	m68*-cisco)
> -		os=-aout
> +		os=aout
>  		;;
>  	mep-*)
> -		os=-elf
> +		os=elf
>  		;;
>  	mips*-cisco)
> -		os=-elf
> +		os=elf
>  		;;
>  	mips*-*)
> -		os=-elf
> +		os=elf
>  		;;
>  	or32-*)
> -		os=-coff
> +		os=coff
>  		;;
>  	*-tti)	# must be before sparc entry or we get the wrong os.
> -		os=-sysv3
> +		os=sysv3
>  		;;
>  	sparc-* | *-sun)
> -		os=-sunos4.1.1
> +		os=sunos4.1.1
>  		;;
> -	*-be)
> -		os=-beos
> +	pru-*)
> +		os=elf
>  		;;
> -	*-haiku)
> -		os=-haiku
> +	*-be)
> +		os=beos
>  		;;
>  	*-ibm)
> -		os=-aix
> +		os=aix
>  		;;
>  	*-knuth)
> -		os=-mmixware
> +		os=mmixware
>  		;;
>  	*-wec)
> -		os=-proelf
> +		os=proelf
>  		;;
>  	*-winbond)
> -		os=-proelf
> +		os=proelf
>  		;;
>  	*-oki)
> -		os=-proelf
> +		os=proelf
>  		;;
>  	*-hp)
> -		os=-hpux
> +		os=hpux
>  		;;
>  	*-hitachi)
> -		os=-hiux
> +		os=hiux
>  		;;
>  	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
> -		os=-sysv
> +		os=sysv
>  		;;
>  	*-cbm)
> -		os=-amigaos
> +		os=amigaos
>  		;;
>  	*-dg)
> -		os=-dgux
> +		os=dgux
>  		;;
>  	*-dolphin)
> -		os=-sysv3
> +		os=sysv3
>  		;;
>  	m68k-ccur)
> -		os=-rtu
> +		os=rtu
>  		;;
>  	m88k-omron*)
> -		os=-luna
> +		os=luna
>  		;;
> -	*-next )
> -		os=-nextstep
> +	*-next)
> +		os=nextstep
>  		;;
>  	*-sequent)
> -		os=-ptx
> +		os=ptx
>  		;;
>  	*-crds)
> -		os=-unos
> +		os=unos
>  		;;
>  	*-ns)
> -		os=-genix
> +		os=genix
>  		;;
>  	i370-*)
> -		os=-mvs
> -		;;
> -	*-next)
> -		os=-nextstep3
> +		os=mvs
>  		;;
>  	*-gould)
> -		os=-sysv
> +		os=sysv
>  		;;
>  	*-highlevel)
> -		os=-bsd
> +		os=bsd
>  		;;
>  	*-encore)
> -		os=-bsd
> +		os=bsd
>  		;;
>  	*-sgi)
> -		os=-irix
> +		os=irix
>  		;;
>  	*-siemens)
> -		os=-sysv4
> +		os=sysv4
>  		;;
>  	*-masscomp)
> -		os=-rtu
> +		os=rtu
>  		;;
>  	f30[01]-fujitsu | f700-fujitsu)
> -		os=-uxpv
> +		os=uxpv
>  		;;
>  	*-rom68k)
> -		os=-coff
> +		os=coff
>  		;;
>  	*-*bug)
> -		os=-coff
> +		os=coff
>  		;;
>  	*-apple)
> -		os=-macos
> +		os=macos
>  		;;
>  	*-atari*)
> -		os=-mint
> +		os=mint
> +		;;
> +	*-wrs)
> +		os=vxworks
>  		;;
>  	*)
> -		os=-none
> +		os=none
>  		;;
>  esac
>  fi
>  
>  # Here we handle the case where we know the os, and the CPU type, but not the
>  # manufacturer.  We pick the logical manufacturer.
> -vendor=unknown
> -case $basic_machine in
> -	*-unknown)
> +case $vendor in
> +	unknown)
>  		case $os in
> -			-riscix*)
> +			riscix*)
>  				vendor=acorn
>  				;;
> -			-sunos*)
> +			sunos*)
>  				vendor=sun
>  				;;
> -			-cnk*|-aix*)
> +			cnk*|-aix*)
>  				vendor=ibm
>  				;;
> -			-beos*)
> +			beos*)
>  				vendor=be
>  				;;
> -			-hpux*)
> +			hpux*)
>  				vendor=hp
>  				;;
> -			-mpeix*)
> +			mpeix*)
>  				vendor=hp
>  				;;
> -			-hiux*)
> +			hiux*)
>  				vendor=hitachi
>  				;;
> -			-unos*)
> +			unos*)
>  				vendor=crds
>  				;;
> -			-dgux*)
> +			dgux*)
>  				vendor=dg
>  				;;
> -			-luna*)
> +			luna*)
>  				vendor=omron
>  				;;
> -			-genix*)
> +			genix*)
>  				vendor=ns
>  				;;
> -			-mvs* | -opened*)
> +			clix*)
> +				vendor=intergraph
> +				;;
> +			mvs* | opened*)
>  				vendor=ibm
>  				;;
> -			-os400*)
> +			os400*)
>  				vendor=ibm
>  				;;
> -			-ptx*)
> +			ptx*)
>  				vendor=sequent
>  				;;
> -			-tpf*)
> +			tpf*)
>  				vendor=ibm
>  				;;
> -			-vxsim* | -vxworks* | -windiss*)
> +			vxsim* | vxworks* | windiss*)
>  				vendor=wrs
>  				;;
> -			-aux*)
> +			aux*)
>  				vendor=apple
>  				;;
> -			-hms*)
> +			hms*)
>  				vendor=hitachi
>  				;;
> -			-mpw* | -macos*)
> +			mpw* | macos*)
>  				vendor=apple
>  				;;
> -			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
> +			*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
>  				vendor=atari
>  				;;
> -			-vos*)
> +			vos*)
>  				vendor=stratus
>  				;;
>  		esac
> -		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
>  		;;
>  esac
>  
> -echo $basic_machine$os
> +echo "$cpu-$vendor-$os"
>  exit
>  
>  # Local variables:
> -# eval: (add-hook 'write-file-hooks 'time-stamp)
> +# eval: (add-hook 'before-save-hook 'time-stamp)
>  # time-stamp-start: "timestamp='"
>  # time-stamp-format: "%:y-%02m-%02d"
>  # time-stamp-end: "'"
> -- 
> 2.21.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28
  2019-05-28 20:34 ` [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28 Thomas Petazzoni
  2019-05-30 10:36   ` Peter Korsgaard
  2019-05-31 20:04   ` Yann E. MORIN
@ 2019-05-31 21:02   ` Thomas Petazzoni
  2 siblings, 0 replies; 18+ messages in thread
From: Thomas Petazzoni @ 2019-05-31 21:02 UTC (permalink / raw)
  To: buildroot

On Tue, 28 May 2019 22:34:13 +0200
Thomas Petazzoni <thomas.petazzoni@bootlin.com> wrote:

> This update includes support for the C-SKY architecture.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
> Note: this was suggested by Peter for next, instead of just patching
> the files to add csky support. It should be applied after
> cherry-picking 910b431d6383cd1ce4cd9eeb0a8466cb977c3789 from master.
> ---
>  support/gnuconfig/README.buildroot |    2 +-
>  support/gnuconfig/config.guess     |  836 +++++----
>  support/gnuconfig/config.sub       | 2525 ++++++++++++++--------------
>  3 files changed, 1774 insertions(+), 1589 deletions(-)

Applied to next, thanks.

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28
  2019-05-31 12:57         ` Thomas Petazzoni
@ 2019-05-31 21:02           ` Peter Korsgaard
  0 siblings, 0 replies; 18+ messages in thread
From: Peter Korsgaard @ 2019-05-31 21:02 UTC (permalink / raw)
  To: buildroot

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

Hi,

 > Overall, I am no longer so sure of the benefits vs. complexity
 > trade-off here. The above issues can be resolved for sure, but is it
 > worth it, compared to just having those two files in our tree ?

Indeed, lets drop that for now.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2019-05-31 21:02 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-28 20:34 [Buildroot] [PATCH v2 0/6] gnuconfig and csky updates Thomas Petazzoni
2019-05-28 20:34 ` [Buildroot] [PATCH v2 1/6] package/lmbench: use UPDATE_CONFIG_HOOK instead of CONFIG_UPDATE Thomas Petazzoni
2019-05-30 10:33   ` Peter Korsgaard
2019-05-28 20:34 ` [Buildroot] [PATCH v2 2/6] support/gnuconfig: update README.buildroot with reality Thomas Petazzoni
2019-05-30 10:34   ` Peter Korsgaard
2019-05-28 20:34 ` [Buildroot] [PATCH v2 3/6] support/gnuconfig: update to 2019-05-28 Thomas Petazzoni
2019-05-30 10:36   ` Peter Korsgaard
2019-05-30 12:38     ` Thomas Petazzoni
2019-05-30 12:53       ` Peter Korsgaard
2019-05-31 12:57         ` Thomas Petazzoni
2019-05-31 21:02           ` Peter Korsgaard
2019-05-31 20:04   ` Yann E. MORIN
2019-05-31 21:02   ` Thomas Petazzoni
2019-05-28 20:34 ` [Buildroot] [PATCH v2 4/6] toolchain/toolchain-external/toolchain-external-csky: new package Thomas Petazzoni
2019-05-29  5:48   ` Guo Ren
2019-05-29  6:49     ` Thomas Petazzoni
2019-05-28 20:34 ` [Buildroot] [PATCH v2 5/6] configs/csky_gx6605s: use the C-SKY external toolchain package Thomas Petazzoni
2019-05-28 20:34 ` [Buildroot] [PATCH v2 6/6] support/config-fragments/autobuild: add testing for the C-SKY architecture Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.