darling-gdb/configure
K. Richard Pixley eabe8479cf support for subdirs, multiple hosts, and multiple targets was
previously commented out.  This delta removes it entirely.  This makes
a small time difference on cygint.
1992-02-06 01:02:21 +00:00

676 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=
if [ -z "${targets}" ] ; then
newtargets="${targets} ${arg}"
targets="${newtargets}"
else
echo '***' Can only configure for one target at a time.
fatal=yes
fi
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=*)
if [ -z "${hosts}" ] ; then
newhosts="${hosts} `echo ${arg} | sed 's/^[-a-z]*=//'`"
hosts="${newhosts}"
else
echo '***' Can only configure for one host at a time.
fatal=yes
fi
;;
-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=*)
if [ -z "${targets}" ] ; then
newtargets="${targets} `echo ${arg} | sed 's/^[-a-z]*=//'`"
targets="${newtargets}"
else
echo '***' Can only configure for one target at a time.
fatal=yes
fi
;;
-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
;;
*)
if [ -z "${undefs}" ] ; then
newundefs="${undefs} ${arg}"
undefs=${newundefs}
else
echo '***' Can only configure for one host and one target at a time.
fatal=yes
fi
;;
esac
fi
done
# process host and target
if [ -z "${fatal}" ] ; then
# # 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
if [ -z "${hosts}" ] ; then
hosts=${undefs}
fi
if [ -z "${targets}" ] ; then
if [ -n "${undefs}" ] ; then
targets=${undefs}
else
targets=${hosts}
fi
fi
fi
fi
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
if [ -z "${srcdir}" ] ; then
if [ -r configure.in ] ; then
srcdir=.
else
echo '***' "Can't find configure.in. Try using -srcdir=some_dir"
exit 1
fi
fi
### break up ${srcdir}/configure.in.
if [ -z "`grep '^# per\-host:' ${srcdir}/configure.in`" ] ; then
echo '***' ${srcdir}/configure.in has no "per-host:" line. 1>&2
exit 1
fi
if [ -z "`grep '^# per\-target:' ${srcdir}/configure.in`" ] ; then
echo '***' ${srcdir}/configure.in has no "per-target:" line. 1>&2
exit 1
fi
if [ -z "${TMPDIR}" ] ; then
TMPDIR=/tmp ; export TMPDIR
fi
# 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
if [ -z "${srctrigger}" ] ; then
echo '***' srctrigger not set in ${PWD}/configure.in.
exit 1
fi
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
if [ "${host_alias}" = "${target_alias}" ] ; then
subdirname=H-${host_alias}
else
subdirname=X-${host_alias}-${target_alias}
fi
if [ -n "${namesubdir}" ] ; then
subdirname=${namesubdir}
fi
if [ -n "${removing}" ] ; then
rm -f ${Makefile} config.status ${links}
else
# Find the source files, if location was not specified.
if [ -z "${srcdir}" ] ; then
srcdirdefaulted=1
srcdir=.
if [ ! -r ${srctrigger} ] ; then
srcdir=..
fi
fi
if [ ! -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.
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.
if [ "${host}" != "${target}" ] ; then
echo "CROSS=-DCROSS_COMPILE" > ${Makefile}
echo "ALL=all.cross" >> ${Makefile}
else
echo "ALL=all.internal" > ${Makefile}
fi
# 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.
if [ -n "${site}" ] ; then
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}
fi
# 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
if [ -n "${prefix}" ] ; then
sed "s:^prefix[ ]*=.*$:prefix = ${prefix}:" ${Makefile} > Makefile.tem
mv Makefile.tem ${Makefile}
fi
# set datadir
if [ -n "${datadir}" ] ; then
sed "s:^datadir[ ]*=.*$:datadir = ${datadir}:" ${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}
# 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
if [ -n "${site}" -a \
-f ${srcdir}/${site_makefile_frag} ] ; then
using="${using} and \"${site_makefile_frag}\""
fi
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.
if [ -z "${norecursion}" ] ; then
arguments="${arguments} -norecursion"
fi
echo "#!/bin/sh
# ${NO_EDIT}
# ${PWD} was configured as follows:
${progname}" ${arguments} "
# ${using}" > config.status
chmod a+x config.status
fi
# If there are subdirectories, then recur.
if [ -z "${norecursion}" -a -n "${configdirs}" ] ; then
for configdir in ${configdirs} ; do
if [ -n "${verbose}" ] ; then
echo Configuring ${configdir}...
fi
if [ -d ${srcdir}/${configdir} ] ; then
if [ "${srcdir}" != "." ] ; then
if [ ! -d ./${configdir} ] ; then
mkdir ./${configdir}
fi
fi
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}
elif [ -n "${verbose}" ] ; then
echo Warning: source directory \"${srcdir}/${configdir}\" is missing.
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