From: K. Richard Pixley Date: Thu, 12 Dec 1991 02:49:18 +0000 (+0000) Subject: copied from gcc/config.subr.fsf X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=65947468ea298f1e4fec5fead47c5a56469ae435;p=binutils-gdb.git copied from gcc/config.subr.fsf --- diff --git a/config.subr b/config.subr new file mode 100755 index 00000000000..42a1c3989b6 --- /dev/null +++ b/config.subr @@ -0,0 +1,375 @@ +#!/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. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# 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. + +# 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 + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# 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 + +# 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* | -c1* | \ + -c2* | -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 + ;; +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) + 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-* | c1-* | c2-* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + i386-sco* | 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 + ;; + c1) + basic_machine=c1-convex + ;; + c2) + basic_machine=c2-convex + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + merlin) + basic_machine=ns32k-merlin + ;; + crds | unos) + basic_machine=m68k-crds + ;; + encore) + basic_machine=ns32k-encore + ;; + genix) + basic_machine=ns32k-ns + ;; + iris | iris4d) + basic_machine=mips-sgi + ;; + news | news800) + basic_machine=m68k-sony + ;; + 3b1 | 7300 | 7300-att | att-7300) + basic_machine=m68k-att + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + balance) + basic_machine=ns32k-sequent + ;; + mmax) + basic_machine=ns32k-encore + ;; + pc532) + basic_machine=ns32k-pc532 + ;; + symmetry) + basic_machine=i386-sequent + ;; + sun2) + basic_machine=m68000-sun + ;; + sun3) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + pbd) + basic_machine=sparc-unicom + ;; + sun386 | sun386i) + basic_machine=i386-sun + ;; + ps2) + basic_machine=i386-ibm + ;; + next) + basic_machine=m68k-next + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k31[0-9] | hp9k2[0-9][0-9]) + basic_machine=m68000-hp + ;; + isi68) + basic_machine=m68k-isi + ;; + apollo68) + basic_machine=m68k-apollo + ;; + 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 + ;; + decstation-dec | decstation | decstation-3100 | pmax) + basic_machine=mips-dec + ;; + magnum | m3230) + basic_machine=mips-mips + ;; + gmicro) + basic_machine=tron-default + ;; + convex-c1) + basic_machine=c1-convex + ;; + convex-c2) + basic_machine=c2-convex + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; +# 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 + ;; +esac + +# 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*) + ;; + -newsos*) + os=-bsd + ;; + -osfrose*) + os=-osf + ;; + -osf*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -aos*) + os=-bsd + ;; + -ctix*) + 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 + +# 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=-bsd43 + ;; +esac +fi + +# 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 $basic_machine$os