[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/4] * config.sub: Properly recognise configs with 4 components
From: |
John Ericson |
Subject: |
[PATCH 3/4] * config.sub: Properly recognise configs with 4 components |
Date: |
Tue, 1 May 2018 14:59:16 -0400 |
---
ChangeLog | 27 +++++++++++++++++++++++++++
config.sub | 46 +++++++++++++++++++++++++++++++---------------
2 files changed, 58 insertions(+), 15 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 0655aad..7e675c9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,30 @@
+2018-04-24 John Ericson <address@hidden>
+
+ * config.sub: Properly recognise configs with 4 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.
+
2018-05-01 John Ericson <address@hidden>
* config.sub (os, maybe_os): Normalize indentation to match rest of
diff --git a/config.sub b/config.sub
index 5e5eac2..06c755b 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
+# Physical components of config
+comp1=`echo "$1" | sed 's/^\([^-]*\).*$/\1/'`
+comp2=`echo "$1" | sed 's/^[^-]*-\([^-]*\).*$/\1/'`
+comp3=`echo "$1" | sed 's/^[^-]*-[^-]*-\([^-]*\).*$/\1/'`
+comp4=`echo "$1" | sed 's/^[^-]*-[^-]*-[^-]*-\([^-]*\).*$/\1/'`
+
+# Separate into logical components for further validation
+case $1 in
+ *-*-*-*)
+ basic_machine=$comp1-$comp2
+ os=-$comp3-$comp4
+ ;;
+ *-*-*)
+ # Ambiguous whether COMPANY is present, or skipped and
KERNEL-OS is two
+ # parts
+ maybe_os=$comp2-$comp3
+ 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=$comp1
os=-$maybe_os
- basic_machine=`echo "$1" | sed
's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
android-linux)
+ basic_machine=$comp1-unknown
os=-linux-android
- basic_machine=`echo "$1" | sed
's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*)
- basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
- case $1 in
- *-*)
- os=`echo "$1" | sed 's/.*-/-/'`
- ;;
- *)
- os=
- ;;
- esac
+ basic_machine=$comp1-$comp2
+ os=-$comp3
;;
+ esac
+ ;;
+ *-*)
+ basic_machine=$comp1
+ os=-$comp2
+ ;;
+ *)
+ basic_machine=$1
+ os=
+ ;;
esac
### Let's recognize common machines as not being operating systems so
--
2.16.3
- Re: [PATCH 2/4] Indent maybe_os stuff ahead of refactor, John Ericson, 2018/05/01
- Re: [PATCH 2/4] Indent maybe_os stuff ahead of refactor, Ben Elliston, 2018/05/02
- Re: [PATCH 2/4] Indent maybe_os stuff ahead of refactor, John Ericson, 2018/05/02
- [PATCH 1/2] * config.sub: Properly recognise configs with 4 components, John Ericson, 2018/05/02
- [PATCH 2/2] * config.sub (arm*-*-none-eabi): Recognise, John Ericson, 2018/05/02
- Re: [PATCH 1/2] * config.sub: Properly recognise configs with 4 components, Ben Elliston, 2018/05/04
- Re: [PATCH 1/2] * config.sub: Properly recognise configs with 4 components, John Ericson, 2018/05/04
- [PATCH 1/2] * config.sub: Properly recognise configs with 4 components, John Ericson, 2018/05/04
- [PATCH 2/2] * config.sub (arm*-*-none-eabi): Recognise, John Ericson, 2018/05/04
- Re: [PATCH 2/2] * config.sub (arm*-*-none-eabi): Recognise, Ben Elliston, 2018/05/05