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