diff --git a/.gitignore b/.gitignore
index eab8ed427..7fd983980 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 000000000..2c63247f6
--- /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 000000000..cebe71c4a
--- /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 000000000..c96d3cf9d
--- /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 .
++# along with this program; if not, see .
+ #
+ # 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 .
+ #
+ # 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 <&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 <&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 000000000..593947f58
--- /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 000000000..c07ab514d
--- /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 .
++# along with this program; if not, see .
+ #
+ # 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 <&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 <&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 000000000..ebde0bd04
--- /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 06edae0c4..e0ab5a4f4 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 {
let source_dir = recipe_dir.join("source");
match source {
@@ -73,7 +115,7 @@ fn fetch(recipe_dir: &Path, source: &SourceRecipe) -> Result {
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 {
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 {
Ok(source_dir)
}
+fn build(recipe_dir: &Path, source_dir: &Path, build: &BuildRecipe) -> Result {
+ 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 da6db88aa..0fee27d36 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 {