X-Git-Url: https://repo.jachan.dev/binutils.git/blobdiff_plain/99a42820d9dc6b393e98446f726f51c702fce28b..9712c6e2003a6b55e95d6250a722cbe2d1cb31ac:/bfd/configure diff --git a/bfd/configure b/bfd/configure index 627867a3aa..9aa01f9443 100755 --- a/bfd/configure +++ b/bfd/configure @@ -1,45 +1,40 @@ #!/bin/sh -# Do not edit this file. It is generated automatically from configure.in -# and a configure template. +# Please do not edit this file. It is generated automatically from +# configure.in and a configure template. configdirs= #!/bin/sh -# Do not edit this file. It is generated automatically from configure.in -# and a configure template. -configdirs= # Configuration script template # Copyright (C) 1988, 1990, 1991 Free Software Foundation, Inc. #This file is part of GNU. -#GNU CC 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 1, or (at your option) -#any later version. - -#GNU CC 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 GNU CC; see the file COPYING. If not, write to -#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# This program 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. */ + +# $Id$ # # Shell script to create proper links to machine-dependent files in -# preparation for compiling gcc. -# -# Usage: configure [+srcdir=DIR] [+host=HOST] [+gas] [+nfp] TARGET +# preparation for compilation. # # If configure succeeds, it leaves its status in config.status. # If configure fails after disturbing the status quo, # config.status is removed. # -progname=$0 - remove=rm hard_link=ln symbolic_link='ln -s' @@ -49,594 +44,259 @@ symbolic_link='ln -s' #hard_link="echo ln" #symbolic_link="echo ln -s" +progname=$0 + # clear some things potentially inherited from environment. +ansi= +defaulttargets= +destdir= +fatal= +hostsubdir= +Makefile=Makefile +Makefile_in=Makefile.in +norecurse= +recursing= +removing= +srcdir= +srctrigger= target= +targets= +commontargets= +targetsubdir= template= -removing= -norecurse= -ansi= +verbose= for arg in $*; do - case $arg in - -ansi | +ansi) + case ${arg} in + -ansi | +a*) ansi=true + clib=clib + ;; + -destdir=* | +destdir=* | +destdi=* | +destd=* | +dest=* | +des=* | +de=* | +d=*) + destdir=`echo ${arg} | sed 's/[+-]d[a-z]*=//'` + ;; + -languages=* | +languages=* | +language=* | +languag=* \ + | +langua=* | +langu=* | +lang=* | +lan=* | +la=* \ + | +l=*) + languages="${languages} `echo ${arg} | sed 's/[+-]l[a-z]*=//'`" ;; - -template=* | +template=*) - template=`echo $arg | sed 's/[+-]template=//'` + -gas | +g*) + gas=yes + ;; + -help | +h*) + fatal=true ;; - -norecurse | +norecurse) + -nfp | +nf*) + nfp=yes + ;; + -norecurse | +no*) norecurse=true ;; - -rm | +rm) - removing=$arg + -recursing) + recursing=true ;; - -srcdir=* | +srcdir=* | +srcdi=* | +srcd=* | +src=* | +sr=* | +s=*) - srcdir=`echo $arg | sed 's/[+-]s[a-z]*=//'` + -rm | +r*) + removing=${arg} ;; - -host=* | +host=* | +hos=* | +ho=* | +h=*) - host=`echo $arg | sed 's/[+-]h[a-z]*=//'` - ;; - -languages=* | +languages=* | -languag=* | +languag=* | langua=* \ - | +langua=* | -langu=* | +langu=* | -lang=* | +lang=* | -lan=* \ - | +lan=* | -la=* | +la=* | -l=* | +l=*) - languages="$languages `echo $arg | sed 's/[+-]l[a-z]*=//'`" +# -srcdir=* | +srcdir=* | +srcdi=* | +srcd=* | +src=* | +sr=* | +s=*) +# srcdir=`echo ${arg} | sed 's/[+-]s[a-z]*=//'` +# ;; + -subdirs | +f* | +su*) + subdirs=${arg} ;; - -gas | +gas | +ga | +g) - gas=yes + -target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=*) + if [ -n "${targets}" ] ; then + subdirs="+subdirs" + fi + + newtargets="${targets} `echo ${arg} | sed 's/[+-]t[a-z]*=//'`" + targets="${newtargets}" ;; - -nfp | +nfp | +nf | +n) - nfp=yes + -template=* | +template=* | +templat=* | +templa=* | +templ=* | +temp=* | +tem=* | +te=*) + template=`echo ${arg} | sed 's/[+-]template=//'` + ;; + -v | -verbose | +v*) + verbose=${arg} + ;; + -* | +*) + (echo ; + echo "Unrecognized option: \"${arg}\"". ; + echo) 1>&2 + fatal=true ;; *) -# Allow configure HOST TARGET - if [ x$host = x ] ; then host=$target ; fi - target=$arg + if [ -n "${hosts}" ] ; then + subdirs="+subdirs" + fi + + newhosts="${hosts} ${arg}" + hosts=${newhosts} ;; esac done -# process host and target only if not rebuilding configure itself. -if [ -z "$template" ] -then +if [ -n "${verbose}" ] ; then + echo `pwd`/configure $* +fi + +# process host and target only if not rebuilding configure itself or removing. +if [ -z "${template}" -a -z "${removing}" -a -z "${fatal}" ] ; then # Complain if an arg is missing - if [ x$target = x ] - then - echo "Usage: $progname [+srcdir=DIR] [+host=HOST] [+gas] [+nfp] TARGET" - echo -n "Where HOST and TARGET are something like " - echo "\`vax', \`sun3', \`encore', etc." - if [ -r config.status ] - then - cat config.status - fi - exit 1 + if [ -z "${hosts}" ] ; then + (echo ; + echo "configure: No HOST specified." ; + echo) 1>&2 + fatal=true fi +fi - # Default other arg - if [ x$host = x ] - then - host=$target +if [ -n "${fatal}" -o "${hosts}" = "help" ] ; then + (echo "Usage: configure HOST" ; + echo ; + echo "Options: [defaults in brackets]" ; + echo " +ansi configure w/ANSI library. [no ansi lib]" ; + echo " +destdir=MYDIR configure for installation into MYDIR. [/usr/local]" ; + echo " +subdirs configure in subdirectories. [in source directories]" ; + echo " +lang=LANG configure to build LANG. [gcc]" ; + echo " +help print this message. [normal config]" ; + echo " +gas configure the compilers for use with gas. [native as]" ; + echo " +nfp configure the compilers default to soft floating point. [hard float]" ; + echo " +norecurse configure this directory only. [recurse]" ; + echo " +rm remove this configuration. [build a configuration]" ; + echo " +target=TARGET configure for TARGET. [TARGET = HOST]" ; + echo " +template=TEM rebuild configure using TEM. [normal config]" ; + echo ; + echo "Where HOST and TARGET are something like \"vax\", \"sun3\", \"encore\", etc." ; + echo "Asking for more than one \"+target\" implies \"+subdirs\". Any other" ; + echo "options given will apply to all targets.") 1>&2 + + if [ -r config.status ] ; then + cat config.status fi - # Decode the host machine, then the target machine. - # For the host machine, we save the xm_file variable as host_xm_file; - # then we decode the target machine and forget everything else - # that came from the host machine. - for machine in $host $target; do - - # Separate what the user gave into CPU/company and OS (if any). - basic_machine=`echo $machine | sed 's/-[^-]*$//'` - if [ $basic_machine != $machine ] - then os=`echo $machine | sed 's/[^-]*-/-/'` - else os=; fi - - # Decode aliases for certain machine/company combinations. - case $basic_machine in - 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 - ;; - vax/dec) - basic_machine=vax - ;; - balance) - basic_machine=ns32k/sequent - ;; - symmetry) - basic_machine=i386/sequent - ;; - sun2) - basic_machine=m68000/sun - ;; - sun3) - basic_machine=m68k/sun - ;; - sun4) - basic_machine=sparc/sun - ;; - 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 | decstation-3100 | pmax) - basic_machine=mips/dec - ;; - gmicro) - basic_machine=tron - ;; - convex-c1) - basic_machine=c1/convex - ;; - convex-c2) - basic_machine=c2/convex - ;; - esac + exit 1 +fi - # Decode manufacturer-specific aliases for certain operating systems. +#### configure.in common parts come in here. +# This file is a shell script that supplies the information necessary +# to tailor a template configure script into the configure script +# appropriate for this directory. For more information, check any +# existing configure script. - case $os in - -newsos*) - os=-bsd - ;; - -ultrix*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -ctix*) - os=-sysv - ;; - esac +srctrigger=libbfd.c +srcname="bfd" - machine=$basic_machine$os +## end of common part. - cpu_type= - xm_file= - tm_file= - make_var_file= +# are we rebuilding config itself? +if [ -n "${template}" ] ; then + if [ ! -r ${template} ] ; then + echo '***' "Can't find template ${template}." 1>&2 + exit 1 + fi - case $machine in - vax | vax-bsd*) # vaxen running BSD - ;; - vax-vms | vms) # vaxen running VMS - cpu_type=vax - xm_file=xm-vms.h - tm_file=tm-vms.h - ;; - vax-sysv* | vaxv) # vaxen running system V - cpu_type=vax - xm_file=xm-vaxv.h - tm_file=tm-vaxv.h - ;; - tahoe | tahoe-bsd*) # tahoe running BSD - ;; - tahoe/harris*) # Harris tahoe, using COFF. - cpu_type=tahoe - ;; - i386/sequent* | i386/sequent-bsd*) # 80386 from Sequent - cpu_type=i386 - xm_file=xm-i386.h - tm_file=tm-seq386.h - ;; - i386-mach | i386/*-mach) - cpu_type=i386 - xm_file=xm-i386.h - tm_file=tm-i386gas.h - ;; - i386/sco | i386/sco-sysv* | i386/*-sco) # 80386 running SCO system - cpu_type=i386 - xm_file=xm-i386v.h - tm_file=tm-i386sco.h - make_var_file=make-i386sco - ;; - i386/isc | i386/isc-sysv* | i386/*-isc) # 80386 running ISC system - cpu_type=i386 - xm_file=xm-i386v.h - tm_file=tm-i386isc.h - make_var_file=make-i386isc - ;; - i386/ibm | i386-aix | i386/ibm-aix) # IBM PS/2 running AIX - cpu_type=i386 - tm_file=tm-i386v.h - xm_file=xm-i386v.h - make_var_file=make-i386v - ;; - i386/sun*) - cpu_type=i386 - xm_file=xm-sun386i.h - tm_file=tm-sun386i.h - ;; - i386-sysv4 | i386/*-sysv4 | i386v4) # Intel 80386's running system V.4 - cpu_type=i386 - xm_file=xm-i386v.h - make_var_file=make-i386v - tm_file=tm-i386v4.h - ;; - i386-sysv* | i386/*-sysv* | i386v) # Intel 80386's running system V - cpu_type=i386 - xm_file=xm-i386v.h - make_var_file=make-i386v - if [ x$gas = xyes ] - then - tm_file=tm-i386gas.h - else - tm_file=tm-i386v.h - fi - ;; - i860 | i860-sysv* | i860/*-sysv*) - cpu_type=i860 - if [ x$gas = xyes ] - then - tm_file=tm-i860g.h - else - tm_file=tm-i860.h - fi - ;; - i860-bsd* | i860/*-bsd*) - cpu_type=i860 - if [ x$gas = xyes ] - then - tm_file=tm-i860bsdg.h - else - tm_file=tm-i860bsd.h - fi - ;; - sparc | sparc/* | sparc-*os4 | sparc/*-*os4) - cpu_type=sparc - tm_file=tm-sparc.h - ;; - sparc-*os3 | sparc/*-*os3) - cpu_type=sparc - tm_file=tm-sun4os3.h - ;; - m68k/next) - cpu_type=m68k - tm_file=tm-next.h - out_file=out-next.c - xm_file=xm-next.h - ;; - m68k/sun-*os3) - cpu_type=m68k - if [ x$nfp = xyes ] - then - tm_file=tm-sun3os3nf.h - else - tm_file=tm-sun3os3.h - fi - ;; - m68k/sun-mach) - cpu_type=m68k - tm_file=tm-sun3mach.h - ;; - m68k/sun | m68k/sun-*os4) - cpu_type=m68k - if [ x$nfp = xyes ] - then - tm_file=tm-sun3nfp.h - else - tm_file=tm-sun3.h - fi - ;; - m68k/hp | m68k/hp-hpux*) # HP 9000 series 300 - cpu_type=m68k - xm_file=xm-hp9k320.h - if [ x$gas = xyes ] - then - make_var_file=make-hp9k320g - tm_file=tm-hp9k320g.h - else - make_var_file=make-hp9k320 - tm_file=tm-hp9k320.h - fi - ;; - m68k/hp-bsd*) # HP 9000/3xx running Berkeley Unix - cpu_type=m68k - tm_file=tm-hp9k3bsd.h - ;; - m68k/isi | m68k/isi-bsd*) - cpu_type=m68k - if [ x$nfp = xyes ] - then - tm_file=tm-isi68-nfp.h - else - tm_file=tm-isi68.h - fi - ;; - m68k/sony | m68k/sony-bsd*) - xm_file=xm-m68k.h - cpu_type=m68k - if [ x$gas = xyes ] - then - tm_file=tm-newsgas.h - else - tm_file=tm-news.h - fi - ;; - m68k/altos | m68k/altos-sysv*) # Altos 3068 - cpu_type=m68k - if [ x$gas = xyes ] - then - xm_file=xm-altos3068.h - tm_file=tm-altos3068.h - else - echo "The Altos is supported only with the GNU assembler" 1>&2 - exit 1 - fi - ;; - m68k/motorola | m68k/motorola-sysv*) - cpu_type=m68k - tm_file=tm-mot3300.h - xm_file=xm-mot3300.h - ;; - m68k/crds | m68k/crds-unos | m68k-unos | crds | unos) - cpu_type=m68k - xm_file=xm-crds.h - make_var_file=make-crds - tm_file=tm-crds.h - ;; - m68k/apollo) - cpu_type=m68k - make_var_file=make-apollo68 - tm_file=tm-apollo68.h - ;; - m68k/ncr | m68k/ncr-sysv*) # NCR Tower 32 SVR3 - cpu_type=m68k - tm_file=tm-tower-as.h - xm_file=xm-tower.h - ;; - m68000/sun | m68000/sun-*os3) - cpu_type=m68k - tm_file=tm-sun2.h - ;; - m68000/sun-*os4) - cpu_type=m68k - tm_file=tm-sun2os4.h - ;; - m68000/hp | m68000/hp-hpux*) # HP 9000 series 300 - cpu_type=m68k - xm_file=xm-hp9k310.h - if [ x$gas = xyes ] - then - make_var_file=make-hp9k320g - tm_file=tm-hp9k310g.h - else - make_var_file=make-hp9k320 - tm_file=tm-hp9k310.h - fi - ;; - m68000/hp-bsd*) # HP 9000/200 running BSD - cpu_type=m68k - tm_file=tm-hp9k2bsd.h - make_var_file=make-hp9k2bsd - ;; - m68000/att | m68000/att-sysv*) - cpu_type=m68k - xm_file=xm-3b1.h - if [ x$gas = xyes ] - then - tm_file=tm-3b1g.h - else - tm_file=tm-3b1.h - fi - ;; - m68000/convergent | m68000/convergent-sysv*) - cpu_type=m68k - xm_file=xm-3b1.h - tm_file=tm-ctix.h - ;; - ns32k/sequent | ns32k/sequent-bsd*) - cpu_type=ns32k - tm_file=tm-sequent.h - ;; - ns32k/encore | ns32k/encore-bsd* | encore | encore-bsd*) - cpu_type=ns32k - tm_file=tm-encore.h - ;; - ns32k-genix* | ns32k/*-genix* | genix) - cpu_type=ns32k - xm_file=xm-genix.h - make_var_file=make-genix - tm_file=tm-genix.h - ;; - merlin) - cpu_type=ns32k - ;; - m88k/dg | m88k/dg-dgux* | m88k-dgux*) - cpu_type=m88k - xm_file=xm-m88kdgux.h - make_var_file=make-m88kdgux - tm_file=tm-m88kdgux.h - ;; - m88k-v88r32 | m88k/*-v88r32) - cpu_type=m88k - tm_file=tm-v88r32.h - xm_file=xm-v88r32.h - ;; - m88k-sysv* | m88k/*-sysv*) - cpu_type=m88k - tm_file=tm-m88ksvr4.h - xm_file=xm-m88ksvr4.h - ;; - alliant | alliant/alliant) # Alliant FX/8 - cpu_type=alliant - tm_file=tm-alliant.h - ;; - c1/convex) # Convex C1 - if [ -r /usr/include/stdlib.h ] - then - tm_file=tm-convex1.h - else - tm_file=tm-conv1os7.h - fi - cpu_type=convex - ;; - c2/convex) # Convex C2 - if [ -r /usr/include/stdlib.h ] - then - tm_file=tm-convex2.h - else - tm_file=tm-conv2os7.h - fi - cpu_type=convex - ;; - mips/sgi | mips/sgi-sysv*) # Mostly like a MIPS. - cpu_type=mips - tm_file=tm-iris.h - xm_file=xm-iris.h - ;; - mips | mips/mips) # Default MIPS environment. - ;; - mips/dec | mips/dec-bsd*) # Decstation. - cpu_type=mips - tm_file=tm-decstatn.h - ;; - mips/sony | mips/sony-bsd*) # Sony NEWS 3600 or risc/news. - cpu_type=mips - tm_file=tm-mips-news.h - ;; - mips/*-sysv* | mips-sysv*) # SYSV variant of MIPS system. - cpu_type=mips - tm_file=tm-mips-sysv.h - ;; - mips/*-bsd* | mips-bsd*) # BSD 4.3 variant of MIPS system. - cpu_type=mips - tm_file=tm-mips-bsd.h - ;; - pyramid | pyramid/* | pyramid-*) - cpu_type=pyr - tm_file=tm-pyr.h - ;; - tron | tron/*) - cpu_type=gmicro - tm_file=tm_gmicro.h - ;; - a29k-bsd* | a29k/*-bsd*) - cpu_type=a29k - tm_file=tm-a29kunix.h - ;; - i960) # Default i960 environment. - ;; - # 370) - # ;; - esac - if [ x$pass1done = x ] - then - if [ x$cpu_type = x ]; then cpu_type=$host; fi - if [ x$xm_file = x ]; then host_xm_file=xm-$cpu_type.h - else host_xm_file=$xm_file - fi - if [ x$make_var_file = x ] - then make_var_file=make-$cpu_type; fi - host_make_var_file=$make_var_file - pass1done=yes +# prep the template + sed -e '/^#### configure.in common parts come in here.$/,/^## end of common part.$/c\ +#### configure.in common parts come in here.\ +## end of common part.' \ + -e '/^#### configure.in per-host parts come in here.$/,/^## end of per-host part.$/c\ +#### configure.in per-host parts come in here.\ +## end of per-host part.' \ + -e '/^#### configure.in per-target parts come in here.$/,/^## end of per-target part.$/c\ +#### configure.in per-target parts come in here.\ +## end of per-target part.' \ + -e '/^#### configure.in post-target parts come in here.$/,/^## end of post-target part.$/c\ +#### configure.in post-target parts come in here.\ +## end of post-target part.' \ + < ${template} > template.new + + if [ -r configure.in ] ; then + if [ -z "`grep '^# per\-host:' configure.in`" ] ; then + echo '***' `pwd`/configure.in has no "per-host:" line. 1>&2 + exit 1 fi - done - # Default the machine-specific variables that were not explicitly set. - if [ x$cpu_type = x ] - then cpu_type=$target; fi + if [ -z "`grep '^# per\-target:' configure.in`" ] ; then + echo '***' `pwd`/configure.in has no "per-target:" line. 1>&2 + exit 1 + fi - if [ x$tm_file = x ] - then tm_file=tm-$target.h; fi + # split configure.in into common, per-host, per-target, + # and post-target parts. Post-target is optional. + sed -e '/^# per\-host:/,$d' configure.in > configure.com + sed -e '1,/^# per\-host:/d' -e '/^# per\-target:/,$d' configure.in > configure.hst + if grep -s '^# post-target:' configure.in ; then + sed -e '1,/^# per\-target:/d' -e '/^# post\-target:/,$d' configure.in > configure.tgt + sed -e '1,/^# post\-target:/d' configure.in > configure.pos + else + sed -e '1,/^# per\-target:/d' configure.in > configure.tgt + echo >configure.pos + fi - md_file=${cpu_type}.md + # and insert them + sed -e '/^#### configure.in common parts come in here.$/ r configure.com' \ + -e '/^#### configure.in per\-host parts come in here.$/ r configure.hst' \ + -e '/^#### configure.in per\-target parts come in here.$/ r configure.tgt' \ + -e '/^#### configure.in post\-target parts come in here.$/ r configure.pos' \ + template.new > configure.new - if [ x$out_file = x ] - then out_file=out-$cpu_type.c; fi -fi + rm -f configure.com configure.tgt configure.hst configure.pos + else + echo Warning: no configure.in in `pwd` + cat ${template} >> configure + fi -#### configure.in files go here. -### end of configure.in + chmod a+x configure.new + rm template.new +# mv configure configure.old + mv configure.new configure -# are we rebuilding config itself? -if [ -n "$template" ] -then - if [ ! -r $template ] - then - echo "Can't find template ${template}." - exit 1 + if [ -n "${verbose}" ] ; then + echo Rebuilt configure in `pwd` fi - mv configure configure.old - echo "#!/bin/sh" > configure - echo "# Do not edit this file. It is generated automatically from configure.in" >> configure - echo "# and a configure template." >> configure - echo "configdirs=" >> configure - echo >> configure + # Now update config.sub from the template directory. + if echo "$template" | grep -s 'configure$' ; then + cp `echo "$template" | sed s/configure$/config.sub/` ./config.sub.new + # mv config.sub config.sub.old + mv config.sub.new config.sub - if [ -r configure.in ] - then - sed -e "/^####/ r configure.in" $template >> configure - else - cat $template >> configure + if [ -n "${verbose}" ] ; then + echo Rebuilt config.sub in `pwd` + fi fi - chmod a+x configure - rm configure.old -# echo Rebuilt configure in `pwd` from ${template}. - echo Rebuilt configure in `pwd` + if [ -z "${norecurse}" ] ; then + # If template is relative path, make it absolute for recursing. + if echo "${template}" | grep -s '^/' ; then + true + else + template=`pwd`/${template} + fi - if [ x$norecurse = x ] - then - while [ -n "$configdirs" ] - do + while [ -n "${configdirs}" ] ; do # set configdir to car of configdirs, configdirs to cdr of configdirs - set $configdirs; configdir=$1; shift; configdirs=$* + set ${configdirs}; configdir=$1; shift; configdirs=$* - if [ "`echo ${configdir}.*`" != "${configdir}.*" ] - then + if [ "`echo ${configdir}.*`" != "${configdir}.*" ] ; then targetspecificdirs=${configdir}.* else targetspecificdirs= fi - for i in ${configdir} ${targetspecificdirs} - do - if [ -r $i/configure ] - then - (cd $i ; - configure +template=${template}) + for i in ${configdir} ${targetspecificdirs} ; do + if [ -d $i ] ; then + if [ -r $i/configure ] ; then + (cd $i ; + ./configure +template=${template} ${verbose}) + else + echo Warning: No configure script in `pwd`/$i + fi else - echo No configure script in `pwd`/$i + if [ -n "${verbose}" ] ; then + echo Warning: directory $i is missing. + fi fi done done @@ -645,201 +305,515 @@ then exit 0 fi -# Temporarily, we support only direct subdir builds. -hostsubdir=Host-$host -targetsubdir=Target-$target - -if [ -n "$removing" ] -then - rm -rf $hostsubdir/$targetsubdir +# some sanity checks on configure.in +if [ -z "${srctrigger}" ] ; then + echo Warning: srctrigger not set in configure.in. `pwd` not configured. + exit 1 +fi - if [ -z "`(ls $hostsubdir) 2>&1 | grep Target-`" ] - then - rm -rf $hostsubdir +for host in ${hosts} ; do + # Default other arg + if [ -z "${targets}" -o -n "${defaulttargets}" ] ; then + targets=${host} + defaulttargets=true fi + + result=`/bin/sh ./config.sub ${host}` + host_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` + host_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` + host_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` + host=${host_cpu}-${host_vendor}-${host_os} + host_makefile_frag=config/hmake-${host} + +#### configure.in per-host parts come in here. + +if [ "${host_os}" = "posix" ] ; then + bfd_host=posix else - if [ ! -d $hostsubdir ] ; then mkdir $hostsubdir ; fi - cd $hostsubdir - - if [ ! -d $targetsubdir ] ; then mkdir $targetsubdir ; fi - cd $targetsubdir - - srcdir=../.. - - ## Find the source files, if location was not specified. - #if [ x$srcdir = x ] - #then - # srcdirdefaulted=1 - # srcdir=. - # if [ ! -r ${srctrigger} ] - # then - # srcdir=.. - # fi - #fi - # - #if [ ! -r ${srcdir}/${srctrigger} ] - #then - # if [ x$srcdirdefaulted = x ] - # then - # echo "$progname: Can't find ${srcname} sources in \`${srcdir}'." 1>&2 - # else - # echo "$progname: Can't find ${srcname} sources in \`.' or \`..'." 1>&2 - # fi - # exit 1 - #fi - - - - # Set up the list of links to be made. - # $links is the list of link names, and $files is the list of names to link to. - - # Make the links. - while [ -n "$files" ] - do - # set file to car of files, files to cdr of files - set $files; file=$1; shift; files=$* - set $links; link=$1; shift; links=$* - - if [ ! -r ${srcdir}/config/$file ] - then - echo "$progname: cannot create a link \`$link'," 1>&2 - echo "since the file \`config/$file' does not exist." 1>&2 - exit 1 - fi + case "${host_cpu}" in + rs6000) bfd_host=aix ;; + mips) + case "${host_vendor}" in + dec) bfd_host=dec3100 ;; + esac + ;; + m88k) + case "${host_vendor}" in + *) + case "${host_os}" in + dgux) bfd_host=dgux ;; + esac + ;; + esac + ;; - $remove -f $link - rm -f config.status - # Make a symlink if possible, otherwise try a hard link - $symbolic_link ${srcdir}/config/$file $link 2>/dev/null || $hard_link ${srcdir}/config/$file $link + m68k) + case "${host_vendor}" in + hp) + case "${host_os}" in + hpux) bfd_host=hp9000 ;; + bsd) bfd_host=hp300bsd ;; + esac + ;; + sony) bfd_host=news ;; + sun) bfd_host=sun3 ;; + esac + ;; - if [ ! -r $link ] - then - echo "$progname: unable to link \`$link' to \`${srcdir}/config/$file'." 1>&2 - exit 1 - fi - echo "Linked \`$link' to \`${srcdir}/config/$file'." - done - - # Install a makefile, and make it set VPATH - # if necessary so that the sources are found. - # Also change its value of srcdir. - # Also create a .gdbinit file which runs the one in srcdir - # and tells GDB to look there for source files. - case $srcdir in - .) + i386) + case "${host_vendor}" in + *) + case "${host_os}" in + sysv) bfd_host=i386v ;; + esac + ;; + esac ;; - *) - echo "VPATH = ${srcdir}" > x - cat x ${srcdir}/Makefile.in | sed "s@^srcdir = \.@srcdir = ${srcdir}@" > Makefile.in - rm x - echo "dir ." > .gdbinit - echo "dir ${srcdir}" >> .gdbinit - echo "source ${srcdir}/.gdbinit" >> .gdbinit + + sparc) + case "${host_vendor}" in + sun) bfd_host=sun4 ;; + esac ;; + + rtpc) bfd_host=rtbsd ;; + tahoe | vax) bfd_host=${host_cpu} ;; esac +fi - host_var_file=hmake-${host} - target_var_file=tmake-${target} +if [ ! -f config/hmake-${bfd_host} ] ; then + echo '***' BFD does not support host ${host}: no file config/hmake-${bfd_host} + exit 1 +fi - # Conditionalize the makefile for this machine. - if [ -f ${srcdir}/config/${host_var_file} ] - then - sed -e "/^####/ r ${srcdir}/config/${host_var_file}" Makefile.in > Makefile.tem - else - cp Makefile.in Makefile.tem - fi +host_makefile_frag=config/hmake-${bfd_host} - if [ -f ${srcdir}/config/${target_var_file} ] - then - sed -e "/^####/ r ${srcdir}/config/${target_var_file}" Makefile.tem > Makefile.tem1 - mv Makefile.tem1 Makefile.tem - fi +## end of per-host part. - # Remove all formfeeds, since some Makes get confused by them. - sed "s/ //" Makefile.tem >> Makefile.tem1 - mv Makefile.tem1 Makefile.tem + for target in ${targets} ; do - # reset SUBDIRS - sed "s:^SUBDIRS =.*$:SUBDIRS = ${configdirs}:" Makefile.tem > Makefile.tem1 - mv Makefile.tem1 Makefile.tem + result=`/bin/sh ./config.sub ${target}` + target_cpu=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` + target_vendor=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` + target_os=`echo $result | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` + target=${target_cpu}-${target_vendor}-${target_os} + target_makefile_frag=config/tmake-${target} - # reset NONSUBDIRS - sed "s:^NONSUBDIRS =.*$:NONSUBDIRS = ${noconfigdirs}:" Makefile.tem > Makefile.tem1 - mv Makefile.tem1 Makefile.tem +#### configure.in per-target parts come in here. - # Delete the intermediate files - if [ x$srcdir != x. ] ; then rm Makefile.in ; fi +case "${target_vendor}" in +aout | coff | bout) bfd_target=${target_cpu}-${target_vendor} ;; +sony) bfd_target=news ;; +intel) bfd_target=${target_cpu}-coff ;; +wrs) + case "${target_cpu}" in + i960) bfd_target=i960-bout ;; + m68k) bfd_target=m68k-aout ;; + esac + ;; +sun) + case "${target_cpu}" in + m68k) bfd_target=m68k-aout ;; + sparc) bfd_target=sparc-aout ;; + esac + ;; +dec) + case "${target_cpu}" in + mips) bfd_target=dec3100 ;; + esac + ;; +hp) + case "${target_cpu}" in + m68k) + case "${target_os}" in + hpux) bfd_target=hp9000 ;; + bsd) bfd_target=hp300bsd ;; + esac + ;; + esac + ;; +none) + case "${target_cpu}" in + i386) bfd_target=i386-coff ;; + esac + ;; +*) + case "${target_cpu}" in + tahoe | vax) bfd_target=${target_cpu} ;; + esac + ;; +esac - rm -f Makefile +if [ ! -f config/tmake-${bfd_target} ] ; then + echo '***' BFD does not support target ${target}: no file config/tmake-${bfd_target} + exit 1 +fi - # Define macro CROSS_COMPILE in compilation if this is a cross-compiler. - if [ x$host != x$target ] - then - echo "CROSS=-DCROSS_COMPILE" > Makefile - echo "ALL=start.encap" >> Makefile - else - echo "ALL=all.internal" > Makefile - fi +target_makefile_fragment=config/tmake-${bfd_target} - # set target and host - echo "host = $host" >> Makefile - echo "target = $target" >> Makefile +files= +links= +## end of per-target part. - cat Makefile.tem >> Makefile - rm Makefile.tem + # Temporarily, we support only direct subdir builds. + hostsubdir=Host-${host} + targetsubdir=Target-${target} - using= - if [ -f ${srcdir}/config/${host_var_file} ] - then - using=" using \"${host_var_file}\"" - fi + if [ -n "${removing}" ] ; then + if [ -n "${subdirs}" ] ; then + if [ -d "${hostsubdir}" ] ; then + rm -rf ${hostsubdir}/${targetsubdir} - if [ -f ${srcdir}/config/${target_var_file} ] - then - if [ -z "${using}" ] - then - andusing=" using \"${target_var_file}\"" + if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target- | grep -v Target-independent`" ] ; then + rm -rf ${hostsubdir} + fi + else + echo Warning: no `pwd`/${hostsubdir} to remove. + fi + else + rm -f ${Makefile} config.status ${links} + fi else - andusing="${using} and \"${target_var_file}\"" + if [ -n "${subdirs}" ] ; then + # check for existing status before allowing forced subdirs. + if [ -f ${Makefile} ] ; then + echo '***' "${Makefile} already exists in source directory. `pwd` not configured." 1>&2 + exit 1 + fi + + if [ ! -d ${hostsubdir} ] ; then mkdir ${hostsubdir} ; fi + cd ${hostsubdir} + + if [ ! -d ${targetsubdir} ] ; then + if [ -z "${commontargets}" ] ; then + mkdir ${targetsubdir} + else + if [ ! -d Target-independent ] ; then + mkdir Target-independent + fi + + ${symbolic_link} Target-independent ${targetsubdir} + fi # if target independent + fi # if no target dir yet + + cd ${targetsubdir} + + srcdir=../.. + else + # if not subdir builds, then make sure none exist. + if [ -n "`(ls .) 2>&1 | grep Host-`" ] ; then + echo '***' "Configured subdirs exist. `pwd` not configured." 1>&2 + exit 1 + fi + fi + + # Find the source files, if location was not specified. + if [ -z "${srcdir}" ] ; then + srcdirdefaulted=1 + srcdir=. + if [ -n "${srctrigger}" -a ! -r ${srctrigger} ] ; then + srcdir=.. + fi + fi + + if [ -n "${srctrigger}" -a ! -r ${srcdir}/${srctrigger} ] ; then + if [ -z "${srcdirdefaulted}" ] ; then + echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/${srcdir}" 1>&2 + else + echo '***' "${progname}: Can't find ${srcname} sources in `pwd`/. or `pwd`/.." 1>&2 + fi + + echo '***' \(At least ${srctrigger} is missing.\) 1>&2 + exit 1 + fi + + # Set up the list of links to be made. + # ${links} is the list of link names, and ${files} is the list of names to link to. + + # Make the links. + while [ -n "${files}" ] ; do + # set file to car of files, files to cdr of files + set ${files}; file=$1; shift; files=$* + set ${links}; link=$1; shift; links=$* + + if [ ! -r ${srcdir}/${file} ] ; then + echo '***' "${progname}: cannot create a link \"${link}\"," 1>&2 + echo '***' "since the file \"${file}\" does not exist." 1>&2 + exit 1 + fi + + ${remove} -f ${link} + rm -f config.status + # Make a symlink if possible, otherwise try a hard link + ${symbolic_link} ${srcdir}/${file} ${link} 2>/dev/null || ${hard_link} ${srcdir}/${file} ${link} + + if [ ! -r ${link} ] ; then + echo '***' "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2 + exit 1 + fi + + if [ -n "${verbose}" ] ; then + echo "Linked \"${link}\" to \"${srcdir}/${file}\"." + fi + done + + # Create a .gdbinit file which runs the one in srcdir + # and tells GDB to look there for source files. + + case ${srcdir} in + .) + ;; + *) + echo "dir ." > .gdbinit + echo "dir ${srcdir}" >> .gdbinit + echo "source ${srcdir}/.gdbinit" >> .gdbinit + ;; + esac + + # Install a makefile, and make it set VPATH + # if necessary so that the sources are found. + # Also change its value of srcdir. + + # FIXME-someday: This business of always writing to .tem and mv back + # is so that I don't screw things up while developing. Once this + # template is stable, these should be optimized. xoxorich. + + # Define macro CROSS_COMPILE in compilation if this is a cross-compiler. + if [ "${host}" != "${target}" ] ; then + echo "CROSS=-DCROSS_COMPILE" > ${Makefile} + echo "ALL=start.encap" >> ${Makefile} + else + echo "ALL=all.internal" > ${Makefile} + fi + + # set target, host, VPATH + echo "host = ${host}" >> ${Makefile} + echo "target = ${target}" >> ${Makefile} + + if [ -n "${subdirs}" ] ; then + echo "subdir = /${hostsubdir}/${targetsubdir}" >> ${Makefile} + else + echo "subdir =" >> ${Makefile} + fi + + # echo "workdir = `pwd`" >> ${Makefile} + echo "VPATH = ${srcdir}" >> ${Makefile} + + # add "Makefile.in" (or whatever it's called) + cat ${srcdir}/${Makefile_in} >> ${Makefile} + + # Conditionalize the makefile for this host. + if [ -f ${srcdir}/${host_makefile_frag} ] ; then + sed -e "/^####/ r ${srcdir}/${host_makefile_frag}" ${Makefile} > Makefile.tem + mv Makefile.tem ${Makefile} + fi + + # Conditionalize the makefile for this target. + if [ -f ${srcdir}/${target_makefile_frag} ] ; then + sed -e "/^####/ r ${srcdir}/${target_makefile_frag}" ${Makefile} > Makefile.tem + mv Makefile.tem ${Makefile} + fi + + # set srcdir + sed "s@^srcdir = \.@srcdir = ${srcdir}@" ${Makefile} > Makefile.tem + mv Makefile.tem ${Makefile} + + # set destdir + if [ -n "${destdir}" ] ; then + sed "s:^destdir =.*$:destdir = ${destdir}:" ${Makefile} > Makefile.tem + mv Makefile.tem ${Makefile} + fi + + # reset SUBDIRS + sed "s:^SUBDIRS =.*$:SUBDIRS = ${configdirs}:" ${Makefile} > Makefile.tem + mv Makefile.tem ${Makefile} + + # reset NONSUBDIRS + sed "s:^NONSUBDIRS =.*$:NONSUBDIRS = ${noconfigdirs}:" ${Makefile} > Makefile.tem + mv Makefile.tem ${Makefile} + + using= + if [ -f ${srcdir}/${host_makefile_frag} ] ; then + using=" using \"${host_makefile_frag}\"" + fi + + if [ -f ${srcdir}/${target_makefile_frag} ] ; then + if [ -z "${using}" ] ; then + andusing=" using \"${target_makefile_frag}\"" + else + andusing="${using} and \"${target_makefile_frag}\"" + fi + else + andusing=${using} + fi + + if [ -n "${verbose}" -o -z "${recursing}" ] ; then + echo "Created \"${Makefile}\"" in `pwd`${andusing}. + fi + +#### configure.in post-target parts come in here. + +## end of post-target part. + + if [ "${host}" = "${target}" ] ; then + echo "Links are now set up for use with a ${target}." \ + > config.status + # | tee ${srcdir}/config.status + else + echo "Links are now set up for host ${host} and target ${target}." \ + > config.status + # | tee ${srcdir}/config.status + fi + + originaldir=`pwd` + cd ${srcdir} fi - else - andusing=${using} - fi - echo "Created \"Makefile\""${andusing}. + # If there are subdirectories, then recurse. + if [ -z "${norecurse}" -a -n "${configdirs}" ] ; then + for configdir in ${configdirs} ; do + if [ -n "${verbose}" ] ; then + echo Configuring ${configdir}... + fi - if [ x$host = x$target ] - then - echo "Links are now set up for use with a $target." \ - | tee ${srcdir}/config.status - else - echo "Links are now set up for host $host and target $target." \ - | tee ${srcdir}/config.status - fi + if [ -d ${configdir} ] ; then + (cd ${configdir} ; + ./configure -recursing ${host} +target=${target} \ + ${verbose} ${subdirs} ${removing} +destdir=${destdir}) \ + | sed 's/^/ /' + else + if [ -n "${verbose}" ] ; then + echo Warning: directory \"${configdir}\" is missing. + fi + fi + done + fi + done # for each target - cd ${srcdir} -fi + # Now build a Makefile for this host. + if [ -n "${subdirs}" -a ! -n "${removing}" ] ; then + cd ${hostsubdir} + cat > GNUmakefile << E!O!F +# Makefile generated by configure for host ${host}. -# If there are subdirectories, then recurse. +ALL := $(shell ls -d Target-*) -if [ x$norecurse != x ] ; then exit 0 ; fi +%: + $(foreach subdir,$(ALL),$(MAKE) -C $(subdir) \$@ &&) true -while [ -n "$configdirs" ] -do - # set configdir to car of configdirs, configdirs to cdr of configdirs - set $configdirs; configdir=$1; shift; configdirs=$* - - # check for target override - targetspecificdir=${configdir}.${target} - if [ -d ${targetspecificdir} ] - then - configdir=${targetspecificdir} +all: +E!O!F + cd .. fi - - echo Configuring ${configdir}... - (cd ${configdir} ; - configure +host=${host} ${target} ${removing}) \ - | sed 's/^/ /' -done +done # for each host exit 0 + +# +# $Log$ +# Revision 1.23 1991/08/23 04:48:43 rich +# Minor config polish. +# +# Revision 1.22 1991/08/23 03:31:43 rich +# Minor polish & config mapping. +# +# Revision 1.30 1991/08/22 07:15:51 rich +# Three part names, etc. +# +# Revision 1.29 1991/08/20 04:56:51 rich +# revisiting error messages +# +# Revision 1.28 1991/08/16 19:22:17 rich +# This is the commontargets change and should be considered +# experimental. +# +# Revision 1.27 1991/08/08 01:14:13 rich +# allow +f to stand in for +subdirs +# +# Revision 1.26 1991/08/07 19:21:32 rich +# +forcesubdirs -> +subdirs +# +# Revision 1.25 1991/08/07 07:05:30 rich +# Added make. +# +# Revision 1.24 1991/08/06 19:26:01 rich +# revised option parsing. +# +# Revision 1.23 1991/08/06 19:12:32 rich +# Host-level GNUmakefiles. +# +# Revision 1.22 1991/07/20 01:22:30 rich +# propogate gdb changes and destdir fix +# +# Revision 1.21 1991/07/20 00:55:20 gnu +# Roll in new configure that handles GDB. Make sure that the "configure" +# that is checked-in reflects the latest "configure.in", which includes gdb. +# +# Revision 1.9 1991/07/06 04:35:51 gnu +# Fix bug in configure when iterating targets. +# Depend on alldeps.mak, not ${srcdir}/alldeps.mak, so it can be found +# in either spot. +# +# Revision 1.8 1991/07/05 00:04:58 gnu +# Thu Jul 4 14:47:06 1991 John Gilmore (gnu at cygint.cygnus.com) +# +# * configure.in, Makefile.in: Avoid rebuilding "depend" as much. +# Avoid declaring Makefile dependencies, because GNU Make stupidly +# tries to update it if we do. +# +# * coffread.c: Revise for minor changes to bfd internal coff +# indexes. +# +# * configure: If -template= is given a relative path, make it +# absolute before recurring in subdirectories. +# +# Revision 1.7 1991/07/04 15:59:46 gnu +# Make gdb work with configure. Only thing that doesn't work is the -list +# option (as far as I know). +# +# Revision 1.6 1991/06/04 07:28:16 gnu +# Change GDB over to GNU General Public License version 2. +# +# Revision 1.5 1991/05/19 07:26:54 rich +# configure changes and -opcode.h movement. +# +# Revision 1.4 1991/05/19 00:16:45 rich +# Configure for gdb. +# +# Revision 1.10 1991/05/04 00:58:38 rich +# Fix program name bug. +# +# Revision 1.9 1991/05/03 19:14:18 rich +# Changed getopt to libiberty, commented out an aborted attempt at host +# level Makefiles because it caused errors on +rm, add a warning for +# directories expected to be removed on +rm but that don't exist. +# +# Revision 1.8 1991/04/24 16:50:59 rich +# Three staging checkpoint. +# +# Revision 1.7 1991/04/17 01:34:47 rich +# Added getopt for binutils, fixed problem with host dependancies in +# configure.template. +# +# Revision 1.6 1991/04/16 00:18:44 rich +# Now handles multiple hosts and targets. +# +# Revision 1.5 1991/04/15 23:43:44 rich +# Now handles multiple hosts and targets. +# +# Revision 1.4 1991/04/13 02:11:03 rich +# Config cut 3. We now almost install a29k. +# +# Revision 1.3 1991/04/11 02:41:54 rich +# Cut 2 config. Subdirs. +# +# +# + +# +# Local Variables: +# fill-column: 131 +# End: +# + +# end of configure.template