diff --git a/.gitignore b/.gitignore
index eab8ed427987c62daee897e243db107c1013ad78..7fd98398076fe2b1dfb036d40ab6c3987df3808d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,9 @@ stage.tar.gz
 stage.toml
 sysroot
 xargo
+
+
+#Added by cargo
+
+/target
+**/*.rs.bk
diff --git a/recipes/acid/recipe.toml b/recipes/acid/recipe.toml
new file mode 100644
index 0000000000000000000000000000000000000000..2c63247f6a457eb61ce5e31336631694f5fc435d
--- /dev/null
+++ b/recipes/acid/recipe.toml
@@ -0,0 +1,6 @@
+[source]
+git = "https://gitlab.redox-os.org/redox-os/acid.git"
+branch = "master"
+
+[build]
+template = "cargo"
diff --git a/recipes/libffi/recipe.toml b/recipes/libffi/recipe.toml
new file mode 100644
index 0000000000000000000000000000000000000000..cebe71c4a7add45736cfa3f3b0e7762a675d6d58
--- /dev/null
+++ b/recipes/libffi/recipe.toml
@@ -0,0 +1,8 @@
+[source]
+tar = "https://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz"
+patches = [
+    "redox.patch"
+]
+
+[build]
+template = "configure"
diff --git a/recipes/libffi/redox.patch b/recipes/libffi/redox.patch
new file mode 100644
index 0000000000000000000000000000000000000000..c96d3cf9d5a138551c70f7d601a273a2a5db48bd
--- /dev/null
+++ b/recipes/libffi/redox.patch
@@ -0,0 +1,2820 @@
+--- source/config.sub	2014-11-12 04:59:58.000000000 -0700
++++ source-newconfig.sub	2020-05-20 15:41:56.000000000 -0600
+@@ -1,8 +1,8 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+-#   Copyright 1992-2013 Free Software Foundation, Inc.
++#   Copyright 1992-2020 Free Software Foundation, Inc.
+ 
+-timestamp='2013-04-24'
++timestamp='2020-05-04'
+ 
+ # 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 @@
+ # 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
+@@ -25,7 +25,7 @@
+ # of the GNU General Public License, version 3 ("GPLv3").
+ 
+ 
+-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
++# Please send patches to <config-patches@gnu.org>.
+ #
+ # Configuration subroutine to validate and canonicalize a configuration type.
+ # Supply the specified configuration type as an argument.
+@@ -33,7 +33,7 @@
+ # 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;hb=HEAD
++# 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
+@@ -53,12 +53,11 @@
+ me=`echo "$0" | sed -e 's,.*/,,'`
+ 
+ usage="\
+-Usage: $0 [OPTION] CPU-MFR-OPSYS
+-       $0 [OPTION] ALIAS
++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
+@@ -68,7 +67,7 @@
+ version="\
+ GNU config.sub ($timestamp)
+ 
+-Copyright 1992-2013 Free Software Foundation, Inc.
++Copyright 1992-2020 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."
+@@ -90,12 +89,12 @@
+     - )	# 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 ;;
+ 
+     * )
+@@ -111,1209 +110,1164 @@
+     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/'`
++# Split fields of configuration type
++# shellcheck disable=SC2162
++IFS="-" read field1 field2 field3 field4 <<EOF
++$1
++EOF
++
++# Separate into logical components for further validation
++case $1 in
++	*-*-*-*-*)
++		echo Invalid configuration \`"$1"\': more than four components >&2
++		exit 1
++		;;
++	*-*-*-*)
++		basic_machine=$field1-$field2
++		os=$field3-$field4
++		;;
++	*-*-*)
++		# 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* | \
+-  kopensolaris*-gnu* | \
+-  storm-chaos* | os2-emx* | rtmk-nova*)
+-    os=-$maybe_os
+-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
++			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)
+-    os=-linux-android
+-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
++				basic_machine=$field1-unknown
++				os=linux-android
+     ;;
+   *)
+-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+-    if [ $basic_machine != $1 ]
+-    then os=`echo $1 | sed 's/.*-/-/'`
+-    else os=; fi
++				basic_machine=$field1-$field2
++				os=$field3
+     ;;
+ esac
+-
+-### 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*)
++	*-*)
++		# A lone config we happen to match not fitting any pattern
++		case $field1-$field2 in
++			decstation-3100)
++				basic_machine=mips-dec
+ 		os=
+-		basic_machine=$1
+-		;;
+-	-bluegene*)
+-		os=-cnk
+ 		;;
+-	-sim | -cisco | -oki | -wec | -winbond)
++			*-*)
++				# 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=$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
+-		;;
+-	-ptx*)
+-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+-		;;
+-	-windowsnt*)
+-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+-		;;
+-	-psos*)
+-		os=-psos
+-		;;
+-	-mint | -mint[0-9]*)
+-		basic_machine=m68k-atari
+-		os=-mint
++					*)
++						basic_machine=$field1
++						os=$field2
+ 		;;
+ esac
+-
+-# Decode aliases for certain CPU-COMPANY combinations.
+-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 \
+-	| be32 | be64 \
+-	| bfin \
+-	| c4x | clipper \
+-	| d10v | d30v | dlx | dsp16xx \
+-	| epiphany \
+-	| fido | fr30 | frv \
+-	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+-	| hexagon \
+-	| i370 | i860 | i960 | ia64 \
+-	| ip2k | iq2000 \
+-	| 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 \
+-	| mipsisa64 | mipsisa64el \
+-	| mipsisa64r2 | mipsisa64r2el \
+-	| mipsisa64sb1 | mipsisa64sb1el \
+-	| mipsisa64sr71k | mipsisa64sr71kel \
+-	| mipsr5900 | mipsr5900el \
+-	| mipstx39 | mipstx39el \
+-	| mn10200 | mn10300 \
+-	| moxie \
+-	| mt \
+-	| msp430 \
+-	| nds32 | nds32le | nds32be \
+-	| nios | nios2 | nios2eb | nios2el \
+-	| ns16k | ns32k \
+-	| open8 \
+-	| or1k | or32 \
+-	| pdp10 | pdp11 | pj | pjl \
+-	| powerpc | powerpc64 | powerpc64le | powerpcle \
+-	| pyramid \
+-	| rl78 | rx \
+-	| score \
+-	| 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 \
+-	| spu \
+-	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+-	| ubicom32 \
+-	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+-	| 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
+-		;;
+-	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+-		basic_machine=$basic_machine-unknown
+-		os=-none
+-		;;
+-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+-		;;
+-	ms1)
+-		basic_machine=mt-unknown
+-		;;
+-
+-	strongarm | thumb | xscale)
+-		basic_machine=arm-unknown
+-		;;
+-	xgate)
+-		basic_machine=$basic_machine-unknown
+-		os=-none
+-		;;
+-	xscaleeb)
+-		basic_machine=armeb-unknown
+-		;;
+-
+-	xscaleel)
+-		basic_machine=armel-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)
+-	  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-* \
+-	| be32-* | be64-* \
+-	| bfin-* | bs2000-* \
+-	| c[123]* | c30-* | [cjt]90-* | c4x-* \
+-	| clipper-* | craynv-* | cydra-* \
+-	| d10v-* | d30v-* | dlx-* \
+-	| 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-* \
+-	| 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-* \
+-	| mipsisa64-* | mipsisa64el-* \
+-	| mipsisa64r2-* | mipsisa64r2el-* \
+-	| mipsisa64sb1-* | mipsisa64sb1el-* \
+-	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+-	| mipsr5900-* | mipsr5900el-* \
+-	| mipstx39-* | mipstx39el-* \
+-	| mmix-* \
+-	| mt-* \
+-	| msp430-* \
+-	| nds32-* | nds32le-* | nds32be-* \
+-	| nios-* | nios2-* | nios2eb-* | nios2el-* \
+-	| none-* | np1-* | ns16k-* | ns32k-* \
+-	| open8-* \
+-	| orion-* \
+-	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+-	| pyramid-* \
+-	| 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-* \
+-	| 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
++		esac
+ 		;;
+-	# Recognize the various machine names and aliases which stand
+-	# for a CPU type and a company and sometimes even an OS.
++	*)
++		# Convert single-component short-hands not valid as part of
++		# multi-component configurations.
++		case $field1 in
+ 	386bsd)
+-		basic_machine=i386-unknown
+-		os=-bsd
+-		;;
+-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+-		basic_machine=m68000-att
+-		;;
+-	3b*)
+-		basic_machine=we32k-att
++				basic_machine=i386-pc
++				os=bsd
+ 		;;
+ 	a29khif)
+ 		basic_machine=a29k-amd
+-		os=-udi
+-		;;
+-	abacus)
+-		basic_machine=abacus-unknown
++				os=udi
+ 		;;
+ 	adobe68k)
+ 		basic_machine=m68010-adobe
+-		os=-scout
++				os=scout
+ 		;;
+-	alliant | fx80)
++			alliant)
+ 		basic_machine=fx80-alliant
++				os=
+ 		;;
+ 	altos | altos3068)
+ 		basic_machine=m68k-altos
++				os=
+ 		;;
+ 	am29k)
+ 		basic_machine=a29k-none
+-		os=-bsd
+-		;;
+-	amd64)
+-		basic_machine=x86_64-pc
+-		;;
+-	amd64-*)
+-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
++				os=bsd
+ 		;;
+ 	amdahl)
+ 		basic_machine=580-amdahl
+-		os=-sysv
++				os=sysv
+ 		;;
+-	amiga | amiga-*)
++			amiga)
+ 		basic_machine=m68k-unknown
++				os=
+ 		;;
+ 	amigaos | amigados)
+ 		basic_machine=m68k-unknown
+-		os=-amigaos
++				os=amigaos
+ 		;;
+ 	amigaunix | amix)
+ 		basic_machine=m68k-unknown
+-		os=-sysv4
++				os=sysv4
+ 		;;
+ 	apollo68)
+ 		basic_machine=m68k-apollo
+-		os=-sysv
++				os=sysv
+ 		;;
+ 	apollo68bsd)
+ 		basic_machine=m68k-apollo
+-		os=-bsd
++				os=bsd
+ 		;;
+ 	aros)
+ 		basic_machine=i386-pc
+-		os=-aros
++				os=aros
+ 		;;
+ 	aux)
+ 		basic_machine=m68k-apple
+-		os=-aux
++				os=aux
+ 		;;
+ 	balance)
+ 		basic_machine=ns32k-sequent
+-		os=-dynix
++				os=dynix
+ 		;;
+ 	blackfin)
+ 		basic_machine=bfin-unknown
+-		os=-linux
+-		;;
+-	blackfin-*)
+-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		os=-linux
+-		;;
+-	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
++				os=linux
+ 		;;
+ 	cegcc)
+ 		basic_machine=arm-unknown
+-		os=-cegcc
++				os=cegcc
+ 		;;
+ 	convex-c1)
+ 		basic_machine=c1-convex
+-		os=-bsd
++				os=bsd
+ 		;;
+ 	convex-c2)
+ 		basic_machine=c2-convex
+-		os=-bsd
++				os=bsd
+ 		;;
+ 	convex-c32)
+ 		basic_machine=c32-convex
+-		os=-bsd
++				os=bsd
+ 		;;
+ 	convex-c34)
+ 		basic_machine=c34-convex
+-		os=-bsd
++				os=bsd
+ 		;;
+ 	convex-c38)
+ 		basic_machine=c38-convex
+-		os=-bsd
++				os=bsd
+ 		;;
+-	cray | j90)
++			cray)
+ 		basic_machine=j90-cray
+-		os=-unicos
+-		;;
+-	craynv)
+-		basic_machine=craynv-cray
+-		os=-unicosmp
+-		;;
+-	cr16 | cr16-*)
+-		basic_machine=cr16-unknown
+-		os=-elf
++				os=unicos
+ 		;;
+ 	crds | unos)
+ 		basic_machine=m68k-crds
++				os=
+ 		;;
+-	crisv32 | crisv32-* | etraxfs*)
+-		basic_machine=crisv32-axis
+-		;;
+-	cris | cris-* | etrax*)
+-		basic_machine=cris-axis
+-		;;
+-	crx)
+-		basic_machine=crx-unknown
+-		os=-elf
+-		;;
+-	da30 | da30-*)
++			da30)
+ 		basic_machine=m68k-da30
++				os=
+ 		;;
+-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
++			decstation | pmax | pmin | dec3100 | decstatn)
+ 		basic_machine=mips-dec
+-		;;
+-	decsystem10* | dec10*)
+-		basic_machine=pdp10-dec
+-		os=-tops10
+-		;;
+-	decsystem20* | dec20*)
+-		basic_machine=pdp10-dec
+-		os=-tops20
+-		;;
+-	delta | 3300 | motorola-3300 | motorola-delta \
+-	      | 3300-motorola | delta-motorola)
+-		basic_machine=m68k-motorola
++				os=
+ 		;;
+ 	delta88)
+ 		basic_machine=m88k-motorola
+-		os=-sysv3
++				os=sysv3
+ 		;;
+ 	dicos)
+ 		basic_machine=i686-pc
+-		os=-dicos
++				os=dicos
+ 		;;
+ 	djgpp)
+ 		basic_machine=i586-pc
+-		os=-msdosdjgpp
+-		;;
+-	dpx20 | dpx20-*)
+-		basic_machine=rs6000-bull
+-		os=-bosx
+-		;;
+-	dpx2* | dpx2*-bull)
+-		basic_machine=m68k-bull
+-		os=-sysv3
++				os=msdosdjgpp
+ 		;;
+ 	ebmon29k)
+ 		basic_machine=a29k-amd
+-		os=-ebmon
+-		;;
+-	elxsi)
+-		basic_machine=elxsi-elxsi
+-		os=-bsd
+-		;;
+-	encore | umax | mmax)
+-		basic_machine=ns32k-encore
++				os=ebmon
+ 		;;
+ 	es1800 | OSE68k | ose68k | ose | OSE)
+ 		basic_machine=m68k-ericsson
+-		os=-ose
+-		;;
+-	fx2800)
+-		basic_machine=i860-alliant
+-		;;
+-	genix)
+-		basic_machine=ns32k-ns
++				os=ose
+ 		;;
+ 	gmicro)
+ 		basic_machine=tron-gmicro
+-		os=-sysv
++				os=sysv
+ 		;;
+ 	go32)
+ 		basic_machine=i386-pc
+-		os=-go32
+-		;;
+-	h3050r* | hiux*)
+-		basic_machine=hppa1.1-hitachi
+-		os=-hiuxwe2
++				os=go32
+ 		;;
+ 	h8300hms)
+ 		basic_machine=h8300-hitachi
+-		os=-hms
++				os=hms
+ 		;;
+ 	h8300xray)
+ 		basic_machine=h8300-hitachi
+-		os=-xray
++				os=xray
+ 		;;
+ 	h8500hms)
+ 		basic_machine=h8500-hitachi
+-		os=-hms
++				os=hms
+ 		;;
+ 	harris)
+ 		basic_machine=m88k-harris
+-		os=-sysv3
++				os=sysv3
+ 		;;
+-	hp300-*)
++			hp300 | hp300hpux)
+ 		basic_machine=m68k-hp
++				os=hpux
+ 		;;
+ 	hp300bsd)
+ 		basic_machine=m68k-hp
+-		os=-bsd
+-		;;
+-	hp300hpux)
+-		basic_machine=m68k-hp
+-		os=-hpux
+-		;;
+-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+-		basic_machine=hppa1.0-hp
+-		;;
+-	hp9k2[0-9][0-9] | hp9k31[0-9])
+-		basic_machine=m68000-hp
+-		;;
+-	hp9k3[2-9][0-9])
+-		basic_machine=m68k-hp
+-		;;
+-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+-		basic_machine=hppa1.0-hp
+-		;;
+-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+-		basic_machine=hppa1.1-hp
+-		;;
+-	hp9k78[0-9] | hp78[0-9])
+-		# FIXME: really hppa2.0-hp
+-		basic_machine=hppa1.1-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
+-		;;
+-	hp9k8[0-9][13679] | hp8[0-9][13679])
+-		basic_machine=hppa1.1-hp
+-		;;
+-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+-		basic_machine=hppa1.0-hp
+-		;;
+-	hppa-next)
+-		os=-nextstep3
++				os=bsd
+ 		;;
+ 	hppaosf)
+ 		basic_machine=hppa1.1-hp
+-		os=-osf
++				os=osf
+ 		;;
+ 	hppro)
+ 		basic_machine=hppa1.1-hp
+-		os=-proelf
+-		;;
+-	i370-ibm* | ibm*)
+-		basic_machine=i370-ibm
+-		;;
+-	i*86v32)
+-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+-		os=-sysv32
+-		;;
+-	i*86v4*)
+-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+-		os=-sysv4
+-		;;
+-	i*86v)
+-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+-		os=-sysv
+-		;;
+-	i*86sol2)
+-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+-		os=-solaris2
++				os=proelf
+ 		;;
+ 	i386mach)
+ 		basic_machine=i386-mach
+-		os=-mach
+-		;;
+-	i386-vsta | vsta)
+-		basic_machine=i386-unknown
+-		os=-vsta
+-		;;
+-	iris | iris4d)
+-		basic_machine=mips-sgi
+-		case $os in
+-		    -irix*)
+-			;;
+-		    *)
+-			os=-irix4
+-			;;
+-		esac
++				os=mach
+ 		;;
+ 	isi68 | isi)
+ 		basic_machine=m68k-isi
+-		os=-sysv
++				os=sysv
+ 		;;
+ 	m68knommu)
+ 		basic_machine=m68k-unknown
+-		os=-linux
+-		;;
+-	m68knommu-*)
+-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		os=-linux
+-		;;
+-	m88k-omron*)
+-		basic_machine=m88k-omron
++				os=linux
+ 		;;
+ 	magnum | m3230)
+ 		basic_machine=mips-mips
+-		os=-sysv
++				os=sysv
+ 		;;
+ 	merlin)
+ 		basic_machine=ns32k-utek
+-		os=-sysv
+-		;;
+-	microblaze*)
+-		basic_machine=microblaze-xilinx
++				os=sysv
+ 		;;
+ 	mingw64)
+ 		basic_machine=x86_64-pc
+-		os=-mingw64
++				os=mingw64
+ 		;;
+ 	mingw32)
+-		basic_machine=i386-pc
+-		os=-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
++				os=mingw32ce
+ 		;;
+ 	monitor)
+ 		basic_machine=m68k-rom68k
+-		os=-coff
++				os=coff
+ 		;;
+ 	morphos)
+ 		basic_machine=powerpc-unknown
+-		os=-morphos
++				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-/'`
++				os=msdos
+ 		;;
+ 	msys)
+-		basic_machine=i386-pc
+-		os=-msys
++				basic_machine=i686-pc
++				os=msys
+ 		;;
+ 	mvs)
+ 		basic_machine=i370-ibm
+-		os=-mvs
++				os=mvs
+ 		;;
+ 	nacl)
+ 		basic_machine=le32-unknown
+-		os=-nacl
++				os=nacl
+ 		;;
+ 	ncr3000)
+ 		basic_machine=i486-ncr
+-		os=-sysv4
++				os=sysv4
+ 		;;
+ 	netbsd386)
+-		basic_machine=i386-unknown
+-		os=-netbsd
++				basic_machine=i386-pc
++				os=netbsd
+ 		;;
+ 	netwinder)
+ 		basic_machine=armv4l-rebel
+-		os=-linux
++				os=linux
+ 		;;
+ 	news | news700 | news800 | news900)
+ 		basic_machine=m68k-sony
+-		os=-newsos
++				os=newsos
+ 		;;
+ 	news1000)
+ 		basic_machine=m68030-sony
+-		os=-newsos
+-		;;
+-	news-3600 | risc-news)
+-		basic_machine=mips-sony
+-		os=-newsos
++				os=newsos
+ 		;;
+ 	necv70)
+ 		basic_machine=v70-nec
+-		os=-sysv
+-		;;
+-	next | m*-next )
+-		basic_machine=m68k-next
+-		case $os in
+-		    -nextstep* )
+-			;;
+-		    -ns2*)
+-		      os=-nextstep2
+-			;;
+-		    *)
+-		      os=-nextstep3
+-			;;
+-		esac
++				os=sysv
+ 		;;
+ 	nh3000)
+ 		basic_machine=m68k-harris
+-		os=-cxux
++				os=cxux
+ 		;;
+ 	nh[45]000)
+ 		basic_machine=m88k-harris
+-		os=-cxux
++				os=cxux
+ 		;;
+ 	nindy960)
+ 		basic_machine=i960-intel
+-		os=-nindy
++				os=nindy
+ 		;;
+ 	mon960)
+ 		basic_machine=i960-intel
+-		os=-mon960
++				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
+-		;;
+-	op50n-* | op60c-*)
+-		basic_machine=hppa1.1-oki
+-		os=-proelf
+-		;;
+-	openrisc | openrisc-*)
+-		basic_machine=or32-unknown
++				os=nonstopux
+ 		;;
+ 	os400)
+ 		basic_machine=powerpc-ibm
+-		os=-os400
++				os=os400
+ 		;;
+ 	OSE68000 | ose68000)
+ 		basic_machine=m68000-ericsson
+-		os=-ose
++				os=ose
+ 		;;
+ 	os68k)
+ 		basic_machine=m68k-none
+-		os=-os68k
+-		;;
+-	pa-hitachi)
+-		basic_machine=hppa1.1-hitachi
+-		os=-hiuxwe2
++				os=os68k
+ 		;;
+ 	paragon)
+ 		basic_machine=i860-intel
+-		os=-osf
++				os=osf
+ 		;;
+ 	parisc)
+ 		basic_machine=hppa-unknown
+-		os=-linux
+-		;;
+-	parisc-*)
+-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		os=-linux
+-		;;
+-	pbd)
+-		basic_machine=sparc-tti
+-		;;
+-	pbb)
+-		basic_machine=m68k-tti
+-		;;
+-	pc532 | pc532-*)
+-		basic_machine=ns32k-pc532
+-		;;
+-	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/^[^-]*-//'`
+-		;;
+-	pn)
+-		basic_machine=pn-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-* | ppc64p7-*) 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/^[^-]*-//'`
+-		;;
+-	ps2)
+-		basic_machine=i386-ibm
++				os=linux
+ 		;;
+ 	pw32)
+ 		basic_machine=i586-unknown
+-		os=-pw32
++				os=pw32
+ 		;;
+ 	rdos | rdos64)
+ 		basic_machine=x86_64-pc
+-		os=-rdos
++				os=rdos
+ 		;;
+ 	rdos32)
+ 		basic_machine=i386-pc
+-		os=-rdos
++				os=rdos
+ 		;;
+ 	rom68k)
+ 		basic_machine=m68k-rom68k
+-		os=-coff
+-		;;
+-	rm[46]00)
+-		basic_machine=mips-siemens
+-		;;
+-	rtpc | rtpc-*)
+-		basic_machine=romp-ibm
+-		;;
+-	s390 | s390-*)
+-		basic_machine=s390-ibm
+-		;;
+-	s390x | s390x-*)
+-		basic_machine=s390x-ibm
++				os=coff
+ 		;;
+ 	sa29200)
+ 		basic_machine=a29k-amd
+-		os=-udi
+-		;;
+-	sb1)
+-		basic_machine=mipsisa64sb1-unknown
+-		;;
+-	sb1el)
+-		basic_machine=mipsisa64sb1el-unknown
+-		;;
+-	sde)
+-		basic_machine=mipsisa32-sde
+-		os=-elf
++				os=udi
+ 		;;
+ 	sei)
+ 		basic_machine=mips-sei
+-		os=-seiux
++				os=seiux
+ 		;;
+ 	sequent)
+ 		basic_machine=i386-sequent
+-		;;
+-	sh)
+-		basic_machine=sh-hitachi
+-		os=-hms
+-		;;
+-	sh5el)
+-		basic_machine=sh5le-unknown
+-		;;
+-	sh64)
+-		basic_machine=sh64-unknown
+-		;;
+-	sparclite-wrs | simso-wrs)
+-		basic_machine=sparclite-wrs
+-		os=-vxworks
++				os=
+ 		;;
+ 	sps7)
+ 		basic_machine=m68k-bull
+-		os=-sysv2
+-		;;
+-	spur)
+-		basic_machine=spur-unknown
++				os=sysv2
+ 		;;
+ 	st2000)
+ 		basic_machine=m68k-tandem
++				os=
+ 		;;
+ 	stratus)
+ 		basic_machine=i860-stratus
+-		os=-sysv4
+-		;;
+-	strongarm-* | thumb-*)
+-		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
++				os=sysv4
+ 		;;
+ 	sun2)
+ 		basic_machine=m68000-sun
++				os=
+ 		;;
+ 	sun2os3)
+ 		basic_machine=m68000-sun
+-		os=-sunos3
++				os=sunos3
+ 		;;
+ 	sun2os4)
+ 		basic_machine=m68000-sun
+-		os=-sunos4
++				os=sunos4
++				;;
++			sun3)
++				basic_machine=m68k-sun
++				os=
+ 		;;
+ 	sun3os3)
+ 		basic_machine=m68k-sun
+-		os=-sunos3
++				os=sunos3
+ 		;;
+ 	sun3os4)
+ 		basic_machine=m68k-sun
+-		os=-sunos4
++				os=sunos4
++				;;
++			sun4)
++				basic_machine=sparc-sun
++				os=
+ 		;;
+ 	sun4os3)
+ 		basic_machine=sparc-sun
+-		os=-sunos3
++				os=sunos3
+ 		;;
+ 	sun4os4)
+ 		basic_machine=sparc-sun
+-		os=-sunos4
++				os=sunos4
+ 		;;
+ 	sun4sol2)
+ 		basic_machine=sparc-sun
+-		os=-solaris2
+-		;;
+-	sun3 | sun3-*)
+-		basic_machine=m68k-sun
+-		;;
+-	sun4)
+-		basic_machine=sparc-sun
++				os=solaris2
+ 		;;
+ 	sun386 | sun386i | roadrunner)
+ 		basic_machine=i386-sun
++				os=
+ 		;;
+ 	sv1)
+ 		basic_machine=sv1-cray
+-		os=-unicos
++				os=unicos
+ 		;;
+ 	symmetry)
+ 		basic_machine=i386-sequent
+-		os=-dynix
++				os=dynix
+ 		;;
+ 	t3e)
+ 		basic_machine=alphaev5-cray
+-		os=-unicos
++				os=unicos
+ 		;;
+ 	t90)
+ 		basic_machine=t90-cray
+-		os=-unicos
+-		;;
+-	tile*)
+-		basic_machine=$basic_machine-unknown
+-		os=-linux-gnu
+-		;;
+-	tx39)
+-		basic_machine=mipstx39-unknown
+-		;;
+-	tx39el)
+-		basic_machine=mipstx39el-unknown
++				os=unicos
+ 		;;
+ 	toad1)
+ 		basic_machine=pdp10-xkl
+-		os=-tops20
+-		;;
+-	tower | tower-32)
+-		basic_machine=m68k-ncr
++				os=tops20
+ 		;;
+ 	tpf)
+ 		basic_machine=s390x-ibm
+-		os=-tpf
++				os=tpf
+ 		;;
+ 	udi29k)
+ 		basic_machine=a29k-amd
+-		os=-udi
++				os=udi
+ 		;;
+ 	ultra3)
+ 		basic_machine=a29k-nyu
+-		os=-sym1
++				os=sym1
+ 		;;
+ 	v810 | necv810)
+ 		basic_machine=v810-nec
+-		os=-none
++				os=none
+ 		;;
+ 	vaxv)
+ 		basic_machine=vax-dec
+-		os=-sysv
++				os=sysv
+ 		;;
+ 	vms)
+ 		basic_machine=vax-dec
+-		os=-vms
++				os=vms
+ 		;;
+-	vpp*|vx|vx-*)
+-		basic_machine=f301-fujitsu
++			vsta)
++				basic_machine=i386-pc
++				os=vsta
+ 		;;
+ 	vxworks960)
+ 		basic_machine=i960-wrs
+-		os=-vxworks
++				os=vxworks
+ 		;;
+ 	vxworks68)
+ 		basic_machine=m68k-wrs
+-		os=-vxworks
++				os=vxworks
+ 		;;
+ 	vxworks29k)
+ 		basic_machine=a29k-wrs
+-		os=-vxworks
+-		;;
+-	w65*)
+-		basic_machine=w65-wdc
+-		os=-none
+-		;;
+-	w89k-*)
+-		basic_machine=hppa1.1-winbond
+-		os=-proelf
++				os=vxworks
+ 		;;
+ 	xbox)
+ 		basic_machine=i686-pc
+-		os=-mingw32
+-		;;
+-	xps | xps100)
+-		basic_machine=xps100-honeywell
+-		;;
+-	xscale-* | xscalee[bl]-*)
+-		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
++				os=mingw32
+ 		;;
+ 	ymp)
+ 		basic_machine=ymp-cray
+-		os=-unicos
++				os=unicos
+ 		;;
+-	z8k-*-coff)
+-		basic_machine=z8k-unknown
+-		os=-sim
+-		;;
+-	z80-*-coff)
+-		basic_machine=z80-unknown
+-		os=-sim
++			*)
++				basic_machine=$1
++				os=
+ 		;;
+-	none)
+-		basic_machine=none-none
+-		os=-none
++		esac
+ 		;;
++esac
+ 
++# Decode 1-component or ad-hoc basic machines
++case $basic_machine in
+ # 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
++		cpu=hppa1.1
++		vendor=winbond
+ 		;;
+ 	op50n)
+-		basic_machine=hppa1.1-oki
++		cpu=hppa1.1
++		vendor=oki
+ 		;;
+ 	op60c)
+-		basic_machine=hppa1.1-oki
++		cpu=hppa1.1
++		vendor=oki
+ 		;;
+-	romp)
+-		basic_machine=romp-ibm
++	ibm*)
++		cpu=i370
++		vendor=ibm
+ 		;;
+-	mmix)
+-		basic_machine=mmix-knuth
++	orion105)
++		cpu=clipper
++		vendor=highlevel
+ 		;;
+-	rs6000)
+-		basic_machine=rs6000-ibm
++	mac | mpw | mac-mpw)
++		cpu=m68k
++		vendor=apple
+ 		;;
+-	vax)
+-		basic_machine=vax-dec
++	pmac | pmac-mpw)
++		cpu=powerpc
++		vendor=apple
+ 		;;
+-	pdp10)
+-		# there are many clones, so DEC is not a safe bet
+-		basic_machine=pdp10-unknown
++
++	# Recognize the various machine names and aliases which stand
++	# for a CPU type and a company and sometimes even an OS.
++	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
++		cpu=m68000
++		vendor=att
+ 		;;
+-	pdp11)
+-		basic_machine=pdp11-dec
++	3b*)
++		cpu=we32k
++		vendor=att
+ 		;;
+-	we32k)
+-		basic_machine=we32k-att
++	bluegene*)
++		cpu=powerpc
++		vendor=ibm
++		os=cnk
+ 		;;
+-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+-		basic_machine=sh-unknown
++	decsystem10* | dec10*)
++		cpu=pdp10
++		vendor=dec
++		os=tops10
+ 		;;
+-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+-		basic_machine=sparc-sun
++	decsystem20* | dec20*)
++		cpu=pdp10
++		vendor=dec
++		os=tops20
+ 		;;
+-	cydra)
+-		basic_machine=cydra-cydrome
++	delta | 3300 | motorola-3300 | motorola-delta \
++	      | 3300-motorola | delta-motorola)
++		cpu=m68k
++		vendor=motorola
+ 		;;
+-	orion)
+-		basic_machine=orion-highlevel
++	dpx2*)
++		cpu=m68k
++		vendor=bull
++		os=sysv3
+ 		;;
+-	orion105)
+-		basic_machine=clipper-highlevel
++	encore | umax | mmax)
++		cpu=ns32k
++		vendor=encore
+ 		;;
+-	mac | mpw | mac-mpw)
+-		basic_machine=m68k-apple
++	elxsi)
++		cpu=elxsi
++		vendor=elxsi
++		os=${os:-bsd}
+ 		;;
+-	pmac | pmac-mpw)
+-		basic_machine=powerpc-apple
++	fx2800)
++		cpu=i860
++		vendor=alliant
++		;;
++	genix)
++		cpu=ns32k
++		vendor=ns
++		;;
++	h3050r* | hiux*)
++		cpu=hppa1.1
++		vendor=hitachi
++		os=hiuxwe2
++		;;
++	hp3k9[0-9][0-9] | hp9[0-9][0-9])
++		cpu=hppa1.0
++		vendor=hp
++		;;
++	hp9k2[0-9][0-9] | hp9k31[0-9])
++		cpu=m68000
++		vendor=hp
++		;;
++	hp9k3[2-9][0-9])
++		cpu=m68k
++		vendor=hp
++		;;
++	hp9k6[0-9][0-9] | hp6[0-9][0-9])
++		cpu=hppa1.0
++		vendor=hp
++		;;
++	hp9k7[0-79][0-9] | hp7[0-79][0-9])
++		cpu=hppa1.1
++		vendor=hp
++		;;
++	hp9k78[0-9] | hp78[0-9])
++		# FIXME: really hppa2.0-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
++		cpu=hppa1.1
++		vendor=hp
++		;;
++	hp9k8[0-9][13679] | hp8[0-9][13679])
++		cpu=hppa1.1
++		vendor=hp
++		;;
++	hp9k8[0-9][0-9] | hp8[0-9][0-9])
++		cpu=hppa1.0
++		vendor=hp
++		;;
++	i*86v32)
++		cpu=`echo "$1" | sed -e 's/86.*/86/'`
++		vendor=pc
++		os=sysv32
++		;;
++	i*86v4*)
++		cpu=`echo "$1" | sed -e 's/86.*/86/'`
++		vendor=pc
++		os=sysv4
++		;;
++	i*86v)
++		cpu=`echo "$1" | sed -e 's/86.*/86/'`
++		vendor=pc
++		os=sysv
++		;;
++	i*86sol2)
++		cpu=`echo "$1" | sed -e 's/86.*/86/'`
++		vendor=pc
++		os=solaris2
++		;;
++	j90 | j90-cray)
++		cpu=j90
++		vendor=cray
++		os=${os:-unicos}
++		;;
++	iris | iris4d)
++		cpu=mips
++		vendor=sgi
++		case $os in
++		    irix*)
++			;;
++		    *)
++			os=irix4
++			;;
++		esac
++		;;
++	miniframe)
++		cpu=m68000
++		vendor=convergent
++		;;
++	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
++		cpu=m68k
++		vendor=atari
++		os=mint
++		;;
++	news-3600 | risc-news)
++		cpu=mips
++		vendor=sony
++		os=newsos
++		;;
++	next | m*-next)
++		cpu=m68k
++		vendor=next
++		case $os in
++		    openstep*)
++		        ;;
++		    nextstep*)
++			;;
++		    ns2*)
++		      os=nextstep2
++			;;
++		    *)
++		      os=nextstep3
++			;;
++		esac
++		;;
++	np1)
++		cpu=np1
++		vendor=gould
++		;;
++	op50n-* | op60c-*)
++		cpu=hppa1.1
++		vendor=oki
++		os=proelf
++		;;
++	pa-hitachi)
++		cpu=hppa1.1
++		vendor=hitachi
++		os=hiuxwe2
++		;;
++	pbd)
++		cpu=sparc
++		vendor=tti
++		;;
++	pbb)
++		cpu=m68k
++		vendor=tti
++		;;
++	pc532)
++		cpu=ns32k
++		vendor=pc532
++		;;
++	pn)
++		cpu=pn
++		vendor=gould
++		;;
++	power)
++		cpu=power
++		vendor=ibm
++		;;
++	ps2)
++		cpu=i386
++		vendor=ibm
++		;;
++	rm[46]00)
++		cpu=mips
++		vendor=siemens
++		;;
++	rtpc | rtpc-*)
++		cpu=romp
++		vendor=ibm
++		;;
++	sde)
++		cpu=mipsisa32
++		vendor=sde
++		os=${os:-elf}
++		;;
++	simso-wrs)
++		cpu=sparclite
++		vendor=wrs
++		os=vxworks
++		;;
++	tower | tower-32)
++		cpu=m68k
++		vendor=ncr
++		;;
++	vpp*|vx|vx-*)
++		cpu=f301
++		vendor=fujitsu
++		;;
++	w65)
++		cpu=w65
++		vendor=wdc
++		;;
++	w89k-*)
++		cpu=hppa1.1
++		vendor=winbond
++		os=proelf
++		;;
++	none)
++		cpu=none
++		vendor=none
++		;;
++	leon|leon[3-9])
++		cpu=sparc
++		vendor=$basic_machine
++		;;
++	leon-*|leon[3-9]-*)
++		cpu=sparc
++		vendor=`echo "$basic_machine" | sed 's/-.*//'`
++		;;
++
++	*-*)
++		# shellcheck disable=SC2162
++		IFS="-" read cpu vendor <<EOF
++$basic_machine
++EOF
++		;;
++	# 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
++		;;
++	# 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
++		;;
++	x64 | amd64)
++		cpu=x86_64
++		vendor=pc
++		;;
++	# Recognize the basic CPU types without company name.
++	*)
++		cpu=$basic_machine
++		vendor=unknown
++		;;
++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}
++		;;
++	c90-unknown | c90-cray)
++		vendor=cray
++		os=${os:-unicos}
++		;;
++	fx80-unknown)
++		vendor=alliant
++		;;
++	romp-unknown)
++		vendor=ibm
++		;;
++	mmix-unknown)
++		vendor=knuth
++		;;
++	microblaze-unknown | microblazeel-unknown)
++		vendor=xilinx
+ 		;;
+-	*-unknown)
+-		# Make sure to match an already-canonicalized machine name.
++	rs6000-unknown)
++		vendor=ibm
++		;;
++	vax-unknown)
++		vendor=dec
++		;;
++	pdp11-unknown)
++		vendor=dec
++		;;
++	we32k-unknown)
++		vendor=att
++		;;
++	cydra-unknown)
++		vendor=cydrome
++		;;
++	i370-ibm*)
++		vendor=ibm
++		;;
++	orion-unknown)
++		vendor=highlevel
++		;;
++	xps-unknown | xps100-unknown)
++		cpu=xps100
++		vendor=honeywell
++		;;
++
++	# Here we normalize CPU types with a missing or matching vendor
++	dpx20-unknown | dpx20-bull)
++		cpu=rs6000
++		vendor=bull
++		os=${os:-bosx}
++		;;
++
++	# Here we normalize CPU types irrespective of the vendor
++	amd64-*)
++		cpu=x86_64
++		;;
++	blackfin-*)
++		cpu=bfin
++		os=linux
++		;;
++	c54x-*)
++		cpu=tic54x
++		;;
++	c55x-*)
++		cpu=tic55x
++		;;
++	c6x-*)
++		cpu=tic6x
++		;;
++	e500v[12]-*)
++		cpu=powerpc
++		os=$os"spe"
++		;;
++	mips3*-*)
++		cpu=mips64
++		;;
++	ms1-*)
++		cpu=mt
++		;;
++	m68knommu-*)
++		cpu=m68k
++		os=linux
++		;;
++	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
++		cpu=s12z
++		;;
++	openrisc-*)
++		cpu=or32
++		;;
++	parisc-*)
++		cpu=hppa
++		os=linux
++		;;
++	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
++		cpu=i586
++		;;
++	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
++		cpu=i686
++		;;
++	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
++		cpu=i686
++		;;
++	pentium4-*)
++		cpu=i786
++		;;
++	pc98-*)
++		cpu=i386
+ 		;;
++	ppc-* | ppcbe-*)
++		cpu=powerpc
++		;;
++	ppcle-* | powerpclittle-*)
++		cpu=powerpcle
++		;;
++	ppc64-*)
++		cpu=powerpc64
++		;;
++	ppc64le-* | powerpc64little-*)
++		cpu=powerpc64le
++		;;
++	sb1-*)
++		cpu=mipsisa64sb1
++		;;
++	sb1el-*)
++		cpu=mipsisa64sb1el
++		;;
++	sh5e[lb]-*)
++		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
++		;;
++	spur-*)
++		cpu=spur
++		;;
++	strongarm-* | thumb-*)
++		cpu=arm
++		;;
++	tx39-*)
++		cpu=mipstx39
++		;;
++	tx39el-*)
++		cpu=mipstx39el
++		;;
++	x64-*)
++		cpu=x86_64
++		;;
++	xscale-* | xscalee[bl]-*)
++		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
++		;;
++
++	# Recognize the canonical CPU Types that limit and/or modify the
++	# company names they are paired with.
++	cr16-*)
++		os=${os:-elf}
++		;;
++	crisv32-* | etraxfs*-*)
++		cpu=crisv32
++		vendor=axis
++		;;
++	cris-* | etrax*-*)
++		cpu=cris
++		vendor=axis
++		;;
++	crx-*)
++		os=${os:-elf}
++		;;
++	neo-tandem)
++		cpu=neo
++		vendor=tandem
++		;;
++	nse-tandem)
++		cpu=nse
++		vendor=tandem
++		;;
++	nsr-tandem)
++		cpu=nsr
++		vendor=tandem
++		;;
++	nsv-tandem)
++		cpu=nsv
++		vendor=tandem
++		;;
++	nsx-tandem)
++		cpu=nsx
++		vendor=tandem
++		;;
++	s390-*)
++		cpu=s390
++		vendor=ibm
++		;;
++	s390x-*)
++		cpu=s390x
++		vendor=ibm
++		;;
++	tile*-*)
++		os=${os:-linux-gnu}
++		;;
++
+ 	*)
+-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
++		# 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
+ 		;;
+ 	*)
+ 		;;
+@@ -1321,197 +1275,244 @@
+ 
+ # 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* \
+-	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+-	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+-	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+-	      | -bitrig* | -openbsd* | -solidbsd* \
+-	      | -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* \
+-	      | -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*)
++	# 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* | twizzler* \
++	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
++	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
++	     | knetbsd* | mirbsd* | netbsd* \
++	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
++	     | 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* \
++	     | nsk* | powerunix* | genode*)
+ 	# 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
++		;;
++	lynx*5)
++		os=lynxos5
+ 		;;
+-	-sunos6*)
+-		os=`echo $os | sed -e 's|sunos6|solaris3|'`
++	lynx*)
++		os=lynxos
+ 		;;
+-	-opened*)
+-		os=-openedition
++	mac*)
++		os=`echo "$os" | sed -e 's|mac|macos|'`
+ 		;;
+-	-os400*)
+-		os=-os400
++	opened*)
++		os=openedition
+ 		;;
+-	-wince*)
+-		os=-wince
++	os400*)
++		os=os400
+ 		;;
+-	-osfrose*)
+-		os=-osfrose
++	sunos5*)
++		os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+ 		;;
+-	-osf*)
+-		os=-osf
++	sunos6*)
++		os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+ 		;;
+-	-utek*)
+-		os=-bsd
++	wince*)
++		os=wince
+ 		;;
+-	-dynix*)
+-		os=-bsd
++	utek*)
++		os=bsd
+ 		;;
+-	-acis*)
+-		os=-aos
++	dynix*)
++		os=bsd
+ 		;;
+-	-atheos*)
+-		os=-atheos
++	acis*)
++		os=aos
+ 		;;
+-	-syllable*)
+-		os=-syllable
++	atheos*)
++		os=atheos
+ 		;;
+-	-386bsd)
+-		os=-bsd
++	syllable*)
++		os=syllable
+ 		;;
+-	-ctix* | -uts*)
+-		os=-sysv
++	386bsd)
++		os=bsd
+ 		;;
+-	-nova*)
+-		os=-rtmk-nova
++	ctix* | uts*)
++		os=sysv
+ 		;;
+-	-ns2 )
+-		os=-nextstep2
++	nova*)
++		os=rtmk-nova
+ 		;;
+-	-nsk*)
+-		os=-nsk
++	ns2)
++		os=nextstep2
+ 		;;
+ 	# 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
++		;;
++	triton*)
++		os=sysv3
+ 		;;
+-	-tpf*)
+-		os=-tpf
++	oss*)
++		os=sysv3
+ 		;;
+-	-triton*)
+-		os=-sysv3
++	svr4*)
++		os=sysv4
+ 		;;
+-	-oss*)
+-		os=-sysv3
++	svr3)
++		os=sysv3
+ 		;;
+-	-svr4)
+-		os=-sysv4
++	sysvr4)
++		os=sysv4
+ 		;;
+-	-svr3)
+-		os=-sysv3
++	# This must come after sysvr4.
++	sysv*)
+ 		;;
+-	-sysvr4)
+-		os=-sysv4
++	ose*)
++		os=ose
+ 		;;
+-	# This must come after -sysvr4.
+-	-sysv*)
++	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
++		os=mint
+ 		;;
+-	-ose*)
+-		os=-ose
++	zvmoe)
++		os=zvmoe
+ 		;;
+-	-es1800*)
+-		os=-ose
++	dicos*)
++		os=dicos
+ 		;;
+-	-xenix)
+-		os=-xenix
++	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
+ 		;;
+-	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+-		os=-mint
++		    *)
++			os=elf
+ 		;;
+-	-aros*)
+-		os=-aros
++		esac
+ 		;;
+-	-zvmoe)
+-		os=-zvmoe
++	nacl*)
+ 		;;
+-	-dicos*)
+-		os=-dicos
++	ios)
+ 		;;
+-	-nacl*)
++	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
+@@ -1527,261 +1528,265 @@
+ # 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
++		;;
++	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
+-		;;
+-	or1k-*)
+-		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
++		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: "'"
diff --git a/recipes/libogg/recipe.toml b/recipes/libogg/recipe.toml
new file mode 100644
index 0000000000000000000000000000000000000000..593947f58285e376c576676cad20ebfddb53ba41
--- /dev/null
+++ b/recipes/libogg/recipe.toml
@@ -0,0 +1,9 @@
+[source]
+tar = "http://downloads.xiph.org/releases/ogg/libogg-1.3.3.tar.xz"
+blake3 = "8220c0e4082fa26c07b10bfe31f641d2e33ebe1d1bb0b20221b7016bc8b78a3a"
+patches = [
+    "redox.patch"
+]
+
+[build]
+template = "configure"
diff --git a/recipes/libogg/redox.patch b/recipes/libogg/redox.patch
new file mode 100644
index 0000000000000000000000000000000000000000..c07ab514deef0e5006556fde983cb348cab9ca05
--- /dev/null
+++ b/recipes/libogg/redox.patch
@@ -0,0 +1,2833 @@
+--- source/config.sub	2017-11-07 13:38:55.000000000 -0700
++++ source-new/config.sub	2020-05-20 15:34:35.000000000 -0600
+@@ -1,8 +1,8 @@
+ #! /bin/sh
+ # Configuration validation subroutine script.
+-#   Copyright 1992-2016 Free Software Foundation, Inc.
++#   Copyright 1992-2020 Free Software Foundation, Inc.
+ 
+-timestamp='2016-09-05'
++timestamp='2020-05-04'
+ 
+ # 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 @@
+ # 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 @@
+ # 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 @@
+ 
+ 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 @@
+ version="\
+ GNU config.sub ($timestamp)
+ 
+-Copyright 1992-2016 Free Software Foundation, Inc.
++Copyright 1992-2020 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 @@
+     - )	# 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,1242 +110,1164 @@
+     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/'`
++# Split fields of configuration type
++# shellcheck disable=SC2162
++IFS="-" read field1 field2 field3 field4 <<EOF
++$1
++EOF
++
++# Separate into logical components for further validation
++case $1 in
++	*-*-*-*-*)
++		echo Invalid configuration \`"$1"\': more than four components >&2
++		exit 1
++		;;
++	*-*-*-*)
++		basic_machine=$field1-$field2
++		os=$field3-$field4
++		;;
++	*-*-*)
++		# 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*)
+-    os=-$maybe_os
+-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
++			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)
+-    os=-linux-android
+-    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
++				basic_machine=$field1-unknown
++				os=linux-android
+     ;;
+   *)
+-    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+-    if [ $basic_machine != $1 ]
+-    then os=`echo $1 | sed 's/.*-/-/'`
+-    else os=; fi
++				basic_machine=$field1-$field2
++				os=$field3
+     ;;
+ esac
+-
+-### 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*)
++	*-*)
++		# A lone config we happen to match not fitting any pattern
++		case $field1-$field2 in
++			decstation-3100)
++				basic_machine=mips-dec
+ 		os=
+-		basic_machine=$1
+-		;;
+-	-bluegene*)
+-		os=-cnk
+ 		;;
+-	-sim | -cisco | -oki | -wec | -winbond)
++			*-*)
++				# 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=$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
+-		;;
+-	-ptx*)
+-		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+-		;;
+-	-windowsnt*)
+-		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+-		;;
+-	-psos*)
+-		os=-psos
+-		;;
+-	-mint | -mint[0-9]*)
+-		basic_machine=m68k-atari
+-		os=-mint
++					*)
++						basic_machine=$field1
++						os=$field2
+ 		;;
+ esac
+-
+-# Decode aliases for certain CPU-COMPANY combinations.
+-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
+-		;;
+-	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ 		;;
+-	ms1)
+-		basic_machine=mt-unknown
+-		;;
+-
+-	strongarm | thumb | xscale)
+-		basic_machine=arm-unknown
+-		;;
+-	xgate)
+-		basic_machine=$basic_machine-unknown
+-		os=-none
+-		;;
+-	xscaleeb)
+-		basic_machine=armeb-unknown
+-		;;
+-
+-	xscaleel)
+-		basic_machine=armel-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)
+-	  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
++		esac
+ 		;;
+-	# Recognize the various machine names and aliases which stand
+-	# for a CPU type and a company and sometimes even an OS.
++	*)
++		# Convert single-component short-hands not valid as part of
++		# multi-component configurations.
++		case $field1 in
+ 	386bsd)
+-		basic_machine=i386-unknown
+-		os=-bsd
+-		;;
+-	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+-		basic_machine=m68000-att
+-		;;
+-	3b*)
+-		basic_machine=we32k-att
++				basic_machine=i386-pc
++				os=bsd
+ 		;;
+ 	a29khif)
+ 		basic_machine=a29k-amd
+-		os=-udi
+-		;;
+-	abacus)
+-		basic_machine=abacus-unknown
++				os=udi
+ 		;;
+ 	adobe68k)
+ 		basic_machine=m68010-adobe
+-		os=-scout
++				os=scout
+ 		;;
+-	alliant | fx80)
++			alliant)
+ 		basic_machine=fx80-alliant
++				os=
+ 		;;
+ 	altos | altos3068)
+ 		basic_machine=m68k-altos
++				os=
+ 		;;
+ 	am29k)
+ 		basic_machine=a29k-none
+-		os=-bsd
+-		;;
+-	amd64)
+-		basic_machine=x86_64-pc
+-		;;
+-	amd64-*)
+-		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
++				os=bsd
+ 		;;
+ 	amdahl)
+ 		basic_machine=580-amdahl
+-		os=-sysv
++				os=sysv
+ 		;;
+-	amiga | amiga-*)
++			amiga)
+ 		basic_machine=m68k-unknown
++				os=
+ 		;;
+ 	amigaos | amigados)
+ 		basic_machine=m68k-unknown
+-		os=-amigaos
++				os=amigaos
+ 		;;
+ 	amigaunix | amix)
+ 		basic_machine=m68k-unknown
+-		os=-sysv4
++				os=sysv4
+ 		;;
+ 	apollo68)
+ 		basic_machine=m68k-apollo
+-		os=-sysv
++				os=sysv
+ 		;;
+ 	apollo68bsd)
+ 		basic_machine=m68k-apollo
+-		os=-bsd
++				os=bsd
+ 		;;
+ 	aros)
+ 		basic_machine=i386-pc
+-		os=-aros
+-		;;
+-	asmjs)
+-		basic_machine=asmjs-unknown
++				os=aros
+ 		;;
+ 	aux)
+ 		basic_machine=m68k-apple
+-		os=-aux
++				os=aux
+ 		;;
+ 	balance)
+ 		basic_machine=ns32k-sequent
+-		os=-dynix
++				os=dynix
+ 		;;
+ 	blackfin)
+ 		basic_machine=bfin-unknown
+-		os=-linux
+-		;;
+-	blackfin-*)
+-		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		os=-linux
+-		;;
+-	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
++				os=linux
+ 		;;
+ 	cegcc)
+ 		basic_machine=arm-unknown
+-		os=-cegcc
++				os=cegcc
+ 		;;
+ 	convex-c1)
+ 		basic_machine=c1-convex
+-		os=-bsd
++				os=bsd
+ 		;;
+ 	convex-c2)
+ 		basic_machine=c2-convex
+-		os=-bsd
++				os=bsd
+ 		;;
+ 	convex-c32)
+ 		basic_machine=c32-convex
+-		os=-bsd
++				os=bsd
+ 		;;
+ 	convex-c34)
+ 		basic_machine=c34-convex
+-		os=-bsd
++				os=bsd
+ 		;;
+ 	convex-c38)
+ 		basic_machine=c38-convex
+-		os=-bsd
++				os=bsd
+ 		;;
+-	cray | j90)
++			cray)
+ 		basic_machine=j90-cray
+-		os=-unicos
+-		;;
+-	craynv)
+-		basic_machine=craynv-cray
+-		os=-unicosmp
+-		;;
+-	cr16 | cr16-*)
+-		basic_machine=cr16-unknown
+-		os=-elf
++				os=unicos
+ 		;;
+ 	crds | unos)
+ 		basic_machine=m68k-crds
++				os=
+ 		;;
+-	crisv32 | crisv32-* | etraxfs*)
+-		basic_machine=crisv32-axis
+-		;;
+-	cris | cris-* | etrax*)
+-		basic_machine=cris-axis
+-		;;
+-	crx)
+-		basic_machine=crx-unknown
+-		os=-elf
+-		;;
+-	da30 | da30-*)
++			da30)
+ 		basic_machine=m68k-da30
++				os=
+ 		;;
+-	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
++			decstation | pmax | pmin | dec3100 | decstatn)
+ 		basic_machine=mips-dec
+-		;;
+-	decsystem10* | dec10*)
+-		basic_machine=pdp10-dec
+-		os=-tops10
+-		;;
+-	decsystem20* | dec20*)
+-		basic_machine=pdp10-dec
+-		os=-tops20
+-		;;
+-	delta | 3300 | motorola-3300 | motorola-delta \
+-	      | 3300-motorola | delta-motorola)
+-		basic_machine=m68k-motorola
++				os=
+ 		;;
+ 	delta88)
+ 		basic_machine=m88k-motorola
+-		os=-sysv3
++				os=sysv3
+ 		;;
+ 	dicos)
+ 		basic_machine=i686-pc
+-		os=-dicos
++				os=dicos
+ 		;;
+ 	djgpp)
+ 		basic_machine=i586-pc
+-		os=-msdosdjgpp
+-		;;
+-	dpx20 | dpx20-*)
+-		basic_machine=rs6000-bull
+-		os=-bosx
+-		;;
+-	dpx2* | dpx2*-bull)
+-		basic_machine=m68k-bull
+-		os=-sysv3
+-		;;
+-	e500v[12])
+-		basic_machine=powerpc-unknown
+-		os=$os"spe"
+-		;;
+-	e500v[12]-*)
+-		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		os=$os"spe"
++				os=msdosdjgpp
+ 		;;
+ 	ebmon29k)
+ 		basic_machine=a29k-amd
+-		os=-ebmon
+-		;;
+-	elxsi)
+-		basic_machine=elxsi-elxsi
+-		os=-bsd
+-		;;
+-	encore | umax | mmax)
+-		basic_machine=ns32k-encore
++				os=ebmon
+ 		;;
+ 	es1800 | OSE68k | ose68k | ose | OSE)
+ 		basic_machine=m68k-ericsson
+-		os=-ose
+-		;;
+-	fx2800)
+-		basic_machine=i860-alliant
+-		;;
+-	genix)
+-		basic_machine=ns32k-ns
++				os=ose
+ 		;;
+ 	gmicro)
+ 		basic_machine=tron-gmicro
+-		os=-sysv
++				os=sysv
+ 		;;
+ 	go32)
+ 		basic_machine=i386-pc
+-		os=-go32
+-		;;
+-	h3050r* | hiux*)
+-		basic_machine=hppa1.1-hitachi
+-		os=-hiuxwe2
++				os=go32
+ 		;;
+ 	h8300hms)
+ 		basic_machine=h8300-hitachi
+-		os=-hms
++				os=hms
+ 		;;
+ 	h8300xray)
+ 		basic_machine=h8300-hitachi
+-		os=-xray
++				os=xray
+ 		;;
+ 	h8500hms)
+ 		basic_machine=h8500-hitachi
+-		os=-hms
++				os=hms
+ 		;;
+ 	harris)
+ 		basic_machine=m88k-harris
+-		os=-sysv3
++				os=sysv3
+ 		;;
+-	hp300-*)
++			hp300 | hp300hpux)
+ 		basic_machine=m68k-hp
++				os=hpux
+ 		;;
+ 	hp300bsd)
+ 		basic_machine=m68k-hp
+-		os=-bsd
+-		;;
+-	hp300hpux)
+-		basic_machine=m68k-hp
+-		os=-hpux
+-		;;
+-	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+-		basic_machine=hppa1.0-hp
+-		;;
+-	hp9k2[0-9][0-9] | hp9k31[0-9])
+-		basic_machine=m68000-hp
+-		;;
+-	hp9k3[2-9][0-9])
+-		basic_machine=m68k-hp
+-		;;
+-	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+-		basic_machine=hppa1.0-hp
+-		;;
+-	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+-		basic_machine=hppa1.1-hp
+-		;;
+-	hp9k78[0-9] | hp78[0-9])
+-		# FIXME: really hppa2.0-hp
+-		basic_machine=hppa1.1-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
+-		;;
+-	hp9k8[0-9][13679] | hp8[0-9][13679])
+-		basic_machine=hppa1.1-hp
+-		;;
+-	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+-		basic_machine=hppa1.0-hp
+-		;;
+-	hppa-next)
+-		os=-nextstep3
++				os=bsd
+ 		;;
+ 	hppaosf)
+ 		basic_machine=hppa1.1-hp
+-		os=-osf
++				os=osf
+ 		;;
+ 	hppro)
+ 		basic_machine=hppa1.1-hp
+-		os=-proelf
+-		;;
+-	i370-ibm* | ibm*)
+-		basic_machine=i370-ibm
+-		;;
+-	i*86v32)
+-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+-		os=-sysv32
+-		;;
+-	i*86v4*)
+-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+-		os=-sysv4
+-		;;
+-	i*86v)
+-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+-		os=-sysv
+-		;;
+-	i*86sol2)
+-		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+-		os=-solaris2
++				os=proelf
+ 		;;
+ 	i386mach)
+ 		basic_machine=i386-mach
+-		os=-mach
+-		;;
+-	i386-vsta | vsta)
+-		basic_machine=i386-unknown
+-		os=-vsta
+-		;;
+-	iris | iris4d)
+-		basic_machine=mips-sgi
+-		case $os in
+-		    -irix*)
+-			;;
+-		    *)
+-			os=-irix4
+-			;;
+-		esac
++				os=mach
+ 		;;
+ 	isi68 | isi)
+ 		basic_machine=m68k-isi
+-		os=-sysv
+-		;;
+-	leon-*|leon[3-9]-*)
+-		basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
++				os=sysv
+ 		;;
+ 	m68knommu)
+ 		basic_machine=m68k-unknown
+-		os=-linux
+-		;;
+-	m68knommu-*)
+-		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		os=-linux
+-		;;
+-	m88k-omron*)
+-		basic_machine=m88k-omron
++				os=linux
+ 		;;
+ 	magnum | m3230)
+ 		basic_machine=mips-mips
+-		os=-sysv
++				os=sysv
+ 		;;
+ 	merlin)
+ 		basic_machine=ns32k-utek
+-		os=-sysv
+-		;;
+-	microblaze*)
+-		basic_machine=microblaze-xilinx
++				os=sysv
+ 		;;
+ 	mingw64)
+ 		basic_machine=x86_64-pc
+-		os=-mingw64
++				os=mingw64
+ 		;;
+ 	mingw32)
+ 		basic_machine=i686-pc
+-		os=-mingw32
++				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
++				os=mingw32ce
+ 		;;
+ 	monitor)
+ 		basic_machine=m68k-rom68k
+-		os=-coff
++				os=coff
+ 		;;
+ 	morphos)
+ 		basic_machine=powerpc-unknown
+-		os=-morphos
++				os=morphos
+ 		;;
+ 	moxiebox)
+ 		basic_machine=moxie-unknown
+-		os=-moxiebox
++				os=moxiebox
+ 		;;
+ 	msdos)
+ 		basic_machine=i386-pc
+-		os=-msdos
+-		;;
+-	ms1-*)
+-		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
++				os=msdos
+ 		;;
+ 	msys)
+ 		basic_machine=i686-pc
+-		os=-msys
++				os=msys
+ 		;;
+ 	mvs)
+ 		basic_machine=i370-ibm
+-		os=-mvs
++				os=mvs
+ 		;;
+ 	nacl)
+ 		basic_machine=le32-unknown
+-		os=-nacl
++				os=nacl
+ 		;;
+ 	ncr3000)
+ 		basic_machine=i486-ncr
+-		os=-sysv4
++				os=sysv4
+ 		;;
+ 	netbsd386)
+-		basic_machine=i386-unknown
+-		os=-netbsd
++				basic_machine=i386-pc
++				os=netbsd
+ 		;;
+ 	netwinder)
+ 		basic_machine=armv4l-rebel
+-		os=-linux
++				os=linux
+ 		;;
+ 	news | news700 | news800 | news900)
+ 		basic_machine=m68k-sony
+-		os=-newsos
++				os=newsos
+ 		;;
+ 	news1000)
+ 		basic_machine=m68030-sony
+-		os=-newsos
+-		;;
+-	news-3600 | risc-news)
+-		basic_machine=mips-sony
+-		os=-newsos
++				os=newsos
+ 		;;
+ 	necv70)
+ 		basic_machine=v70-nec
+-		os=-sysv
+-		;;
+-	next | m*-next )
+-		basic_machine=m68k-next
+-		case $os in
+-		    -nextstep* )
+-			;;
+-		    -ns2*)
+-		      os=-nextstep2
+-			;;
+-		    *)
+-		      os=-nextstep3
+-			;;
+-		esac
++				os=sysv
+ 		;;
+ 	nh3000)
+ 		basic_machine=m68k-harris
+-		os=-cxux
++				os=cxux
+ 		;;
+ 	nh[45]000)
+ 		basic_machine=m88k-harris
+-		os=-cxux
++				os=cxux
+ 		;;
+ 	nindy960)
+ 		basic_machine=i960-intel
+-		os=-nindy
++				os=nindy
+ 		;;
+ 	mon960)
+ 		basic_machine=i960-intel
+-		os=-mon960
++				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
+-		;;
+-	op50n-* | op60c-*)
+-		basic_machine=hppa1.1-oki
+-		os=-proelf
+-		;;
+-	openrisc | openrisc-*)
+-		basic_machine=or32-unknown
++				os=nonstopux
+ 		;;
+ 	os400)
+ 		basic_machine=powerpc-ibm
+-		os=-os400
++				os=os400
+ 		;;
+ 	OSE68000 | ose68000)
+ 		basic_machine=m68000-ericsson
+-		os=-ose
++				os=ose
+ 		;;
+ 	os68k)
+ 		basic_machine=m68k-none
+-		os=-os68k
+-		;;
+-	pa-hitachi)
+-		basic_machine=hppa1.1-hitachi
+-		os=-hiuxwe2
++				os=os68k
+ 		;;
+ 	paragon)
+ 		basic_machine=i860-intel
+-		os=-osf
++				os=osf
+ 		;;
+ 	parisc)
+ 		basic_machine=hppa-unknown
+-		os=-linux
+-		;;
+-	parisc-*)
+-		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		os=-linux
+-		;;
+-	pbd)
+-		basic_machine=sparc-tti
+-		;;
+-	pbb)
+-		basic_machine=m68k-tti
+-		;;
+-	pc532 | pc532-*)
+-		basic_machine=ns32k-pc532
+-		;;
+-	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/^[^-]*-//'`
+-		;;
+-	pn)
+-		basic_machine=pn-gould
+-		;;
+-	power)	basic_machine=power-ibm
+-		;;
+-	ppc | ppcbe)	basic_machine=powerpc-unknown
+-		;;
+-	ppc-* | ppcbe-*)
+-		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		;;
+-	ppcle | powerpclittle)
+-		basic_machine=powerpcle-unknown
+-		;;
+-	ppcle-* | powerpclittle-*)
+-		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		;;
+-	ppc64)	basic_machine=powerpc64-unknown
+-		;;
+-	ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		;;
+-	ppc64le | powerpc64little)
+-		basic_machine=powerpc64le-unknown
+-		;;
+-	ppc64le-* | powerpc64little-*)
+-		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+-		;;
+-	ps2)
+-		basic_machine=i386-ibm
++				os=linux
+ 		;;
+ 	pw32)
+ 		basic_machine=i586-unknown
+-		os=-pw32
++				os=pw32
+ 		;;
+ 	rdos | rdos64)
+ 		basic_machine=x86_64-pc
+-		os=-rdos
++				os=rdos
+ 		;;
+ 	rdos32)
+ 		basic_machine=i386-pc
+-		os=-rdos
++				os=rdos
+ 		;;
+ 	rom68k)
+ 		basic_machine=m68k-rom68k
+-		os=-coff
+-		;;
+-	rm[46]00)
+-		basic_machine=mips-siemens
+-		;;
+-	rtpc | rtpc-*)
+-		basic_machine=romp-ibm
+-		;;
+-	s390 | s390-*)
+-		basic_machine=s390-ibm
+-		;;
+-	s390x | s390x-*)
+-		basic_machine=s390x-ibm
++				os=coff
+ 		;;
+ 	sa29200)
+ 		basic_machine=a29k-amd
+-		os=-udi
+-		;;
+-	sb1)
+-		basic_machine=mipsisa64sb1-unknown
+-		;;
+-	sb1el)
+-		basic_machine=mipsisa64sb1el-unknown
+-		;;
+-	sde)
+-		basic_machine=mipsisa32-sde
+-		os=-elf
++				os=udi
+ 		;;
+ 	sei)
+ 		basic_machine=mips-sei
+-		os=-seiux
++				os=seiux
+ 		;;
+ 	sequent)
+ 		basic_machine=i386-sequent
+-		;;
+-	sh)
+-		basic_machine=sh-hitachi
+-		os=-hms
+-		;;
+-	sh5el)
+-		basic_machine=sh5le-unknown
+-		;;
+-	sh64)
+-		basic_machine=sh64-unknown
+-		;;
+-	sparclite-wrs | simso-wrs)
+-		basic_machine=sparclite-wrs
+-		os=-vxworks
++				os=
+ 		;;
+ 	sps7)
+ 		basic_machine=m68k-bull
+-		os=-sysv2
+-		;;
+-	spur)
+-		basic_machine=spur-unknown
++				os=sysv2
+ 		;;
+ 	st2000)
+ 		basic_machine=m68k-tandem
++				os=
+ 		;;
+ 	stratus)
+ 		basic_machine=i860-stratus
+-		os=-sysv4
+-		;;
+-	strongarm-* | thumb-*)
+-		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
++				os=sysv4
+ 		;;
+ 	sun2)
+ 		basic_machine=m68000-sun
++				os=
+ 		;;
+ 	sun2os3)
+ 		basic_machine=m68000-sun
+-		os=-sunos3
++				os=sunos3
+ 		;;
+ 	sun2os4)
+ 		basic_machine=m68000-sun
+-		os=-sunos4
++				os=sunos4
++				;;
++			sun3)
++				basic_machine=m68k-sun
++				os=
+ 		;;
+ 	sun3os3)
+ 		basic_machine=m68k-sun
+-		os=-sunos3
++				os=sunos3
+ 		;;
+ 	sun3os4)
+ 		basic_machine=m68k-sun
+-		os=-sunos4
++				os=sunos4
++				;;
++			sun4)
++				basic_machine=sparc-sun
++				os=
+ 		;;
+ 	sun4os3)
+ 		basic_machine=sparc-sun
+-		os=-sunos3
++				os=sunos3
+ 		;;
+ 	sun4os4)
+ 		basic_machine=sparc-sun
+-		os=-sunos4
++				os=sunos4
+ 		;;
+ 	sun4sol2)
+ 		basic_machine=sparc-sun
+-		os=-solaris2
+-		;;
+-	sun3 | sun3-*)
+-		basic_machine=m68k-sun
+-		;;
+-	sun4)
+-		basic_machine=sparc-sun
++				os=solaris2
+ 		;;
+ 	sun386 | sun386i | roadrunner)
+ 		basic_machine=i386-sun
++				os=
+ 		;;
+ 	sv1)
+ 		basic_machine=sv1-cray
+-		os=-unicos
++				os=unicos
+ 		;;
+ 	symmetry)
+ 		basic_machine=i386-sequent
+-		os=-dynix
++				os=dynix
+ 		;;
+ 	t3e)
+ 		basic_machine=alphaev5-cray
+-		os=-unicos
++				os=unicos
+ 		;;
+ 	t90)
+ 		basic_machine=t90-cray
+-		os=-unicos
+-		;;
+-	tile*)
+-		basic_machine=$basic_machine-unknown
+-		os=-linux-gnu
+-		;;
+-	tx39)
+-		basic_machine=mipstx39-unknown
+-		;;
+-	tx39el)
+-		basic_machine=mipstx39el-unknown
++				os=unicos
+ 		;;
+ 	toad1)
+ 		basic_machine=pdp10-xkl
+-		os=-tops20
+-		;;
+-	tower | tower-32)
+-		basic_machine=m68k-ncr
++				os=tops20
+ 		;;
+ 	tpf)
+ 		basic_machine=s390x-ibm
+-		os=-tpf
++				os=tpf
+ 		;;
+ 	udi29k)
+ 		basic_machine=a29k-amd
+-		os=-udi
++				os=udi
+ 		;;
+ 	ultra3)
+ 		basic_machine=a29k-nyu
+-		os=-sym1
++				os=sym1
+ 		;;
+ 	v810 | necv810)
+ 		basic_machine=v810-nec
+-		os=-none
++				os=none
+ 		;;
+ 	vaxv)
+ 		basic_machine=vax-dec
+-		os=-sysv
++				os=sysv
+ 		;;
+ 	vms)
+ 		basic_machine=vax-dec
+-		os=-vms
++				os=vms
+ 		;;
+-	vpp*|vx|vx-*)
+-		basic_machine=f301-fujitsu
++			vsta)
++				basic_machine=i386-pc
++				os=vsta
+ 		;;
+ 	vxworks960)
+ 		basic_machine=i960-wrs
+-		os=-vxworks
++				os=vxworks
+ 		;;
+ 	vxworks68)
+ 		basic_machine=m68k-wrs
+-		os=-vxworks
++				os=vxworks
+ 		;;
+ 	vxworks29k)
+ 		basic_machine=a29k-wrs
+-		os=-vxworks
+-		;;
+-	w65*)
+-		basic_machine=w65-wdc
+-		os=-none
+-		;;
+-	w89k-*)
+-		basic_machine=hppa1.1-winbond
+-		os=-proelf
++				os=vxworks
+ 		;;
+ 	xbox)
+ 		basic_machine=i686-pc
+-		os=-mingw32
+-		;;
+-	xps | xps100)
+-		basic_machine=xps100-honeywell
+-		;;
+-	xscale-* | xscalee[bl]-*)
+-		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
++				os=mingw32
+ 		;;
+ 	ymp)
+ 		basic_machine=ymp-cray
+-		os=-unicos
++				os=unicos
+ 		;;
+-	z8k-*-coff)
+-		basic_machine=z8k-unknown
+-		os=-sim
+-		;;
+-	z80-*-coff)
+-		basic_machine=z80-unknown
+-		os=-sim
++			*)
++				basic_machine=$1
++				os=
+ 		;;
+-	none)
+-		basic_machine=none-none
+-		os=-none
++		esac
+ 		;;
++esac
+ 
++# Decode 1-component or ad-hoc basic machines
++case $basic_machine in
+ # 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
++		cpu=hppa1.1
++		vendor=winbond
+ 		;;
+ 	op50n)
+-		basic_machine=hppa1.1-oki
++		cpu=hppa1.1
++		vendor=oki
+ 		;;
+ 	op60c)
+-		basic_machine=hppa1.1-oki
++		cpu=hppa1.1
++		vendor=oki
+ 		;;
+-	romp)
+-		basic_machine=romp-ibm
++	ibm*)
++		cpu=i370
++		vendor=ibm
+ 		;;
+-	mmix)
+-		basic_machine=mmix-knuth
++	orion105)
++		cpu=clipper
++		vendor=highlevel
+ 		;;
+-	rs6000)
+-		basic_machine=rs6000-ibm
++	mac | mpw | mac-mpw)
++		cpu=m68k
++		vendor=apple
+ 		;;
+-	vax)
+-		basic_machine=vax-dec
++	pmac | pmac-mpw)
++		cpu=powerpc
++		vendor=apple
+ 		;;
+-	pdp10)
+-		# there are many clones, so DEC is not a safe bet
+-		basic_machine=pdp10-unknown
++
++	# Recognize the various machine names and aliases which stand
++	# for a CPU type and a company and sometimes even an OS.
++	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
++		cpu=m68000
++		vendor=att
+ 		;;
+-	pdp11)
+-		basic_machine=pdp11-dec
++	3b*)
++		cpu=we32k
++		vendor=att
+ 		;;
+-	we32k)
+-		basic_machine=we32k-att
++	bluegene*)
++		cpu=powerpc
++		vendor=ibm
++		os=cnk
+ 		;;
+-	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+-		basic_machine=sh-unknown
++	decsystem10* | dec10*)
++		cpu=pdp10
++		vendor=dec
++		os=tops10
+ 		;;
+-	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+-		basic_machine=sparc-sun
++	decsystem20* | dec20*)
++		cpu=pdp10
++		vendor=dec
++		os=tops20
+ 		;;
+-	cydra)
+-		basic_machine=cydra-cydrome
++	delta | 3300 | motorola-3300 | motorola-delta \
++	      | 3300-motorola | delta-motorola)
++		cpu=m68k
++		vendor=motorola
+ 		;;
+-	orion)
+-		basic_machine=orion-highlevel
++	dpx2*)
++		cpu=m68k
++		vendor=bull
++		os=sysv3
+ 		;;
+-	orion105)
+-		basic_machine=clipper-highlevel
++	encore | umax | mmax)
++		cpu=ns32k
++		vendor=encore
+ 		;;
+-	mac | mpw | mac-mpw)
+-		basic_machine=m68k-apple
++	elxsi)
++		cpu=elxsi
++		vendor=elxsi
++		os=${os:-bsd}
+ 		;;
+-	pmac | pmac-mpw)
+-		basic_machine=powerpc-apple
++	fx2800)
++		cpu=i860
++		vendor=alliant
++		;;
++	genix)
++		cpu=ns32k
++		vendor=ns
++		;;
++	h3050r* | hiux*)
++		cpu=hppa1.1
++		vendor=hitachi
++		os=hiuxwe2
++		;;
++	hp3k9[0-9][0-9] | hp9[0-9][0-9])
++		cpu=hppa1.0
++		vendor=hp
++		;;
++	hp9k2[0-9][0-9] | hp9k31[0-9])
++		cpu=m68000
++		vendor=hp
++		;;
++	hp9k3[2-9][0-9])
++		cpu=m68k
++		vendor=hp
++		;;
++	hp9k6[0-9][0-9] | hp6[0-9][0-9])
++		cpu=hppa1.0
++		vendor=hp
++		;;
++	hp9k7[0-79][0-9] | hp7[0-79][0-9])
++		cpu=hppa1.1
++		vendor=hp
++		;;
++	hp9k78[0-9] | hp78[0-9])
++		# FIXME: really hppa2.0-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
++		cpu=hppa1.1
++		vendor=hp
++		;;
++	hp9k8[0-9][13679] | hp8[0-9][13679])
++		cpu=hppa1.1
++		vendor=hp
++		;;
++	hp9k8[0-9][0-9] | hp8[0-9][0-9])
++		cpu=hppa1.0
++		vendor=hp
++		;;
++	i*86v32)
++		cpu=`echo "$1" | sed -e 's/86.*/86/'`
++		vendor=pc
++		os=sysv32
++		;;
++	i*86v4*)
++		cpu=`echo "$1" | sed -e 's/86.*/86/'`
++		vendor=pc
++		os=sysv4
++		;;
++	i*86v)
++		cpu=`echo "$1" | sed -e 's/86.*/86/'`
++		vendor=pc
++		os=sysv
++		;;
++	i*86sol2)
++		cpu=`echo "$1" | sed -e 's/86.*/86/'`
++		vendor=pc
++		os=solaris2
++		;;
++	j90 | j90-cray)
++		cpu=j90
++		vendor=cray
++		os=${os:-unicos}
++		;;
++	iris | iris4d)
++		cpu=mips
++		vendor=sgi
++		case $os in
++		    irix*)
++			;;
++		    *)
++			os=irix4
++			;;
++		esac
++		;;
++	miniframe)
++		cpu=m68000
++		vendor=convergent
++		;;
++	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
++		cpu=m68k
++		vendor=atari
++		os=mint
++		;;
++	news-3600 | risc-news)
++		cpu=mips
++		vendor=sony
++		os=newsos
++		;;
++	next | m*-next)
++		cpu=m68k
++		vendor=next
++		case $os in
++		    openstep*)
++		        ;;
++		    nextstep*)
+ 		;;
+-	*-unknown)
+-		# Make sure to match an already-canonicalized machine name.
++		    ns2*)
++		      os=nextstep2
+ 		;;
+ 	*)
+-		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
++		      os=nextstep3
++			;;
++		esac
++		;;
++	np1)
++		cpu=np1
++		vendor=gould
++		;;
++	op50n-* | op60c-*)
++		cpu=hppa1.1
++		vendor=oki
++		os=proelf
++		;;
++	pa-hitachi)
++		cpu=hppa1.1
++		vendor=hitachi
++		os=hiuxwe2
++		;;
++	pbd)
++		cpu=sparc
++		vendor=tti
++		;;
++	pbb)
++		cpu=m68k
++		vendor=tti
++		;;
++	pc532)
++		cpu=ns32k
++		vendor=pc532
++		;;
++	pn)
++		cpu=pn
++		vendor=gould
++		;;
++	power)
++		cpu=power
++		vendor=ibm
++		;;
++	ps2)
++		cpu=i386
++		vendor=ibm
++		;;
++	rm[46]00)
++		cpu=mips
++		vendor=siemens
++		;;
++	rtpc | rtpc-*)
++		cpu=romp
++		vendor=ibm
++		;;
++	sde)
++		cpu=mipsisa32
++		vendor=sde
++		os=${os:-elf}
++		;;
++	simso-wrs)
++		cpu=sparclite
++		vendor=wrs
++		os=vxworks
++		;;
++	tower | tower-32)
++		cpu=m68k
++		vendor=ncr
++		;;
++	vpp*|vx|vx-*)
++		cpu=f301
++		vendor=fujitsu
++		;;
++	w65)
++		cpu=w65
++		vendor=wdc
++		;;
++	w89k-*)
++		cpu=hppa1.1
++		vendor=winbond
++		os=proelf
++		;;
++	none)
++		cpu=none
++		vendor=none
++		;;
++	leon|leon[3-9])
++		cpu=sparc
++		vendor=$basic_machine
++		;;
++	leon-*|leon[3-9]-*)
++		cpu=sparc
++		vendor=`echo "$basic_machine" | sed 's/-.*//'`
++		;;
++
++	*-*)
++		# shellcheck disable=SC2162
++		IFS="-" read cpu vendor <<EOF
++$basic_machine
++EOF
++		;;
++	# 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
++		;;
++	# 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
++		;;
++	x64 | amd64)
++		cpu=x86_64
++		vendor=pc
++		;;
++	# Recognize the basic CPU types without company name.
++	*)
++		cpu=$basic_machine
++		vendor=unknown
++		;;
++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}
++		;;
++	c90-unknown | c90-cray)
++		vendor=cray
++		os=${os:-unicos}
++		;;
++	fx80-unknown)
++		vendor=alliant
++		;;
++	romp-unknown)
++		vendor=ibm
++		;;
++	mmix-unknown)
++		vendor=knuth
++		;;
++	microblaze-unknown | microblazeel-unknown)
++		vendor=xilinx
++		;;
++	rs6000-unknown)
++		vendor=ibm
++		;;
++	vax-unknown)
++		vendor=dec
++		;;
++	pdp11-unknown)
++		vendor=dec
++		;;
++	we32k-unknown)
++		vendor=att
++		;;
++	cydra-unknown)
++		vendor=cydrome
++		;;
++	i370-ibm*)
++		vendor=ibm
++		;;
++	orion-unknown)
++		vendor=highlevel
++		;;
++	xps-unknown | xps100-unknown)
++		cpu=xps100
++		vendor=honeywell
++		;;
++
++	# Here we normalize CPU types with a missing or matching vendor
++	dpx20-unknown | dpx20-bull)
++		cpu=rs6000
++		vendor=bull
++		os=${os:-bosx}
++		;;
++
++	# Here we normalize CPU types irrespective of the vendor
++	amd64-*)
++		cpu=x86_64
++		;;
++	blackfin-*)
++		cpu=bfin
++		os=linux
++		;;
++	c54x-*)
++		cpu=tic54x
++		;;
++	c55x-*)
++		cpu=tic55x
++		;;
++	c6x-*)
++		cpu=tic6x
++		;;
++	e500v[12]-*)
++		cpu=powerpc
++		os=$os"spe"
++		;;
++	mips3*-*)
++		cpu=mips64
++		;;
++	ms1-*)
++		cpu=mt
++		;;
++	m68knommu-*)
++		cpu=m68k
++		os=linux
++		;;
++	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
++		cpu=s12z
++		;;
++	openrisc-*)
++		cpu=or32
++		;;
++	parisc-*)
++		cpu=hppa
++		os=linux
++		;;
++	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
++		cpu=i586
++		;;
++	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
++		cpu=i686
++		;;
++	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
++		cpu=i686
++		;;
++	pentium4-*)
++		cpu=i786
++		;;
++	pc98-*)
++		cpu=i386
++		;;
++	ppc-* | ppcbe-*)
++		cpu=powerpc
++		;;
++	ppcle-* | powerpclittle-*)
++		cpu=powerpcle
++		;;
++	ppc64-*)
++		cpu=powerpc64
++		;;
++	ppc64le-* | powerpc64little-*)
++		cpu=powerpc64le
++		;;
++	sb1-*)
++		cpu=mipsisa64sb1
++		;;
++	sb1el-*)
++		cpu=mipsisa64sb1el
++		;;
++	sh5e[lb]-*)
++		cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
++		;;
++	spur-*)
++		cpu=spur
++		;;
++	strongarm-* | thumb-*)
++		cpu=arm
++		;;
++	tx39-*)
++		cpu=mipstx39
++		;;
++	tx39el-*)
++		cpu=mipstx39el
++		;;
++	x64-*)
++		cpu=x86_64
++		;;
++	xscale-* | xscalee[bl]-*)
++		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
++		;;
++
++	# Recognize the canonical CPU Types that limit and/or modify the
++	# company names they are paired with.
++	cr16-*)
++		os=${os:-elf}
++		;;
++	crisv32-* | etraxfs*-*)
++		cpu=crisv32
++		vendor=axis
++		;;
++	cris-* | etrax*-*)
++		cpu=cris
++		vendor=axis
++		;;
++	crx-*)
++		os=${os:-elf}
++		;;
++	neo-tandem)
++		cpu=neo
++		vendor=tandem
++		;;
++	nse-tandem)
++		cpu=nse
++		vendor=tandem
++		;;
++	nsr-tandem)
++		cpu=nsr
++		vendor=tandem
++		;;
++	nsv-tandem)
++		cpu=nsv
++		vendor=tandem
++		;;
++	nsx-tandem)
++		cpu=nsx
++		vendor=tandem
++		;;
++	s390-*)
++		cpu=s390
++		vendor=ibm
++		;;
++	s390x-*)
++		cpu=s390x
++		vendor=ibm
++		;;
++	tile*-*)
++		os=${os:-linux-gnu}
++		;;
++
++	*)
++		# 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
+ 		;;
+ 	*)
+ 		;;
+@@ -1353,200 +1275,244 @@
+ 
+ # 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* \
+-	      | -midipix* | -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* | twizzler* \
++	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
++	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
++	     | knetbsd* | mirbsd* | netbsd* \
++	     | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
++	     | 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* \
++	     | nsk* | powerunix* | genode*)
+ 	# 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
+ 		;;
+-	-ns2 )
+-		os=-nextstep2
++	ctix* | uts*)
++		os=sysv
+ 		;;
+-	-nsk*)
+-		os=-nsk
++	nova*)
++		os=rtmk-nova
++		;;
++	ns2)
++		os=nextstep2
+ 		;;
+ 	# 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
++	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
+ 		;;
+-	-zvmoe)
+-		os=-zvmoe
++		    *)
++			os=elf
+ 		;;
+-	-dicos*)
+-		os=-dicos
++		esac
+ 		;;
+-	-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
+@@ -1562,261 +1528,265 @@
+ # 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
++		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: "'"
diff --git a/recipes/pcre/recipe.toml b/recipes/pcre/recipe.toml
new file mode 100644
index 0000000000000000000000000000000000000000..ebde0bd04a70d0452d08f50ec5b57d6f054b5bbd
--- /dev/null
+++ b/recipes/pcre/recipe.toml
@@ -0,0 +1,8 @@
+[source]
+tar = "https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.bz2"
+patches = [
+    "redox.patch"
+]
+
+[build]
+template = "configure"
diff --git a/src/bin/cook.rs b/src/bin/cook.rs
index 06edae0c479bd2bab313a7aa90d2262ef68db09b..e0ab5a4f408be398276b8ab9a842c487c84bb98d 100644
--- a/src/bin/cook.rs
+++ b/src/bin/cook.rs
@@ -58,6 +58,48 @@ fn run_command(mut command: process::Command) -> Result<(), String> {
     Ok(())
 }
 
