binutils-gdb/configure
1992-02-06 04:05:26 +00:00

732 lines
19 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# Configuration script
# Copyright (C) 1988, 1990, 1991, 1992 Free Software Foundation, Inc.
#This file is part of GNU.
# 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. */
# Please email any bugs, comments, and/or additions to this file to:
# configure@cygnus.com
#
# Shell script to create proper links to machine-dependent files in
# 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.
#
# NOTE: This script contains support for a Cygnus experimental feature, called
# +subdirs, which is currently, tentatively, de-supported.
export PATH || (echo "OOPS, this isn't sh. Desperation time. I will feed myself to sh."; sh $0 $argv; kill $$)
remove=rm
hard_link=ln
symbolic_link='ln -s'
#for Test
#remove="echo rm"
#hard_link="echo ln"
#symbolic_link="echo ln -s"
# clear some things potentially inherited from environment.
Makefile=Makefile
Makefile_in=Makefile.in
arguments=$*
commontargets=
configdirs=
datadir=
datadiroption=
defaulttargets=
fatal=
floating_point=default
gas=default
hosts=
next_prefix=
next_host=
next_site=
next_srcdir=
next_target=
next_tmpdir=
norecursion=
prefix=/usr/local
progname=
recurring=
removing=
srcdir=
srctrigger=
target=
targets=
undefinedargs=
verbose=
version="$Revision$"
x11=default
NO_EDIT="This file was generated automatically by configure. Do not edit."
## this is a little touchy and won't always work, but...
##
## if the argv[0] starts with a slash then it is an absolute name that can be
## used as is.
##
## otherwise, if argv[0] has no slash in it, we can assume that it is on the
## path. Since PATH might include "." we also add `pwd` to the end of PATH.
##
## otherwise we prepend `pwd` to $0 and hope that will give us an absolute
## path.
##
PWD=`pwd`
if echo $0 | grep '^/' > /dev/null ; then
progname=$0
elif echo $0 | grep '/' > /dev/null ; then
progname=${PWD}/$0
else
progname=$0
PATH=$PATH:${PWD} ; export PATH
fi
for arg in $*;
do
# handle things that might have args following as separate words
if [ -n "${next_prefix}" ] ; then prefix=${arg} ; prefixoption="-prefix=${prefix}" ; next_prefix=
elif [ -n "${next_datadir}" ] ; then datadir=${arg} ; datadiroption="-datadir=${datadir}" ; next_datadir=
elif [ -n "${next_site}" ] ; then site=${arg} ; next_site=
elif [ -n "${next_srcdir}" ] ; then srcdir=${arg} ; next_srcdir=
elif [ -n "${next_target}" ] ; then
next_target=
case "${targets}" in
"")
newtargets="${targets} ${arg}"
targets="${newtargets}"
;;
*)
echo '***' Can only configure for one target at a time.
fatal=yes
;;
esac
elif [ -n "${next_tmpdir}" ] ; then
next_tmpdir=
tmpdiroption="--tmpdir=${arg}"
TMPDIR=${arg}
else
case ${arg} in
-datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* | --da=* | --d=*)
datadir=`echo ${arg} | sed 's/^[-a-z]*=//'`
datadiroption=${arg}
;;
-datadir | --datadir | --datadi | --datad | --data | --dat | --da | --d)
next_datadir=yes
;;
-gas | --g*)
gas=yes
;;
-help | --he*)
fatal=true
;;
-host=* | --host=* | --hos=* | --ho=*)
case "${hosts}" in
"")
newhosts="${hosts} `echo ${arg} | sed 's/^[-a-z]*=//'`"
hosts="${newhosts}"
;;
*)
echo '***' Can only configure for one host at a time.
fatal=yes
;;
esac
;;
-nfp | --nf*)
floating_point=no
;;
-norecursion | --no*)
norecursion=true
;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
prefix=`echo ${arg} | sed 's/^[-a-z]*=//'`
prefixoption=${arg}
;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
next_prefix=yes
;;
-recurring | --recurring | --recurrin | --recurri | --recurr | --recur | --recu | --rec | --re)
recurring=true
arguments=`echo ${arguments} | sed "s:${arg}::"`
;;
-rm | --rm)
removing=${arg}
;;
-site=* | --site=* | --sit=* | --si=*)
site=`echo ${arg} | sed 's/^[-a-z]*=//'`
;;
-site | --site | --sit | --si)
next_site=yes
;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
srcdir=`echo ${arg} | sed 's/^[-a-z]*=//'`
;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
next_srcdir=yes
;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=*)
case "${targets}" in
"")
newtargets="${targets} `echo ${arg} | sed 's/^[-a-z]*=//'`"
targets="${newtargets}"
;;
*)
echo '***' Can only configure for one target at a time.
fatal=yes
;;
esac
;;
-target | --target | --targe | --targ | --tar | --ta)
next_target=yes
;;
-tmpdir=* | --tmpdir=* | --tmpdi=* | --tmpd=* | --tmp=* | --tm=*)
tmpdiroption=${arg}
TMPDIR=`echo ${arg} | sed 's/^[-a-z]*=//'`
;;
-tmpdir | --tmpdir | --tmpdi | --tmpd | --tmp | --tm)
next_tmpdir=yes
;;
-v | -verbose | --v)
verbose=${arg}
;;
-version | -V | --version | --V)
echo "This is Cygnus Configure version" `echo ${version} | sed 's/[ $:]//g'`
exit 0
;;
-x | --x) ;;
-* | --*)
(echo ;
echo "Unrecognized option: \"${arg}\"". ;
echo) 1>&2
fatal=true
;;
*)
case "${undefs}" in
"")
newundefs="${undefs} ${arg}"
undefs=${newundefs}
;;
*)
echo '***' Can only configure for one host and one target at a time.
fatal=yes
;;
esac
;;
esac
fi
done
# process host and target
case "${fatal}" in
"")
# # Complain if an arg is missing
# if [ -z "${hosts}" ] ; then
# (echo ;
# echo "configure: No HOST specified." ;
# echo) 1>&2
# fatal=true
# fi
### This is a bit twisted.
### * if all three are specified, this is an error.
### * if we have neither hosts, nor unadorned args, this is an error.
### * if no hosts are specified, then the unadorned args are hosts, but if
### there were none, this is an error.
### * if no targets are specified, then the unadorned args are targets, but if
### there were no unadorned args, then the hosts are also targets.
if [ -n "${hosts}" -a -n "${targets}" -a -n "${undefs}" ] ; then
echo '***' Can only configure for one host and one target at a time.
fatal=yes
elif [ -z "${hosts}" -a -z "${undefs}" ] ; then
echo '***' You must tell me for which host you want to configure.
fatal=yes
else
case "${hosts}" in
"") hosts=${undefs} ;;
*) ;;
esac
case "${targets}" in
"")
case "${undefs}" in
"") targets=${hosts} ;;
*) targets=${undefs} ;;
esac
;;
*) ;;
esac
fi
;;
*) ;;
esac
if [ -n "${fatal}" -o "${hosts}" = "help" ] ; then
(echo "Usage: configure HOST" ;
echo ;
echo "Options: [defaults in brackets]" ;
echo " -datadir=MYDIR configure for installation of host dependent files into MYDIR. [\"/usr/local\"]" ;
echo " -gas configure the compilers for use with gas. [native as]" ;
echo " -help print this message. [normal config]" ;
echo " -lang=LANG configure to build LANG. [gcc]" ;
echo " -nfp configure the compilers default to soft floating point. [hard float]" ;
echo " -norecursion configure this directory only. [recurse]" ;
echo " -prefix=MYDIR configure for installation of host dependent files into MYDIR. [\"/usr/local\"]" ;
echo " -rm remove this configuration. [build a configuration]" ;
echo " -site configure with site specific makefile" ;
echo " -srcdir=DIR find the sources in DIR. [\".\" or \"..\"]" ;
echo " -target=TARGET configure for TARGET. [TARGET = HOST]" ;
echo " -tmpdir=TMPDIR create temporary files in TMPDIR. [ TMPDIR = \"/tmp\" ]" ;
echo ;
echo "Where HOST and TARGET are something like \"vax\", \"sun3\", \"encore\", etc." ;
) 1>&2
if [ -r config.status ] ; then
cat config.status
fi
exit 1
fi
configsub=`echo ${progname} | sed 's/configure$/config.sub/'`
if ${configsub} `echo ${hosts} | sed -e 's/ .*//'` >/dev/null 2>&1 ; then
true
else
echo '***' cannot find config.sub.
exit 1
fi
case "${srcdir}" in
"")
if [ -r configure.in ] ; then
srcdir=.
else
echo '***' "Can't find configure.in. Try using -srcdir=some_dir"
exit 1
fi
;;
*) ;;
esac
### break up ${srcdir}/configure.in.
case "`grep '^# per\-host:' ${srcdir}/configure.in`" in
"")
echo '***' ${srcdir}/configure.in has no "per-host:" line. 1>&2
exit 1
;;
*) ;;
esac
case "`grep '^# per\-target:' ${srcdir}/configure.in`" in
"")
echo '***' ${srcdir}/configure.in has no "per-target:" line. 1>&2
exit 1
;;
*) ;;
esac
case "${TMPDIR}" in
"") TMPDIR=/tmp ; export TMPDIR ;;
*) ;;
esac
# keep this filename short for &%*%$*# 14 char file names
tmpfile=${TMPDIR}/cONf$$
trap "rm -f ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos" 0
# split ${srcdir}/configure.in into common, per-host, per-target,
# and post-target parts. Post-target is optional.
sed -e '/^# per\-host:/,$d' ${srcdir}/configure.in > ${tmpfile}.com
sed -e '1,/^# per\-host:/d' -e '/^# per\-target:/,$d' ${srcdir}/configure.in > ${tmpfile}.hst
if grep '^# post-target:' ${srcdir}/configure.in >/dev/null ; then
sed -e '1,/^# per\-target:/d' -e '/^# post\-target:/,$d' ${srcdir}/configure.in > ${tmpfile}.tgt
sed -e '1,/^# post\-target:/d' ${srcdir}/configure.in > ${tmpfile}.pos
else
sed -e '1,/^# per\-target:/d' ${srcdir}/configure.in > ${tmpfile}.tgt
echo >${tmpfile}.pos
fi
### do common part of configure.in
. ${tmpfile}.com
# some sanity checks on configure.in
case "${srctrigger}" in
"")
echo '***' srctrigger not set in ${PWD}/configure.in.
exit 1
;;
*) ;;
esac
for host in ${hosts} ; do
# Default other arg
if [ -z "${targets}" -o -n "${defaulttargets}" ] ; then
targets=${host}
defaulttargets=true
fi
host_alias=${host}
result=`${configsub} ${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/mh-${host}
if [ ! -f ${host_makefile_frag} ]
then
host_makefile_frag=config/mh-${host_alias}
fi
. ${tmpfile}.hst
for target in ${targets} ; do
target_alias=${target}
result=`${configsub} ${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/mt-${target}
if [ ! -f ${target_makefile_frag} ]
then
target_makefile_frag=config/mt-${target_alias}
fi
. ${tmpfile}.tgt
case "${host_alias}" in
"${target_alias}") subdirname=H-${host_alias} ;;
*) subdirname=X-${host_alias}-${target_alias} ;;
esac
case "${namesubdir}" in
"") ;;
*) subdirname=${namesubdir} ;;
esac
case "${removing}" in
"")
# Find the source files, if location was not specified.
case "${srcdir}" in
"")
srcdirdefaulted=1
srcdir=.
if [ ! -r ${srctrigger} ] ; then
srcdir=..
fi
;;
*) ;;
esac
if [ ! -r ${srcdir}/${srctrigger} ] ; then
case "${srcdirdefaulted}" in
"") echo '***' "${progname}: Can't find ${srcname} sources in ${PWD}/${srcdir}" 1>&2 ;;
*) echo '***' "${progname}: Can't find ${srcname} sources in ${PWD}/. or ${PWD}/.." 1>&2 ;;
esac
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
case "${verbose}" in
"") ;;
*) echo "Linked \"${link}\" to \"${srcdir}/${file}\"." ;;
esac
done
# Create a .gdbinit file which runs the one in srcdir
# and tells GDB to look there for source files.
if [ -r ${srcdir}/.gdbinit ] ; then
case ${srcdir} in
.)
;;
*)
echo "# "${NO_EDIT} > .gdbinit
echo "dir ." >> .gdbinit
echo "dir ${srcdir}" >> .gdbinit
echo "source ${srcdir}/.gdbinit" >> .gdbinit
;;
esac
fi
# 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.
case "${host}" in
"${target}") echo "ALL=all.internal" > ${Makefile} ;;
*)
echo "CROSS=-DCROSS_COMPILE" > ${Makefile}
echo "ALL=all.cross" >> ${Makefile}
;;
esac
# set target, host, VPATH
echo "host_alias = ${host_alias}" >> ${Makefile}
echo "host_cpu = ${host_cpu}" >> ${Makefile}
echo "host_vendor = ${host_vendor}" >> ${Makefile}
echo "host_os = ${host_os}" >> ${Makefile}
echo "target_alias = ${target_alias}" >> ${Makefile}
echo "target_cpu = ${target_cpu}" >> ${Makefile}
echo "target_vendor = ${target_vendor}" >> ${Makefile}
echo "target_os = ${target_os}" >> ${Makefile}
echo "subdir =" >> ${Makefile}
echo "unsubdir = ." >> ${Makefile}
echo "VPATH = ${srcdir}" >> ${Makefile}
# add "Makefile.in" (or whatever it's called)
cat ${srcdir}/${Makefile_in} >> ${Makefile}
# Conditionalize the makefile for this site.
case "${site}" in
"") ;;
*)
site_makefile_frag=config/ms-${site}
if [ -f ${srcdir}/${site_makefile_frag} ] ; then
echo "site_makefile_frag = ${srcdir}/${site_makefile_frag}" > Makefile.tem
sed -e "/^####/ r ${srcdir}/${site_makefile_frag}" ${Makefile} >> Makefile.tem
else
echo "site_makefile_frag =" > Makefile.tem
cat ${Makefile} >> Makefile.tem
fi
mv Makefile.tem ${Makefile}
;;
esac
# Conditionalize the makefile for this host.
if [ -f ${srcdir}/${host_makefile_frag} ] ; then
echo "host_makefile_frag = ${srcdir}/${host_makefile_frag}" > Makefile.tem
sed -e "/^####/ r ${srcdir}/${host_makefile_frag}" ${Makefile} >> Makefile.tem
else
echo "host_makefile_frag =" > Makefile.tem
cat ${Makefile} >> Makefile.tem
fi
mv Makefile.tem ${Makefile}
# Conditionalize the makefile for this target.
if [ -f ${srcdir}/${target_makefile_frag} ] ; then
echo "target_makefile_frag = ${srcdir}/${target_makefile_frag}" > Makefile.tem
sed -e "/^####/ r ${srcdir}/${target_makefile_frag}" ${Makefile} >> Makefile.tem
else
echo "target_makefile_frag =" > Makefile.tem
cat ${Makefile} >> Makefile.tem
fi
mv Makefile.tem ${Makefile}
# set srcdir
sed "s:^srcdir[ ]*=.*$:srcdir = ${srcdir}:" ${Makefile} > Makefile.tem
mv Makefile.tem ${Makefile}
# set prefix
case "${prefix}" in
"") ;;
*)
sed "s:^prefix[ ]*=.*$:prefix = ${prefix}:" ${Makefile} > Makefile.tem
mv Makefile.tem ${Makefile}
;;
esac
# set datadir
case "${datadir}" in
"") ;;
*)
sed "s:^datadir[ ]*=.*$:datadir = ${datadir}:" ${Makefile} > Makefile.tem
mv Makefile.tem ${Makefile}
;;
esac
# 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}
# remove any form feeds.
sed -e "s/ //" ${Makefile} > Makefile.tem
mv Makefile.tem ${Makefile}
# prepend warning about editting.
echo "# "${NO_EDIT} > ${Makefile}.tem
cat ${Makefile} >> ${Makefile}.tem
mv Makefile.tem ${Makefile}
using=
if [ -f ${srcdir}/${host_makefile_frag} ] ; then
using="${using} and \"${host_makefile_frag}\""
fi
if [ -f ${srcdir}/${target_makefile_frag} ] ; then
using="${using} and \"${target_makefile_frag}\""
fi
case "${site}" in
"") ;;
*)
if [ -f ${srcdir}/${site_makefile_frag} ] ; then
using="${using} and \"${site_makefile_frag}\""
fi
;;
esac
using=`echo "${using}" | sed 's/and/using/'`
using="Created \"${Makefile}\" in ${PWD}${using}."
if [ -n "${verbose}" -o -z "${recurring}" ] ; then
echo ${using}
fi
. ${tmpfile}.pos
# describe the chosen configuration in config.status.
# Make that file a shellscript which will reestablish
# the same configuration. Used in Makefiles to rebuild
# Makefiles.
case "${norecursion}" in
"") arguments="${arguments} -norecursion" ;;
*) ;;
esac
echo "#!/bin/sh
# ${NO_EDIT}
# ${PWD} was configured as follows:
${progname}" ${arguments} "
# ${using}" > config.status
chmod a+x config.status
;;
*) rm -f ${Makefile} config.status ${links} ;;
esac
# If there are subdirectories, then recur.
if [ -z "${norecursion}" -a -n "${configdirs}" ] ; then
for configdir in ${configdirs} ; do
case "${verbose}" in
"") ;;
*) echo Configuring ${configdir}... ;;
esac
if [ -d ${srcdir}/${configdir} ] ; then
case "${srcdir}" in
".") ;;
*)
if [ ! -d ./${configdir} ] ; then
mkdir ./${configdir}
fi
;;
esac
POPDIR=${PWD}
cd ${configdir}
### figure out what to do with srcdir
case "${srcdir}" in
".") ;; # do nothing. We're building in place.
/*) srcdiroption="-srcdir=${srcdir}/${configdir}" ;; # absolute path
*) srcdiroption="-srcdir=../${srcdir}/${configdir}" ;; # otherwise relative
esac
### The recursion line is here.
if [ -f configure ] ; then
recprog=`pwd`/configure
else
recprog=${progname}
fi
if ${recprog} -recurring ${host_alias} -target=${target_alias} \
${verbose} ${subdirs} ${removing} ${prefixoption} \
${tmpdiroption} ${namesubdiroption} ${datadiroption} \
${srcdiroption} ; then
true
else
exit 1
fi
cd ${POPDIR}
else
case "${verbose}" in
"") ;;
*) echo Warning: source directory \"${srcdir}/${configdir}\" is missing. ;;
esac
fi
done
fi
done # for each target
done # for each host
### clean up.
# trap cmd above handles this now:
#rm -f ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos
exit 0
#
# Local Variables:
# fill-column: 131
# End:
#
# end of configure