1#! /bin/sh 2# 3# GMP config.sub wrapper. 4 5 6# Copyright 2000, 2001, 2002, 2003, 2006 Free Software Foundation, Inc. 7# 8# This file is part of the GNU MP Library. 9# 10# The GNU MP Library is free software; you can redistribute it and/or modify 11# it under the terms of the GNU Lesser General Public License as published 12# by the Free Software Foundation; either version 3 of the License, or (at 13# your option) any later version. 14# 15# The GNU MP Library is distributed in the hope that it will be useful, but 16# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 17# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 18# License for more details. 19# 20# You should have received a copy of the GNU Lesser General Public License 21# along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. 22 23 24# Usage: config.sub CPU-VENDOR-OS 25# config.sub ALIAS 26# 27# Validate and canonicalize the given configuration name, with special 28# handling for GMP extra CPU names. 29# 30# When the CPU isn't special the whole name is simply passed straight 31# through to configfsf.sub. 32# 33# When the CPU is a GMP extra, configfsf.sub is run on a similar CPU that it 34# will recognise. For example "athlon-pc-freebsd3.5" is validated using 35# "i386-pc-freebsd3.5". 36# 37# Any canonicalizations made by configfsf.sub are preserved. For example 38# given "athlon-linux", configfsf.sub is called with "i386-linux" and will 39# give back "i386-pc-linux-gnu". "athlon" is then reinstated, so we print 40# "athlon-pc-linux-gnu". 41 42 43# Expect to find configfsf.sub in the same directory as this config.sub 44configfsf_sub="`echo \"$0\" | sed 's/config.sub$/configfsf.sub/'`" 45if test "$configfsf_sub" = "$0"; then 46 echo "Cannot derive configfsf.sub from $0" 1>&2 47 exit 1 48fi 49if test -f "$configfsf_sub"; then 50 : 51else 52 echo "$configfsf_sub not found" 1>&2 53 exit 1 54fi 55 56# Always run configfsf.sub with $SHELL, like autoconf does for config.sub 57SHELL=${CONFIG_SHELL-/bin/sh} 58 59# Identify ourselves on --version, --help, etc 60case "$1" in 61"" | -*) 62 echo "(GNU MP wrapped config.sub)" 1>&2 63 $SHELL $configfsf_sub "$@" 64 exit 65 ;; 66esac 67 68given_full="$1" 69given_cpu=`echo "$given_full" | sed 's/-.*$//'` 70given_rest=`echo "$given_full" | sed 's/^[^-]*//'` 71 72 73# Aliases for GMP extras 74case "$given_cpu" in 75 # configfsf.sub turns p5 into i586, instead use our exact cpu type 76 p5 | p54) given_cpu=pentium ;; 77 p55) given_cpu=pentiummmx ;; 78 79 # configfsf.sub turns p6, pentiumii and pentiumiii into i686, instead use 80 # our exact cpu types 81 p6) given_cpu=pentiumpro ;; 82 pentiumii) given_cpu=pentium2 ;; 83 pentiumiii) given_cpu=pentium3 ;; 84esac 85given_full="$given_cpu$given_rest" 86 87 88# GMP extras and what to use for the config.sub test 89case "$given_cpu" in 90itanium | itanium2) 91 test_cpu=ia64 ;; 92pentium | pentiummmx | pentiumpro | pentium[234m] | k[567] | k6[23] | geode | athlon | viac3*) 93 test_cpu=i386 ;; 94athlon64 | atom | core2 | corei | coreinhm | coreiwsm | coreisbr | opteron | k[89] | k10 | bobcat | bulldozer | nano) 95 test_cpu=x86_64 ;; 96power[2-9] | power2sc) 97 test_cpu=power ;; 98powerpc401 | powerpc403 | powerpc405 | \ 99powerpc505 | \ 100powerpc601 | powerpc602 | \ 101powerpc603 | powerpc603e | \ 102powerpc604 | powerpc604e | \ 103powerpc620 | powerpc630 | powerpc970 | \ 104powerpc740 | powerpc7400 | powerpc7450 | powerpc750 | \ 105powerpc801 | powerpc821 | powerpc823 | powerpc860 | \ 106powerpc64) 107 test_cpu=powerpc ;; 108sparcv8 | supersparc | microsparc | \ 109ultrasparc | ultrasparc2 | ultrasparc2i | ultrasparc3 | ultrasparct[1234]) 110 test_cpu=sparc ;; 111sh2) 112 test_cpu=sh ;; 113 114z900 | z990 | z9 | z10 | z196) 115 test_cpu=s390x;; 116z900esa | z990esa | z9esa | z10esa | z196esa) 117 test_cpu=s390;; 118 119*) 120 # Don't need or want to change the given name, just run configfsf.sub 121 $SHELL $configfsf_sub "$given_full" 122 if test $? = 0; then 123 exit 0 124 else 125 echo "(GNU MP wrapped config.sub, testing \"$given_full\")" 126 exit 1 127 fi 128esac 129 130 131test_full="$test_cpu$given_rest" 132canonical_full=`$SHELL $configfsf_sub "$test_full"` 133if test $? = 0; then 134 : 135else 136 echo "(GNU MP wrapped config.sub, testing \"$given_full\" as \"$test_full\")" 137 exit 1 138fi 139 140canonical_rest=`echo "$canonical_full" | sed 's/^[^-]*//'` 141echo "$given_cpu$canonical_rest" 142exit 0 143 144 145 146# Local variables: 147# fill-column: 76 148# End: 149