[PATCH 3/4] * config.sub: Properly recognise configs with 4 components
--- 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+ + * 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 * 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 ___ config-patches mailing list config-patches@gnu.org https://lists.gnu.org/mailman/listinfo/config-patches
Re: [PATCH 2/4] Indent maybe_os stuff ahead of refactor
Sure, but I'm a bit confused on what you intended. There's a mix of tabs and spaces which leads me to think you are using 4 space indent with a tab for every 8 spaces? But the rest of the file looks like it is using a tab per indent level (such that the spaces/tab doesn't matter), where 4 spaces/tab is intended so the indent visually matches what you did. Also, I meant to _over_ indent so the next patch would be less noisy. Sorry my commit message was very confusing as to that intention. Not knowing what you want, I'll do 4 patches: 1. Make all indent exclusively tab-based like the majority of the file, and with `| ` leading successive lines of big, multi-line case patterns. 2. Add more tabs to _properly_ :) over-indent this time preparation of (3) 3. My 4 component patch from before 4. My `arm*-*-none-eabi` patch from before I'll fix the commit messages to match the `* config.sub ...` style too. Let me know if you want anything additional/different. Cheers, John On 05/01/18 01:46, Ben Elliston wrote: This change is fine in principle, but I didn't agree with your indenting rules. ;-) Please re-do your patch #3 using current master. Cheers, Ben ___ config-patches mailing list config-patches@gnu.org https://lists.gnu.org/mailman/listinfo/config-patches