diff options
-rwxr-xr-x | config.sub | 985 |
1 files changed, 536 insertions, 449 deletions
@@ -1,4 +1,21 @@ #!/bin/sh +# Configuration validation subroutine script, version 1.0. +# Copyright (C) 1991 Free Software Foundation, Inc. + +#This file is free software; you can redistribute it and/or modify +#it under the terms of the GNU General Public License as published by +#the Free Software Foundation; either version 2 of the License, or +#(at your option) any later version. + +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with this program; if not, write to the Free Software +#Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -11,478 +28,548 @@ # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless -# configuration (e.g. a typo). +# configuration. -# Please email any bugs, comments, and/or additions to this file to: -# configure@cygnus.com +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# it is wrong to echo any other type of specification -# decode aliases into canonical names -# Note that aliases MUST fit into 12 characters or less otherwise the -# install targets and subdir builds all die on machines that support -# only 14 char file names. They die miserably on machines that rudely -# enforce the 14 character limit. - -case "$1" in -# cpu alone is a valid alias for cpu-none-none. -vax | tahoe | i386 | i860 | m68k | m68000 | m88k | sparc | ns32k \ - | alliant | arm | c1 | c2 | mips | pyramid | tron | a29k \ - | romp | i960 | h8300) - cpu=$1 - vendor=none - os=none - ;; -altos | altos3068) - cpu=m68k - vendor=altos - os=sysv # maybe? - ;; -altosgas) - cpu=m68k - vendor=altos - os=gas - ;; -am29k) - cpu=a29k - vendor=none - os=bsd - ;; -amdahl) - cpu=580 - vendor=amdahl - os=uts - ;; -amigados) - cpu=m68k - vendor=cbm - os=amigados # Native Amiga operating system - ;; -amigaunix | amix) - cpu=m68k - vendor=cbm - os=svr4 - ;; -apollo68) - cpu=m68k - vendor=apollo - os=sysv # maybe? - ;; -balance) - cpu=ns32k - vendor=sequent - os=dynix - ;; -convex-c1) - cpu=c1 - vendor=convex - os=sysv # maybe? - ;; -convex-c2) - cpu=c2 - vendor=convex - os=sysv # maybe? - ;; -cray | ymp) - cpu=ymp - vendor=cray - os=unicos - ;; -cray2) - cpu=cray2 - vendor=cray - os=unicos - ;; -dec3100 | decstatn | decstation | decstation-3100 | pmax | pmin) - cpu=mips - vendor=dec - os=ultrix - ;; -delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - cpu=m68k - vendor=motorola - os=sysv # maybe? - ;; - -delta88) - cpu=m88k - vendor=motorola - os=m88kbcs - ;; - -ebmon29k) - cpu=a29k - vendor=amd - os=ebmon - ;; -gmicro) - cpu=tron - vendor=gmicro - os=sysv # maybe? +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) ;; +esac -harris) - cpu=m88k - vendor=harris - os=m88kbcs - ;; +# Separate what the user gave into CPU-COMPANY and OS (if any). +basic_machine=`echo $1 | sed 's/-[^-]*$//'` +if [ $basic_machine != $1 ] +then os=`echo $1 | sed 's/.*-/-/'` +else os=; fi -h8300hds) - cpu=h8300 - vendor=hitachi - os=hds - ;; +# Lets recognize common machines as not being OS so that things like +# config.subr decstation-3100 as legal. +case $os in + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next* | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -osf* | \ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris) + os= + basic_machine=$1 + ;; + -sco*) + os=-scosysv322 + basic_machine=i386-unknown + ;; + -isc*) + os=-iscsysv + basic_machine=i386-unknown + ;; +# start-sanitize-v9 + -32) + basic_machine=sparc64-hal + os=-hal32 + ;; + -64) + basic_machine=sparc64-hal + os=-hal64 + ;; + -v7) + basic_machine=sparc64-sun + os=-v7 + ;; +# end-sanitize-v9 +esac +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types with without company name. + tahoe | i386 | i860 | m68k | m68000 | m88k | ns32k | arm | pyramid \ + | tron | a29k | 580 | i960 | h8300) + basic_machine=$basic_machine-unknown + ;; + # Recognize the basic CPU types with with company name. + vax-* | tahoe-* | i386-* | i860-* | m68k-* | m68000-* | m88k-* \ + | sparc-* | ns32k-* | alliant-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ + | hppa-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. # start-sanitize-life -life) - cpu=life - vendor=philips - os=none - ;; + life-*) ;; + life) + basic_machine=life-philips + os=-none + ;; # end-sanitize-life # start-sanitize-v9 -hal-32 | hal32) - cpu=sparc64 - vendor=hal - os=hal32 - ;; -hal-64 | hal64) - cpu=sparc64 - vendor=hal - os=hal64 - ;; -sparc64) - cpu=sparc64 - vendor=sun - os=v9 - ;; -sparc64-v7 | sparc64v7) - cpu=sparc64 - vendor=sun - os=v7 - ;; + sparc64-*) ;; + hal-32 | hal32) + basic_machine=sparc64-hal + os=-hal32 + ;; + hal-64 | hal64) + basic_machine=sparc64-hal + os=-hal64 + ;; + sparc64) + basic_machine=sparc64-sun + os=-v9 + ;; + sparc64-v7 | sparc64v7) + basic_machine=sparc64-sun + os=-v7 + ;; # end-sanitize-v9 -hp300bsd) - cpu=m68k - vendor=hp - os=bsd - ;; -hp300hpux | hpux | hp9k3[2-9][0-9]) - cpu=m68k - vendor=hp - os=hpux - ;; -hp9k31[0-9] | hp9k2[0-9][0-9]) - cpu=m68000 - vendor=hp - os=hpux - ;; -i386sco) - cpu=i386 - vendor=sco - os=sysv # maybe? - ;; -i386v) - cpu=i386 - vendor=none - os=sysv - ;; -i386v32) - cpu=i386 - vendor=none - os=sysv32 - ;; -iris | iris4d) - cpu=mips - vendor=sgi - os=irix # maybe? - ;; -dpx2) - vendor=bull - cpu=m68k - os=sysv - ;; -isi | isi68) - cpu=m68k - vendor=isi - os=sysv # maybe? - ;; -littlemips) - cpu=mips - vendor=little - os=bsd - ;; -magnum | m3230) - cpu=mips - vendor=mips - os=sysv # maybe? - ;; -merlin) - cpu=ns32k - vendor=utek - os=sysv # maybe? - ;; -miniframe) - cpu=m68000 - vendor=convergent - os=sysv # maybe? - ;; -mmax) - cpu=ns32k - vendor=encore - os=sysv # maybe? - ;; -ncr3000) - cpu=i386 - vendor=ncr - os=svr4 - ;; -news | news700 | news800 | news900) - cpu=m68k - vendor=sony - os=newsos # newsos3c or newsos4c, c stands for cisc. Based on bsd-4.3. - ;; -news1000) - cpu=m68030 - vendor=sony - os=newsos - ;; -news-3600 | bigmips | risc-news) - cpu=mips - vendor=sony - os=newsos # Presumably newsos4r, r stands for risc. Based on bsd-4.3. - ;; -next) - cpu=m68k - vendor=next - os=sysv # maybe? - ;; -nindy960) - cpu=i960 - vendor=intel - os=nindy - ;; -none) - cpu=none - vendor=none - os=none - ;; -np1) - cpu=np1 - vendor=gould - os=sysv # maybe? - ;; -rtpc) - cpu=romp - vendor=ibm - os=aix # maybe? - ;; -pbd) - cpu=sparc - vendor=unicom - os=sysv - ;; -pn) - cpu=pn - vendor=gould - os=sysv # maybe? - ;; -powersys | rs6000) - cpu=rs6000 - vendor=ibm - os=aix - ;; -ps2) - cpu=i386 - vendor=ibm - os=sysv # maybe? - ;; -sun2) - cpu=m68000 - vendor=sun - os=sunos4 - ;; -sun2os3) - cpu=m68000 - vendor=sun - os=sunos3 - ;; -sun2os4) - cpu=m68000 - vendor=sun - os=sunos4 - ;; -sun3) - cpu=m68k - vendor=sun - os=sunos4 - ;; -sun3os3) - cpu=m68k - vendor=sun - os=sunos3 - ;; -sun3os4) - cpu=m68k - vendor=sun - os=sunos4 - ;; -sun386 | roadrunner | sun386i) - cpu=i386 - vendor=sun - os=sunos - ;; -sun4) - cpu=sparc - vendor=sun - os=sunos4 - ;; -sun4os3) - cpu=sparc - vendor=sun - os=sunos3 - ;; -sun4os4) - cpu=sparc - vendor=sun - os=sunos4 - ;; -symmetry) - cpu=i386 - vendor=sequent - os=dynix - ;; -tower | tower-32) - cpu=m68k - vendor=ncr - os=sysv # maybe? - ;; -ultra3) - cpu=a29k - vendor=nyu - os=sym1 - ;; -umax) - cpu=ns32k - vendor=encore - os=sysv # maybe? - ;; -unixpc | safari | pc7300 | 3b1 | 7300 | 7300-att | att-7300) - cpu=m68k - vendor=att - os=sysv # maybe? - ;; -vax-dec) - cpu=vax - vendor=dec - os=ultrix # maybe? - ;; -vxworks68) - cpu=m68k - vendor=wrs - os=vxworks - ;; -vxworks960) - cpu=i960 - vendor=wrs - os=vxworks - ;; -xmp) - cpu=xmp - vendor=cray - os=unicos - ;; -# not an alias. parse what we expect to be a canonical name. -*) - cpu=`echo $1 | sed 's/-.*$//'` + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + i386v32) + basic_machine=i386-unknown + os=-sysv32 + ;; + i386-sco* | i386sco | sco) + basic_machine=i386-unknown + os=-scosysv322 + ;; + i386-isc* | isc) + basic_machine=i386-unknown + os=-iscsysv + ;; + i386v4*) + basic_machine=i386-unknown + os=-sysv4 + ;; + i386v) + basic_machine=i386-unknown + os=-sysv + ;; + spur) + basic_machine=spur-unknown + ;; + alliant) + basic_machine=alliant-alliant + ;; + convex-c1) + basic_machine=c1-convex + os=-sysv + ;; + convex-c2) + basic_machine=c2-convex + os=-sysv + ;; + convex-c32) + basic_machine=c32-convex + os=-sysv + ;; + convex-c34) + basic_machine=c34-convex + os=-sysv + ;; + convex-c38) + basic_machine=c38-convex + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + crds | unos) + basic_machine=m68k-crds + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + os=-sysv + ;; + genix) + basic_machine=ns32k-ns + ;; + iris | iris4d) + basic_machine=mips-sgi + os=-irix + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68k-att + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + pc532) + basic_machine=ns32k-pc532 + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun3) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + pbd) + basic_machine=sparc-unicom + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + ps2) + basic_machine=i386-ibm + ;; + next) + basic_machine=m68k-next + os=-sysv + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k31[0-9] | hp9k2[0-9][0-9]) + basic_machine=m68000-hp + ;; + hp9k8[0-9][0-9] | hp9k7[0-9][0-9] | hp8[0-9][0-9] | hp7[0-9][0-9]) + basic_machine=hp800-hp + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + miniframe) + basic_machine=m68000-convergent + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + decstation-dec | decstation | decstation-3100 | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amigados) + basic_machine=m68k-cbm + os=-amigados + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + delta88) + basic_machine=m88k-motorola + os=-m88kbcs + ;; + dpx2) + basic_machine=m68k-bull + os=-sysv + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + h8300hds) + basic_machine=h8300-hitachi + os=-hds + ;; + harris) + basic_machine=m88k-harris + os=-m88kbcs + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + os=-hpux + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + os=-hpux + ;; + ncr3000) + basic_machine=i386-ncr + os=-sysv4 + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + pn) + basic_machine=pn-gould + os=-sysv + ;; + np1) + basic_machine=np1-gould + os=-sysv + ;; + ultra3) + basic_machine=a29k-nyu +# Is sym1 really a different system, or is it really sysv? +# os=-sym1 + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + none) + basic_machine=none-none + os=-none + ;; - if [ "${cpu}" = "$1" ] ; then - # no vendor so this is an invalid name. - echo '***' Configuration \"$1\" not recognized 1>&2 +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + mips) + basic_machine=mips-mips + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + sparc) + basic_machine=sparc-sun + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 - else - # parse out vendor - rest=`echo $1 | sed "s/${cpu}-//"` - vendor=`echo ${rest} | sed 's/-.*$//'` - - if [ "${vendor}" = "${rest}" ] ; then - # a missing os is acceptable - os=none - else - os=`echo ${rest} | sed "s/${vendor}-//"` - fi - fi - ;; + ;; esac -# At this point we should have three parts of a canonical name in cpu, -# vendor, and os. - -# verify that the cpu is known. - -case "${cpu}" in -none | vax | tahoe | i386 | i860 | m68k | m68000 | m88k | sparc \ - | ns32k | alliant | arm | c1 | c2 | mips | pyramid | tron \ - | a29k | romp | rs6000 | i960 | xmp | ymp | cray2 | 580 | h8300) - ;; - -# start-sanitize-life -life) ;; -# end-sanitize-life +# Decode manufacturer-specific aliases for certain operating systems. +if [ "$os" ] +then +case $os in + # First accept the basic system types. + # The portable systems comes first. + # Each alternative must end in a *, to match a version number. + -bsd* | -sysv* | -mach* | -minix* | -genix* | -ultrix* \ + | -vms* | -sco* | -esix* | -isc* | -aix* | -sunos* | -hpux* \ + | -unos* | -osf* | -v88r* | -luna* | -dgux* | -solari* \ + | -amigados* | -msdos* \ + | -nindy* | -vxworks* | -ebmon* | -hds* | -m88kbcs*) + ;; # start-sanitize-v9 -sparc64) ;; + -v7 | -v9 | -hal32 | -hal64) ;; # end-sanitize-v9 -*) - echo '***' Invalid cpu \`${cpu}\': configuration \`$1\' not recognized 1>&2 - exit 1 - ;; + -newsos*) + os=-bsd + ;; + -osfrose*) + os=-osf + ;; + -osf*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -aos*) + os=-bsd + ;; + -ctix* | -irix* | -uts*) + os=-sysv + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $1 | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; esac +else -# verify that the vendor is known. - -case "${vendor}" in - altos | amd | amdahl | aout | apollo | att | bcs | bout |\ - cbm | convergent | convex | coff | cray | dec | encore |\ - gould | harris | hitachi | intel | isi | hp | ibm | little | mips | motorola | \ - ncr | next | none | nyu | sco | sequent | sgi | sony | sun |\ - unicom | utek | wrs | bull ) ;; - -# start-sanitize-life -philips) ;; -# end-sanitize-life - -# start-sanitize-v9 -hal) ;; -# end-sanitize-v9 - -*) - echo '***' Invalid vendor \`${vendor}\': configuration \`$1\' not recognized 1>&2 - exit 1 - ;; +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. +case $basic_machine in + *-dec | vax-*) + os=-ultrix42 + ;; + i386-sun) + os=-sunos402 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + sparc-* | *-sun) + os=-sunos411 + ;; + romp-*) + os=-bsd + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-sgi | i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-dg) + os=-dgux + ;; + m88k-omron*) + os=-luna + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i386-*) + os=-scosysv322 + ;; + *) + os=-none + ;; esac +fi -# verify that the os is known, if it exists. - -case "${os}" in -aix* | aout | bout | bsd* | coff | ctix* | dgux* | dynix* | esix* \ - | ebmon | hpux* \ - | hds | irix* | isc* | kern | mach* | msdos* | newsos* | nindy* | none \ - | osf* | sco* | sunos* | sysv* | ultrix* | unos* | v88r* \ - | vms* | vxworks* | sym[1-9]* | unicos* | uts | svr4 | m88kbcs \ - | amigados) - ;; - -# start-sanitize-v9 -hal32 | hal64 | v7 | v9) ;; -# end-sanitize-v9 - -*) - echo '***' Invalid os \`${os}\': configuration \`$1\' not recognized 1>&2 - exit 1 - ;; +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -hpux*) + vendor=hp + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; esac -echo ${cpu}-${vendor}-${os} +echo $basic_machine$os |