From 1a9d4e86538b2c8dbd8ad11c4333f0db64febd50 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Sat, 21 Apr 2018 22:58:24 -0400 Subject: [PATCH 2/3] Rewrite logic handling n `-`-separated components The old logic was a bit hard to follow due to lots of sed and unintuitive collapsing of cases. The code now works like this - 4 components is always parsed as CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM - 2 components is always parsed as CPU_TYPE-OPERATING_SYSTEM - 1 component is always parsed as CPU_TYPE - 3 components is ambiguous and parsed as either CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM CPU_TYPE-KERNEL-OPERATING_SYSTEM The old code differed semantically in that - The 4-case was awkwardly folded into the 3-case disambiguation - The "android-linux" ad-hoc fixdup did something different in the non-3 cases, but isn't intended to apply in those cases. --- config.sub | 60 ++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/config.sub b/config.sub index 721d1dc..24ffe7c 100755 --- a/config.sub +++ b/config.sub @@ -110,33 +110,49 @@ case $# in exit 1;; esac -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ - kopensolaris*-gnu* | cloudabi*-eabi* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown +c1=`echo "$1" | sed 's/^\([^-]*\).*$/\1/'` +c2=`echo "$1" | sed 's/^[^-]*-\([^-]*\).*$/\1/'` +c3=`echo "$1" | sed 's/^[^-]*-[^-]*-\([^-]*\).*$/\1/'` +c4=`echo "$1" | sed 's/^[^-]*-[^-]*-[^-]*-\([^-]*\).*$/\1/'` + +# Fix android-linux to be linux-android KERNEL-OS with unknown COMPANY +if [ "$c2-$c3" = "android-linux" ]; then + c2=unknown + c3=linux + c4=android + set $c1-$c2-$c3-$c4 +fi + +case $1 in + *-*-*-*) + basic_machine=$c1-$c2 + os=-$c3-$c4 ;; - *) - basic_machine=`echo "$1" | sed 's/-[^-]*$//'` - case $1 in - *-*) - os=`echo "$1" | sed 's/.*-/-/'` + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two parts + maybe_os=$c2-$c3 + case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$c1 + os=-$maybe_os ;; *) - os= - ;; + basic_machine=$c1-$c2 + os=-$c3 esac ;; + *-*) + basic_machine=$c1 + os=-$c2 + ;; + *) + basic_machine=$1 + os= + ;; esac ### Let's recognize common machines as not being operating systems so -- 2.16.2