+fn run_command_stdin(mut command: process::Command, stdin_data: &[u8]) -> Result<(), String> {
+    command.stdin(Stdio::piped());
+
+    let mut child = command.spawn().map_err(|err| format!(
+        "failed to spawn {:?}: {}\n{:#?}",
+        command,
+        err,
+        err
+    ))?;
+
+    if let Some(ref mut stdin) = child.stdin {
+        stdin.write_all(stdin_data).map_err(|err| format!(
+            "failed to write stdin of {:?}: {}\n{:#?}",
+            command,
+            err,
+            err
+        ))?;
+    } else {
+        return Err(format!(
+            "failed to find stdin of {:?}",
+            command
+        ));
+    }
+
+    let status = child.wait().map_err(|err| format!(
+        "failed to run {:?}: {}\n{:#?}",
+        command,
+        err,
+        err
+    ))?;
+
+    if ! status.success() {
+        return Err(format!(
+            "failed to run {:?}: exited with status {}",
+            command,
+            status
+        ));
+    }
+
+    Ok(())
+}
+
 fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result<PathBuf, String> {
     let source_dir = recipe_dir.join("source");
     match source {
@@ -73,7 +115,7 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result<PathBuf, String> {
                 if let Some(branch) = branch {
                     command.arg("--branch").arg(&branch);
                 }
-                command.arg(&source_dir);
+                command.arg(&source_dir_tmp);
                 run_command(command)?;
 
                 // Move source.tmp to source atomically
@@ -221,43 +263,7 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result<PathBuf, String> {
                     let mut command = Command::new("patch");
                     command.arg("--directory").arg(&source_dir_tmp);
                     command.arg("--strip=1");
-                    command.stdin(Stdio::piped());
-
-                    let mut child = command.spawn().map_err(|err| format!(
-                        "failed to spawn {:?}: {}\n{:#?}",
-                        command,
-                        err,
-                        err
-                    ))?;
-
-                    if let Some(ref mut stdin) = child.stdin {
-                        stdin.write_all(patch.as_bytes()).map_err(|err| format!(
-                            "failed to write stdin of {:?}: {}\n{:#?}",
-                            command,
-                            err,
-                            err
-                        ))?;
-                    } else {
-                        return Err(format!(
-                            "failed to find stdin of {:?}",
-                            command
-                        ));
-                    }
-
-                    let status = child.wait().map_err(|err| format!(
-                        "failed to run {:?}: {}\n{:#?}",
-                        command,
-                        err,
-                        err
-                    ))?;
-
-                    if ! status.success() {
-                        return Err(format!(
-                            "failed to run {:?}: exited with status {}",
-                            command,
-                            status
-                        ));
-                    }
+                    run_command_stdin(command, patch.as_bytes())?;
                 }
 
                 // Move source.tmp to source atomically
@@ -269,6 +275,83 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result<PathBuf, String> {
     Ok(source_dir)
 }
 
+fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result<PathBuf, String> {
+    let stage_dir = recipe_dir.join("stage");
+    if ! stage_dir.is_dir() {
+        // Create stage.tmp
+        let stage_dir_tmp = recipe_dir.join("stage.tmp");
+        create_dir_clean(&stage_dir_tmp)?;
+
+        // Create build, if it does not exist
+        //TODO: flag for clean builds where build is wiped out
+        let build_dir = recipe_dir.join("build");
+        if ! build_dir.is_dir() {
+            create_dir_clean(&build_dir)?;
+        }
+
+        //TODO: better integration with redoxer (library instead of binary)
+        //TODO: configurable target
+        match build {
+            BuildRecipe::Cargo => {
+                let mut command = Command::new("redoxer");
+                command.arg("install");
+                //TODO: --debug if desired
+                command.arg("--path").arg(&source_dir);
+                command.arg("--root").arg(&stage_dir_tmp);
+                command.env("CARGO_TARGET_DIR", &build_dir);
+                run_command(command)?;
+            },
+            BuildRecipe::Configure => {
+                //TODO: Add more configurability, convert script to Rust
+                let mut command = Command::new("redoxer");
+                command.arg("env");
+                command.arg("bash").arg("-ex");
+                //TODO: remove unwraps
+                command.env("COOKBOOK_STAGE", &stage_dir_tmp.canonicalize().unwrap());
+                command.env("COOKBOOK_SOURCE", &source_dir.canonicalize().unwrap());
+                command.current_dir(&build_dir);
+                run_command_stdin(command, r#"
+                    export LDFLAGS="--static"
+                    "${COOKBOOK_SOURCE}/configure" \
+                        --host="${TARGET}" \
+                        --prefix="" \
+                        --disable-shared \
+                        --enable-static
+                    make -j "$(nproc)"
+                    make install DESTDIR="${COOKBOOK_STAGE}"
+
+                    # Strip binaries
+                    if [ -d "${COOKBOOK_STAGE}/bin" ]
+                    then
+                        find "${COOKBOOK_STAGE}/bin" -type f -exec "${TARGET}-strip" -v {} ';'
+                    fi
+
+                    # Remove libtool files
+                    if [ -d "${COOKBOOK_STAGE}/lib" ]
+                    then
+                        find "${COOKBOOK_STAGE}/lib" -type f -name '*.la' -exec rm -fv {} ';'
+                    fi
+                "#.as_bytes())?;
+            },
+            BuildRecipe::Custom { script } => {
+                let mut command = Command::new("redoxer");
+                command.arg("env");
+                command.arg("bash").arg("-ex");
+                //TODO: remove unwraps
+                command.env("COOKBOOK_STAGE", &stage_dir_tmp.canonicalize().unwrap());
+                command.env("COOKBOOK_SOURCE", &source_dir.canonicalize().unwrap());
+                command.current_dir(&build_dir);
+                run_command_stdin(command, script.as_bytes())?;
+            },
+        }
+
+        // Move stage.tmp to stage atomically
+        rename(&stage_dir_tmp, &stage_dir)?;
+    }
+
+    Ok(stage_dir)
+}
+
 fn cook(recipe_name: &str) -> Result<(), String> {
     //TODO: sanitize recipe name?
     let recipe_dir = Path::new("recipes").join(recipe_name);
@@ -306,6 +389,11 @@ fn cook(recipe_name: &str) -> Result<(), String> {
         err
     ))?;
 
+    let stage_dir = build(&recipe_dir, &source_dir, &recipe.build).map_err(|err| format!(
+        "failed to build: {}",
+        err
+    ))?;
+
     Ok(())
 }
 
diff --git a/src/recipe.rs b/src/recipe.rs
index da6db88aa0db0094635b7d8a21b38f408ba3c8f1..0fee27d36aa7ec1fca82b7a9de876f05c4c40eef 100644
--- a/src/recipe.rs
+++ b/src/recipe.rs
@@ -39,6 +39,9 @@ pub enum BuildRecipe {
     /// Will build and install using cargo
     #[serde(rename = "cargo")]
     Cargo,
+    /// Will build and install using configure and make
+    #[serde(rename = "configure")]
+    Configure,
     /// Will build and install using custom commands
     #[serde(rename = "custom")]
     Custom {