[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/2] * config.sub: Properly recognise configs with 4 components
From: |
John Ericson |
Subject: |
[PATCH 1/2] * config.sub: Properly recognise configs with 4 components |
Date: |
Tue, 1 May 2018 14:53:46 -0400 |
---
ChangeLog | 27 ++++++++++++++++++++++++++
config.sub | 65 ++++++++++++++++++++++++++++++++++++++------------------------
2 files changed, 67 insertions(+), 25 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index e32c2c5..1931be3 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 Ben Elliston <address@hidden>
* config.sub (maybe_os): Reindent this block.
diff --git a/config.sub b/config.sub
index 703b313..9992b9c 100755
--- a/config.sub
+++ b/config.sub
@@ -110,33 +110,48 @@ 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
- ;;
- *)
- basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
- case $1 in
- *-*)
- os=`echo "$1" | sed 's/.*-/-/'`
- ;;
- *)
+# Physical components of config
+IFS="-" read comp1 comp2 comp3 comp4 <<EOF
+$1
+EOF
+
+# 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
+ ;;
+ android-linux)
+ basic_machine=$comp1-unknown
+ os=-linux-android
+ ;;
+ *)
+ basic_machine=$comp1-$comp2
+ os=-$comp3
+ ;;
+ esac
+ ;;
+ *-*)
+ basic_machine=$comp1
+ os=-$comp2
+ ;;
+ *)
+ basic_machine=$1
os=
;;
- esac
- ;;
esac
### Let's recognize common machines as not being operating systems so
--
2.16.3
- [PATCH 1/4] * config.sub (os, maybe_os): Normalize indentation to match rest of file, (continued)
- 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 <=
- [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
- Re: [PATCH 2/2] * config.sub (arm*-*-none-eabi): Recognise, John Ericson, 2018/05/11
- Re: [PATCH 2/2] * config.sub (arm*-*-none-eabi): Recognise, Ben Elliston, 2018/05/11
- Re: [PATCH 2/2] * config.sub (arm*-*-none-eabi): Recognise, John Ericson, 2018/05/11
- Re: [PATCH 1/2] * config.sub: Properly recognise configs with 4 components, Ben Elliston, 2018/05/05