mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 02:24:46 +08:00
Now handles multiple hosts and targets.
This commit is contained in:
parent
8c32cf6e55
commit
0df06ca031
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for directory with subdirs to build.
|
||||
#
|
||||
# Last Mod Sat Apr 13 02:43:05 PDT 1991, by rich@cygint.cygnus.com
|
||||
# Last Mod Mon Apr 15 13:57:46 PDT 1991, by rich@sendai
|
||||
#
|
||||
|
||||
# $Id$
|
||||
@ -92,11 +92,14 @@ Makefile: $(srcdir)/Makefile.in $(srcdir)/configure
|
||||
(cd $(srcdir) ; \
|
||||
./configure +destdir=$(destdir) +norecurse \
|
||||
`if [ "$(srcdir)" != "." ] ; then echo +f; fi` \
|
||||
+host=$(host) $(target))
|
||||
$(host) +target=$(target))
|
||||
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.7 1991/04/13 13:06:16 tiemann
|
||||
# Revision 1.8 1991/04/15 23:43:45 rich
|
||||
# Now handles multiple hosts and targets.
|
||||
#
|
||||
# Revision 1.7 1991/04/13 13:06:16 tiemann
|
||||
# Don't depend `install' on `all'. Actually, the way things work, all
|
||||
# depends on things being incrementally installed, and install depends
|
||||
# on everything happening in a topological fashion.
|
||||
|
190
README.configure
190
README.configure
@ -2,7 +2,7 @@
|
||||
|
||||
On Configuring Development Tools
|
||||
|
||||
Last Mod Sat Apr 13 19:45:44 PDT 1991, by rich@sendai
|
||||
Last Mod Mon Apr 15 10:25:59 PDT 1991, by rich@sendai
|
||||
|
||||
|
||||
INTRO
|
||||
@ -395,9 +395,10 @@ Simple Cross Environments:
|
||||
gcc-a29k. Remember that this is a native build. Gcc-a29k is a
|
||||
collection of native programs intended to run on your sun4.
|
||||
That's what stage3 builds, programs for your sun4. Gcc-a29k
|
||||
presents an a29k development environment that builds programs
|
||||
represents an a29k development environment that builds programs
|
||||
intended to run on an a29k. But, remember, gcc-a29k runs on your
|
||||
sun4.
|
||||
sun4. Programs built with gcc-a29k will run on your sun4 only
|
||||
with the help of an appropriate software emulator.
|
||||
|
||||
Building gcc-a29k is also a bootstrap but of a slightly different
|
||||
sort. We call gcc-a29k a simple cross environment and using
|
||||
@ -406,58 +407,112 @@ Simple Cross Environments:
|
||||
cross development environments.
|
||||
|
||||
|
||||
Crossing Into Targets:
|
||||
|
||||
configure a29k +target=a29k
|
||||
|
||||
will configure the tools such that when compiled in an a29k
|
||||
development environment, the resulting development environment can
|
||||
be used to create programs intended for an a29k. Again, this does
|
||||
not necessarily mean that the new development environment can be
|
||||
run on an a29k. That would depend on the development environment
|
||||
used to build these tools.
|
||||
|
||||
If you've been following along this walk through, then you've
|
||||
already built an a29k environment, namely gcc-a29k. Let's pretend
|
||||
you use gcc-a29k to build the current configuration.
|
||||
|
||||
Gcc-a29k builds programs intended for the a29k so the new
|
||||
development environment will be intended for use on an a29k. That
|
||||
is, this new gcc consists of programs that are foreign to your
|
||||
sun4. They cannot be run on your sun4.
|
||||
|
||||
The process of building this configuration is another a bootstrap.
|
||||
This bootstrap is also a cross to a29k. Because this type of
|
||||
build is both a bootstrap and a cross to a29k, it is sometimes
|
||||
referred to as a "cross into" a29k. This new development
|
||||
environment isn't really a cross development environment at all.
|
||||
It is intended to run on an a29k to produce programs for an a29k.
|
||||
You'll remember that this makes it, by definition, an a29k native
|
||||
compiler. "Crossing into" has been introduced here not because it
|
||||
is a type of cross development environment, but because it is
|
||||
frequently confused one. The process is "a cross" but the
|
||||
resulting development environment is a native development
|
||||
environment.
|
||||
|
||||
You could not have built this configuration with stage3, because
|
||||
stage3 doesn't provide an a29k environment. Instead it provides a
|
||||
sun4 environment.
|
||||
|
||||
If you happen to have an a29k lying around, you could now use
|
||||
this fresh development environment on the a29k to three stage
|
||||
these tools all over again. This process would look just like it
|
||||
did when we built the native sun4 development environment because
|
||||
we would be building another native development environment, this
|
||||
one on a29k.
|
||||
|
||||
|
||||
The Three Party Cross:
|
||||
|
||||
So far you've seen that our development environment source must be
|
||||
configured for a specific host and for a specific target. You've
|
||||
also seen that the resulting development environment depends on
|
||||
the development environment used in the build process.
|
||||
|
||||
When all four match identically, that is, the configured host, the
|
||||
configured target, the environment presented by the development
|
||||
environment used in the build, and the machine on which the
|
||||
resulting development environment is intended to run, then the new
|
||||
development environment will be a native development environment.
|
||||
|
||||
When all four match except the configured host, then we can assume
|
||||
that the development environment used in the build is some form of
|
||||
library emulation.
|
||||
|
||||
When all four match except for the configured target, then the
|
||||
resulting development environment will be a simple cross
|
||||
development environment.
|
||||
|
||||
When all four match except for the host on which the development
|
||||
environment used in the build runs, the build process is a "cross
|
||||
into" and the resulting development environment will be native to
|
||||
some other machine.
|
||||
|
||||
Most of the other permutations do exist in some form, but only one
|
||||
more is interesting to the current discussion.
|
||||
|
||||
configure a29k +target=sun3
|
||||
|
||||
will configure the tools such that when compiled in an a29k
|
||||
development environment, the resulting development environment can
|
||||
be used to create programs intended for a sun3. Again, this does
|
||||
not necessarily mean that the new development environment can be
|
||||
run on an a29k. That would depend on the development environment
|
||||
used to build these tools.
|
||||
|
||||
If you are still following along, then you have two a29k
|
||||
development environments, the native development environment that
|
||||
runs on a29k, and the simple cross that runs on your sun4. If you
|
||||
use the a29k native development environment on the a29k, you will
|
||||
be doing the same thing we did a while back, namely building a
|
||||
simple cross from a29k to sun3. Let's pretend that instead, you
|
||||
use gcc-a29k, the simple cross development environment that runs
|
||||
on sun4 but produces programs for a29k.
|
||||
|
||||
The resulting development environment will run on a29k because
|
||||
that's what gcc-a29k builds, a29k programs. This development
|
||||
environment will produce programs for a sun3 because that is how
|
||||
it was configured. This means that the resulting development
|
||||
environment is a simple cross.
|
||||
|
||||
There really isn't a common name for this process because very few
|
||||
development environments are capable of being configured this
|
||||
extensively. For the sake of discussion, let's call this process
|
||||
a "three party cross".
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if configured for host sun4 and target sun4, this implies that we
|
||||
will compile on a sun4 to create a sun4 compilation environment.
|
||||
If configured for host sun3 and target a29k, this implies that we
|
||||
will compile on a sun3 to create an a29k compilation environment.
|
||||
|
||||
Host sun3 only implies that the source will be compiled on a sun3.
|
||||
In fact, it need not be actually compiled on a sun3. If the
|
||||
appropriate native development tools, header files, libraries, and
|
||||
operating system support were available on a foobox, then source
|
||||
configured for a sun3 could be compiled on a foobox, resulting in
|
||||
a development environment for, using the previous example
|
||||
host+target pair, "a29k" on the foobox. Similarly, if the
|
||||
appropriate cross development tools, header files, and libraries
|
||||
were available on a dec3100, then source configured for host sun3
|
||||
could be cross compiled to create an a29k development environment
|
||||
intended to be run on a sun3.
|
||||
|
||||
|
||||
Usage:
|
||||
FINAL NOTES
|
||||
-----------
|
||||
|
||||
Gdb's config has features not yet present in the uniform configuration
|
||||
scheme described here. For this reason, configuration of gdb must
|
||||
@ -470,22 +525,21 @@ By "configures", I mean that links, Makefile, .gdbinit, and
|
||||
config.status are built. Configuration is always done from the source
|
||||
directory.
|
||||
|
||||
* "./configure name" configures this directory, perhaps
|
||||
recursively, for a single host+target pair where the host and target
|
||||
are both "name". If a previous configuration existed, it will be
|
||||
* "./configure name" configures this directory, perhaps recursively,
|
||||
for a single host+target pair where the host and target are both
|
||||
"name". If a previous configuration existed, it will be
|
||||
overwritten.
|
||||
|
||||
* "./configure +host=hostname targetname" configures this
|
||||
directory, perhaps recursively, for a single host+target pair where
|
||||
the host is hostname and target is targetname. If a previous
|
||||
configuration existed, it will be overwritten.
|
||||
* "./configure hostname +target=targetname" configures this directory,
|
||||
perhaps recursively, for a single host+target pair where the host is
|
||||
hostname and target is targetname. If a previous configuration
|
||||
existed, it will be overwritten.
|
||||
|
||||
* "./configure +forcesubdirs +host=hostname targetname" creates
|
||||
a subdirectories Host-hostname and
|
||||
Host-hostname/Target-targetname and configures
|
||||
Host-hostname/Target-targetname. For now, makes should be
|
||||
done from Host-hostname/Target-targetname. "./configure +f
|
||||
name" works as expected. That is, it creates Host-name and
|
||||
* "./configure +forcesubdirs hostname +target=targetname" creates a
|
||||
subdirectories Host-hostname and Host-hostname/Target-targetname and
|
||||
configures Host-hostname/Target-targetname. For now, makes should
|
||||
be done from Host-hostname/Target-targetname. "./configure +f name"
|
||||
works as expected. That is, it creates Host-name and
|
||||
Host-name/Target-name and configures the latter.
|
||||
|
||||
|
||||
@ -501,8 +555,8 @@ The Makefile is created by prepending some variable definitions to a
|
||||
Makefile template called Makefile.in and then inserting host and
|
||||
target specific Makefile fragments. The variables are set based on
|
||||
the chosen host+target pair and build style, that is, if you use
|
||||
subdirectories or not. The host and target specific Makefile
|
||||
may or may not exist. If fragments
|
||||
subdirectories or not. The host and target specific Makefile may or
|
||||
may not exist. If fragments
|
||||
|
||||
* Makefiles can be editted directly, but those changes will eventually
|
||||
be lost. Changes intended to be permanent for a specific host
|
||||
|
670
configure
vendored
670
configure
vendored
@ -28,17 +28,13 @@ configdirs=
|
||||
|
||||
#
|
||||
# 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'
|
||||
@ -50,15 +46,19 @@ symbolic_link='ln -s'
|
||||
|
||||
# clear some things potentially inherited from environment.
|
||||
ansi=
|
||||
defaulttargets=
|
||||
destdir=
|
||||
fatal=
|
||||
hostsubdir=
|
||||
norecurse=
|
||||
removing=
|
||||
srcdir=
|
||||
srctrigger=
|
||||
target=
|
||||
targets=
|
||||
targetsubdir=
|
||||
template=
|
||||
verbose=
|
||||
|
||||
for arg in $*;
|
||||
do
|
||||
@ -69,12 +69,9 @@ do
|
||||
-destdir=* | +destdir=* | +destdi=* | +destd=* | +dest=* | +des=* | +de=* | +d=*)
|
||||
destdir=`echo ${arg} | sed 's/[+-]d[a-z]*=//'`
|
||||
;;
|
||||
-forcesubdirs | +f*)
|
||||
-forcesubdirs | +forcesubdirs | +f)
|
||||
forcesubdirs=${arg}
|
||||
;;
|
||||
-host=* | +host=* | +hos=* | +ho=* | +h=*)
|
||||
host=`echo ${arg} | sed 's/[+-]h[a-z]*=//'`
|
||||
;;
|
||||
-languages=* | +languages=* | +language=* | +languag=* \
|
||||
| +langua=* | +langu=* | +lang=* | +lan=* | +la=* \
|
||||
| +l=*)
|
||||
@ -83,6 +80,9 @@ do
|
||||
-gas | +gas | +ga | +g)
|
||||
gas=yes
|
||||
;;
|
||||
-help | +h | +help)
|
||||
fatal=true
|
||||
;;
|
||||
-nfp | +nfp | +nf | +n)
|
||||
nfp=yes
|
||||
;;
|
||||
@ -92,59 +92,100 @@ do
|
||||
-rm | +rm)
|
||||
removing=${arg}
|
||||
;;
|
||||
-srcdir=* | +srcdir=* | +srcdi=* | +srcd=* | +src=* | +sr=* | +s=*)
|
||||
srcdir=`echo ${arg} | sed 's/[+-]s[a-z]*=//'`
|
||||
# -srcdir=* | +srcdir=* | +srcdi=* | +srcd=* | +src=* | +sr=* | +s=*)
|
||||
# srcdir=`echo ${arg} | sed 's/[+-]s[a-z]*=//'`
|
||||
# ;;
|
||||
-target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=* | +t=*)
|
||||
if [ -n "${targets}" ] ; then
|
||||
forcesubdirs="+forcesubdirs"
|
||||
fi
|
||||
|
||||
newtargets="${targets} `echo ${arg} | sed 's/[+-]t[a-z]*=//'`"
|
||||
targets="${newtargets}"
|
||||
;;
|
||||
-template=* | +template=*)
|
||||
template=`echo ${arg} | sed 's/[+-]template=//'`
|
||||
;;
|
||||
+verbose | +verbos | +verbo | +verb | +ver | +ve | +v)
|
||||
verbose=${arg}
|
||||
;;
|
||||
-* | +*)
|
||||
(echo ;
|
||||
echo "Unrecognized option: \"${arg}\"". ;
|
||||
echo) 1>&2
|
||||
fatal=true
|
||||
;;
|
||||
*)
|
||||
# Allow configure HOST TARGET
|
||||
if [ -z "${host}" ] ; then host=${target} ; fi
|
||||
target=${arg}
|
||||
if [ -n "${hosts}" ] ; then
|
||||
forcesubdirs="+forcesubdirs"
|
||||
fi
|
||||
|
||||
newhosts="${hosts} ${arg}"
|
||||
hosts=${newhosts}
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -n "${verbose}" ] ; then
|
||||
echo `pwd`/configure $*
|
||||
echo targets=\"${targets}\"
|
||||
fi
|
||||
|
||||
# process host and target only if not rebuilding configure itself or removing.
|
||||
if [ -z "${template}" -a -z "${removing}" ]
|
||||
then
|
||||
if [ -z "${template}" -a -z "${removing}" -a -z "${fatal}" ] ; then
|
||||
# Complain if an arg is missing
|
||||
if [ -z "${target}" ]
|
||||
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) 2>&1
|
||||
fatal=true
|
||||
fi
|
||||
fi
|
||||
|
||||
# Default other arg
|
||||
if [ -z "${host}" ]
|
||||
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 " +forcesubdirs 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 \"+forcesubdirs\". Any other" ;
|
||||
echo "options given will apply to all targets.") 1>&2
|
||||
|
||||
if [ -r config.status ] ; then
|
||||
cat config.status
|
||||
fi
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#### configure.in files come in here.
|
||||
#### configure.in common parts come in here.
|
||||
# This file is a shell script fragment 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.
|
||||
|
||||
configdirs="bfd binutils ld gas gcc clib"
|
||||
configdirs="bfd binutils ld gas gnulib gcc clib"
|
||||
srctrigger=README.configure
|
||||
srcname="gnu development package"
|
||||
### end of configure.in
|
||||
|
||||
# per-host:
|
||||
|
||||
## end of common part
|
||||
|
||||
# are we rebuilding config itself?
|
||||
if [ -n "${template}" ]
|
||||
then
|
||||
if [ ! -r ${template} ]
|
||||
then
|
||||
if [ -n "${template}" ] ; then
|
||||
if [ ! -r ${template} ] ; then
|
||||
echo "Can't find template ${template}."
|
||||
exit 1
|
||||
fi
|
||||
@ -156,9 +197,25 @@ then
|
||||
echo "configdirs=" >> configure
|
||||
echo >> configure
|
||||
|
||||
if [ -r configure.in ]
|
||||
then
|
||||
sed -e "/^####/ r configure.in" ${template} >> configure
|
||||
if [ -r configure.in ] ; then
|
||||
if [ -z "`grep '^# per\-host:' configure.in`" ] ; then
|
||||
echo `pwd`/configure.in has no "per-host:" line.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "`grep '^# per\-target:' configure.in`" ] ; then
|
||||
echo `pwd`/configure.in has no "per-target:" line.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sed -e '/^# per\-target:/,$d' configure.in > configure.com
|
||||
sed -e '1,/^# per\-target:/d' configure.in > configure.tgt
|
||||
|
||||
sed -e '/^#### configure.in common parts/ r configure.com' \
|
||||
-e '/^##### / r configure.tgt' \
|
||||
${template} >> configure
|
||||
|
||||
rm -f configure.com configure.tgt configure.hst
|
||||
else
|
||||
echo Warning: no configure.in in `pwd`
|
||||
cat ${template} >> configure
|
||||
@ -168,26 +225,21 @@ then
|
||||
rm configure.old
|
||||
echo Rebuilt configure in `pwd`
|
||||
|
||||
if [ -z "${norecurse}" ]
|
||||
then
|
||||
while [ -n "${configdirs}" ]
|
||||
do
|
||||
if [ -z "${norecurse}" ] ; then
|
||||
while [ -n "${configdirs}" ] ; do
|
||||
# set configdir to car of configdirs, configdirs to cdr of 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
|
||||
for i in ${configdir} ${targetspecificdirs} ; do
|
||||
if [ -r $i/configure ] ; then
|
||||
(cd $i ;
|
||||
configure +template=${template})
|
||||
./configure +template=${template} ${verbose})
|
||||
else
|
||||
echo No configure script in `pwd`/$i
|
||||
fi
|
||||
@ -199,257 +251,308 @@ then
|
||||
fi
|
||||
|
||||
# some sanity checks on configure.in
|
||||
if [ -z "${srctrigger}" ]
|
||||
then
|
||||
if [ -z "${srctrigger}" ] ; then
|
||||
echo srctrigger not set in configure.in. `pwd` not configured.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Temporarily, we support only direct subdir builds.
|
||||
hostsubdir=Host-${host}
|
||||
targetsubdir=Target-${target}
|
||||
|
||||
if [ -n "${removing}" ]
|
||||
then
|
||||
if [ -d "${hostsubdir}/${targetsubdir}" ]
|
||||
then
|
||||
rm -rf ${hostsubdir}/${targetsubdir}
|
||||
|
||||
if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target-`" ]
|
||||
then
|
||||
rm -rf ${hostsubdir}
|
||||
fi
|
||||
else
|
||||
rm -f .gdbinit Makefile config.status ${links}
|
||||
fi
|
||||
else
|
||||
if [ -n "${forcesubdirs}" ]
|
||||
then
|
||||
# check for existing status before allowing forced subdirs.
|
||||
if [ -f Makefile ]
|
||||
then
|
||||
echo "Makefile already exists in source directory. `pwd` not configured."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d ${hostsubdir} ] ; then mkdir ${hostsubdir} ; fi
|
||||
cd ${hostsubdir}
|
||||
|
||||
if [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi
|
||||
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."
|
||||
exit 1
|
||||
fi
|
||||
for host in ${hosts} ; do
|
||||
# Default other arg
|
||||
if [ -z "${targets}" -o -n "${defaulttargets}" ] ; then
|
||||
targets=${host}
|
||||
defaulttargets=true
|
||||
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=..
|
||||
#### configure.in per-host parts come in here.
|
||||
## end of per-target part
|
||||
|
||||
|
||||
for target in ${targets} ; do
|
||||
|
||||
if [ -n "${verbose}" ] ; then
|
||||
echo " "target=\"${target}\"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${srctrigger}" -a ! -r ${srcdir}/${srctrigger} ]
|
||||
then
|
||||
if [ -z "${srcdirdefaulted}" ]
|
||||
then
|
||||
echo "${progname}: Can't find ${srcname} sources in \`${srcdir}'." 1>&2
|
||||
|
||||
#### configure.in per-target parts come in here.
|
||||
## end of per-target part
|
||||
|
||||
# Temporarily, we support only direct subdir builds.
|
||||
hostsubdir=Host-${host}
|
||||
targetsubdir=Target-${target}
|
||||
|
||||
if [ -n "${removing}" ] ; then
|
||||
if [ -d "${hostsubdir}/${targetsubdir}" ] ; then
|
||||
rm -rf ${hostsubdir}/${targetsubdir}
|
||||
|
||||
if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target-`" ] ; then
|
||||
rm -rf ${hostsubdir}
|
||||
fi
|
||||
else
|
||||
rm -f Makefile config.status ${links}
|
||||
fi
|
||||
else
|
||||
echo "${progname}: Can't find ${srcname} sources in \`.' or \`..'." 1>&2
|
||||
if [ -n "${forcesubdirs}" ] ; then
|
||||
# check for existing status before allowing forced subdirs.
|
||||
if [ -f Makefile ] ; then
|
||||
echo "Makefile already exists in source directory. `pwd` not configured."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d ${hostsubdir} ] ; then mkdir ${hostsubdir} ; fi
|
||||
cd ${hostsubdir}
|
||||
|
||||
if [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi
|
||||
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."
|
||||
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 \`${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}/${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
|
||||
echo "Linked \"${link}\" to \"${srcdir}/${file}\"."
|
||||
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 "${forcesubdirs}" ] ; then
|
||||
echo "subdir = /${hostsubdir}/${targetsubdir}" >> Makefile
|
||||
else
|
||||
echo "subdir =" >> Makefile
|
||||
fi
|
||||
|
||||
# echo "workdir = `pwd`" >> Makefile
|
||||
echo "VPATH = ${srcdir}" >> Makefile
|
||||
|
||||
# add Makefile.in
|
||||
cat ${srcdir}/Makefile.in >> Makefile
|
||||
|
||||
# and shake thoroughly.
|
||||
host_var_file=hmake-${host}
|
||||
target_var_file=tmake-${target}
|
||||
|
||||
# Conditionalize the makefile for this host.
|
||||
if [ -f ${srcdir}/config/${host_var_file} ] ; then
|
||||
sed -e "/^####/ r ${srcdir}/config/${host_var_file}" Makefile > Makefile.tem
|
||||
mv Makefile.tem Makefile
|
||||
fi
|
||||
|
||||
# Conditionalize the makefile for this target.
|
||||
if [ -f ${srcdir}/config/${target_var_file} ] ; then
|
||||
sed -e "/^####/ r ${srcdir}/config/${target_var_file}" 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
|
||||
|
||||
# Remove all formfeeds, since some Makes get confused by them.
|
||||
sed "s///" Makefile >> Makefile.tem
|
||||
mv Makefile.tem Makefile
|
||||
|
||||
# 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}/config/${host_var_file} ] ; then
|
||||
using=" using \"${host_var_file}\""
|
||||
fi
|
||||
|
||||
if [ -f ${srcdir}/config/${target_var_file} ] ; then
|
||||
if [ -z "${using}" ] ; then
|
||||
andusing=" using \"${target_var_file}\""
|
||||
else
|
||||
andusing="${using} and \"${target_var_file}\""
|
||||
fi
|
||||
else
|
||||
andusing=${using}
|
||||
fi
|
||||
|
||||
echo "Created \"Makefile\"" in `pwd`${andusing}.
|
||||
|
||||
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
|
||||
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
|
||||
echo "Linked \"${link}\" to \"${srcdir}/${file}\"."
|
||||
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 "${forcesubdirs}" ]
|
||||
then
|
||||
echo "subdir = /${hostsubdir}/${targetsubdir}" >> Makefile
|
||||
else
|
||||
echo "subdir =" >> Makefile
|
||||
fi
|
||||
|
||||
# echo "workdir = `pwd`" >> Makefile
|
||||
echo "VPATH = ${srcdir}" >> Makefile
|
||||
|
||||
# add Makefile.in
|
||||
cat ${srcdir}/Makefile.in >> Makefile
|
||||
|
||||
# and shake thoroughly.
|
||||
host_var_file=hmake-${host}
|
||||
target_var_file=tmake-${target}
|
||||
|
||||
# Conditionalize the makefile for this host.
|
||||
if [ -f ${srcdir}/config/${host_var_file} ]
|
||||
then
|
||||
sed -e "/^####/ r ${srcdir}/config/${host_var_file}" Makefile > Makefile.tem
|
||||
mv Makefile.tem Makefile
|
||||
fi
|
||||
|
||||
# Conditionalize the makefile for this target.
|
||||
if [ -f ${srcdir}/config/${target_var_file} ]
|
||||
then
|
||||
sed -e "/^####/ r ${srcdir}/config/${target_var_file}" 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
|
||||
|
||||
# Remove all formfeeds, since some Makes get confused by them.
|
||||
sed "s///" Makefile >> Makefile.tem
|
||||
mv Makefile.tem Makefile
|
||||
|
||||
# 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}/config/${host_var_file} ]
|
||||
then
|
||||
using=" using \"${host_var_file}\""
|
||||
fi
|
||||
|
||||
if [ -f ${srcdir}/config/${target_var_file} ]
|
||||
then
|
||||
if [ -z "${using}" ]
|
||||
then
|
||||
andusing=" using \"${target_var_file}\""
|
||||
else
|
||||
andusing="${using} and \"${target_var_file}\""
|
||||
fi
|
||||
else
|
||||
andusing=${using}
|
||||
fi
|
||||
|
||||
echo "Created \"Makefile\""${andusing}.
|
||||
|
||||
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
|
||||
done
|
||||
|
||||
# If there are subdirectories, then recurse.
|
||||
|
||||
if [ -n "${norecurse}" ] ; then exit 0 ; fi
|
||||
|
||||
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}
|
||||
fi
|
||||
if [ -n "${norecurse}" -o -z "${configdirs}" ] ; then exit 0 ; fi
|
||||
|
||||
# configdirs is not null
|
||||
for configdir in ${configdirs} ; do
|
||||
echo Configuring ${configdir}...
|
||||
(cd ${configdir} ;
|
||||
./configure ${forcesubdirs} ${removing} +host=${host} ${target}) \
|
||||
| sed 's/^/ /'
|
||||
specifics=
|
||||
commons=
|
||||
|
||||
if [ -n "${defaulttargets}" ] ; then
|
||||
for host in ${hosts} ; do
|
||||
if [ -d ${configdir}.${host} ] ; then
|
||||
newspecifics="${specifics} ${host}"
|
||||
specifics=${newspecifics}
|
||||
else
|
||||
newcommons="${commons} ${host}"
|
||||
commons=${newcommons}
|
||||
fi # if target specific
|
||||
done # for each host
|
||||
|
||||
if [ -n "${commons}" ] ; then
|
||||
(cd ${configdir} ;
|
||||
./configure ${commons} ${verbose} ${forcesubdirs} ${removing}) \
|
||||
| sed 's/^/ /'
|
||||
fi # if any common hosts
|
||||
|
||||
if [ -n "${specifics}" ] ; then
|
||||
for host in ${specifics} ; do
|
||||
echo Configuring target specific directory ${configdir}.${host}...
|
||||
(cd ${configdir}.${host} ;
|
||||
./configure ${host} ${verbose} ${forcesubdirs} ${removing}) \
|
||||
| sed 's/^/ /'
|
||||
done # for host in specifics
|
||||
fi # if there are any specifics
|
||||
else
|
||||
|
||||
for target in ${targets} ; do
|
||||
if [ -d ${configdir}.${target} ] ; then
|
||||
newspecifics="${specifics} ${target}"
|
||||
specifics=${newspecifics}
|
||||
else
|
||||
newcommons="${commons} +target=${target}"
|
||||
commons=${newcommons}
|
||||
fi
|
||||
|
||||
done # check for target specific dir override
|
||||
|
||||
if [ -n "${verbose}" ] ; then
|
||||
echo " "commons=\"${commons}\"
|
||||
echo " "specifics=\"${specifics}\"
|
||||
fi # if verbose
|
||||
|
||||
if [ -n "${commons}" ] ; then
|
||||
(cd ${configdir} ;
|
||||
./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} ${commons}) \
|
||||
| sed 's/^/ /'
|
||||
fi # if any commons
|
||||
|
||||
if [ -n "${specifics}" ] ; then
|
||||
for target in ${specifics} ; do
|
||||
echo Configuring target specific directory ${configdir}.${target}...
|
||||
(cd ${configdir}.${target} ;
|
||||
./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} "+target=${target}") \
|
||||
| sed 's/^/ /'
|
||||
done
|
||||
fi # if any specifics
|
||||
fi # not default targets
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.4 1991/04/13 02:11:07 rich
|
||||
# Revision 1.6 1991/04/15 23:43:41 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
|
||||
@ -458,5 +561,10 @@ exit 0
|
||||
#
|
||||
#
|
||||
|
||||
#
|
||||
# Local Variables:
|
||||
# fill-column: 131
|
||||
# End:
|
||||
#
|
||||
|
||||
# end of configure.template
|
||||
|
@ -6,3 +6,8 @@
|
||||
configdirs="bfd binutils ld gas gnulib gcc clib"
|
||||
srctrigger=README.configure
|
||||
srcname="gnu development package"
|
||||
|
||||
# per-host:
|
||||
|
||||
# per-target:
|
||||
|
||||
|
541
gdb/configure
vendored
Executable file
541
gdb/configure
vendored
Executable file
@ -0,0 +1,541 @@
|
||||
#!/bin/sh
|
||||
# Please do not edit this file. It is generated automatically from
|
||||
# configure.in and a configure template.
|
||||
configdirs=
|
||||
|
||||
#!/bin/sh
|
||||
|
||||
# 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.
|
||||
|
||||
# $Id$
|
||||
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
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.
|
||||
ansi=
|
||||
destdir=
|
||||
fatal=
|
||||
hostsubdir=
|
||||
norecurse=
|
||||
removing=
|
||||
srcdir=
|
||||
srctrigger=
|
||||
target=
|
||||
targets=
|
||||
targetsubdir=
|
||||
template=
|
||||
verbose=
|
||||
|
||||
for arg in $*;
|
||||
do
|
||||
case ${arg} in
|
||||
-ansi | +ansi)
|
||||
ansi=true
|
||||
;;
|
||||
-destdir=* | +destdir=* | +destdi=* | +destd=* | +dest=* | +des=* | +de=* | +d=*)
|
||||
destdir=`echo ${arg} | sed 's/[+-]d[a-z]*=//'`
|
||||
;;
|
||||
-forcesubdirs | +forcesubdirs | +f)
|
||||
forcesubdirs=${arg}
|
||||
;;
|
||||
-languages=* | +languages=* | +language=* | +languag=* \
|
||||
| +langua=* | +langu=* | +lang=* | +lan=* | +la=* \
|
||||
| +l=*)
|
||||
languages="${languages} `echo ${arg} | sed 's/[+-]l[a-z]*=//'`"
|
||||
;;
|
||||
-gas | +gas | +ga | +g)
|
||||
gas=yes
|
||||
;;
|
||||
-help | +h | +help)
|
||||
fatal=true
|
||||
;;
|
||||
-nfp | +nfp | +nf | +n)
|
||||
nfp=yes
|
||||
;;
|
||||
-norecurse | +norecurse)
|
||||
norecurse=true
|
||||
;;
|
||||
-rm | +rm)
|
||||
removing=${arg}
|
||||
;;
|
||||
# -srcdir=* | +srcdir=* | +srcdi=* | +srcd=* | +src=* | +sr=* | +s=*)
|
||||
# srcdir=`echo ${arg} | sed 's/[+-]s[a-z]*=//'`
|
||||
# ;;
|
||||
-target=* | +target=* | +targe=* | +targ=* | +tar=* | +ta=* | +t=*)
|
||||
if [ -n "${targets}" ] ; then
|
||||
forcesubdirs="+forcesubdirs"
|
||||
fi
|
||||
|
||||
newtargets="${targets} `echo ${arg} | sed 's/[+-]t[a-z]*=//'`"
|
||||
targets="${newtargets}"
|
||||
;;
|
||||
-template=* | +template=*)
|
||||
template=`echo ${arg} | sed 's/[+-]template=//'`
|
||||
;;
|
||||
+verbose | +verbos | +verbo | +verb | +ver | +ve | +v)
|
||||
verbose=${arg}
|
||||
;;
|
||||
-* | +*)
|
||||
(echo ;
|
||||
echo "Unrecognized option: \"${arg}\"". ;
|
||||
echo) 1>&2
|
||||
fatal=true
|
||||
;;
|
||||
*)
|
||||
if [ -n "${hosts}" ] ; then
|
||||
forcesubdirs="+forcesubdirs"
|
||||
fi
|
||||
|
||||
newhosts="${hosts} ${arg}"
|
||||
hosts=${newhosts}
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -n "${verbose}" ] ; then
|
||||
echo `pwd`/configure $*
|
||||
echo targets=\"${targets}\"
|
||||
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 [ -z "${hosts}" ] ; then
|
||||
(echo ;
|
||||
echo "configure: No HOST specified." ;
|
||||
echo) 2>&1
|
||||
fatal=true
|
||||
fi
|
||||
fi
|
||||
|
||||
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 " +forcesubdirs 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 \"+forcesubdirs\". Any other" ;
|
||||
echo "options given will apply to all targets.") 1>&2
|
||||
|
||||
if [ -r config.status ] ; then
|
||||
cat config.status
|
||||
fi
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#### configure.in common parts come in here.
|
||||
# This file is a shell script fragment 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.
|
||||
|
||||
configdirs="bfd binutils ld gas gnulib gcc clib"
|
||||
srctrigger=README.configure
|
||||
srcname="gnu development package"
|
||||
|
||||
# per-host:
|
||||
|
||||
## end of common part
|
||||
|
||||
# are we rebuilding config itself?
|
||||
if [ -n "${template}" ] ; then
|
||||
if [ ! -r ${template} ] ; then
|
||||
echo "Can't find template ${template}."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mv configure configure.old
|
||||
echo "#!/bin/sh" > configure
|
||||
echo "# Please do not edit this file. It is generated automatically from" >> configure
|
||||
echo "# configure.in and a configure template." >> configure
|
||||
echo "configdirs=" >> configure
|
||||
echo >> configure
|
||||
|
||||
if [ -r configure.in ] ; then
|
||||
if [ -z "`grep '^# per\-host:' configure.in`" ] ; then
|
||||
echo `pwd`/configure.in has no "per-host:" line.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "`grep '^# per\-target:' configure.in`" ] ; then
|
||||
echo `pwd`/configure.in has no "per-target:" line.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sed -e '/^# per\-target:/,$d' configure.in > configure.com
|
||||
sed -e '1,/^# per\-target:/d' configure.in > configure.tgt
|
||||
|
||||
sed -e '/^#### configure.in common parts/ r configure.com' \
|
||||
-e '/^##### / r configure.tgt' \
|
||||
${template} >> configure
|
||||
|
||||
rm -f configure.top configure.bot
|
||||
else
|
||||
echo Warning: no configure.in in `pwd`
|
||||
cat ${template} >> configure
|
||||
fi
|
||||
|
||||
chmod a+x configure
|
||||
rm configure.old
|
||||
echo Rebuilt configure in `pwd`
|
||||
|
||||
if [ -z "${norecurse}" ] ; then
|
||||
while [ -n "${configdirs}" ] ; do
|
||||
# set configdir to car of configdirs, configdirs to cdr of configdirs
|
||||
set ${configdirs}; configdir=$1; shift; configdirs=$*
|
||||
|
||||
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} ${verbose})
|
||||
else
|
||||
echo No configure script in `pwd`/$i
|
||||
fi
|
||||
done
|
||||
done
|
||||
fi
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# some sanity checks on configure.in
|
||||
if [ -z "${srctrigger}" ] ; then
|
||||
echo srctrigger not set in configure.in. `pwd` not configured.
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for host in ${hosts} ; do
|
||||
# Default other arg
|
||||
if [ -z "${targets}" ] ; then
|
||||
targets=${host}
|
||||
fi
|
||||
|
||||
#### configure.in per-host parts come in here.
|
||||
## end of per-target part
|
||||
|
||||
|
||||
for target in ${targets} ; do
|
||||
|
||||
if [ -n "${verbose}" ] ; then
|
||||
echo " "target=\"${target}\"
|
||||
fi
|
||||
|
||||
#### configure.in per-target parts come in here.
|
||||
## end of per-target part
|
||||
|
||||
# Temporarily, we support only direct subdir builds.
|
||||
hostsubdir=Host-${host}
|
||||
targetsubdir=Target-${target}
|
||||
|
||||
if [ -n "${removing}" ] ; then
|
||||
if [ -d "${hostsubdir}/${targetsubdir}" ] ; then
|
||||
rm -rf ${hostsubdir}/${targetsubdir}
|
||||
|
||||
if [ -z "`(ls ${hostsubdir}) 2>&1 | grep Target-`" ] ; then
|
||||
rm -rf ${hostsubdir}
|
||||
fi
|
||||
else
|
||||
rm -f Makefile config.status ${links}
|
||||
fi
|
||||
else
|
||||
if [ -n "${forcesubdirs}" ] ; then
|
||||
# check for existing status before allowing forced subdirs.
|
||||
if [ -f Makefile ] ; then
|
||||
echo "Makefile already exists in source directory. `pwd` not configured."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d ${hostsubdir} ] ; then mkdir ${hostsubdir} ; fi
|
||||
cd ${hostsubdir}
|
||||
|
||||
if [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi
|
||||
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."
|
||||
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 \`${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}/${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
|
||||
echo "Linked \"${link}\" to \"${srcdir}/${file}\"."
|
||||
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 "${forcesubdirs}" ] ; then
|
||||
echo "subdir = /${hostsubdir}/${targetsubdir}" >> Makefile
|
||||
else
|
||||
echo "subdir =" >> Makefile
|
||||
fi
|
||||
|
||||
# echo "workdir = `pwd`" >> Makefile
|
||||
echo "VPATH = ${srcdir}" >> Makefile
|
||||
|
||||
# add Makefile.in
|
||||
cat ${srcdir}/Makefile.in >> Makefile
|
||||
|
||||
# and shake thoroughly.
|
||||
host_var_file=hmake-${host}
|
||||
target_var_file=tmake-${target}
|
||||
|
||||
# Conditionalize the makefile for this host.
|
||||
if [ -f ${srcdir}/config/${host_var_file} ] ; then
|
||||
sed -e "/^####/ r ${srcdir}/config/${host_var_file}" Makefile > Makefile.tem
|
||||
mv Makefile.tem Makefile
|
||||
fi
|
||||
|
||||
# Conditionalize the makefile for this target.
|
||||
if [ -f ${srcdir}/config/${target_var_file} ] ; then
|
||||
sed -e "/^####/ r ${srcdir}/config/${target_var_file}" 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
|
||||
|
||||
# Remove all formfeeds, since some Makes get confused by them.
|
||||
sed "s///" Makefile >> Makefile.tem
|
||||
mv Makefile.tem Makefile
|
||||
|
||||
# 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}/config/${host_var_file} ] ; then
|
||||
using=" using \"${host_var_file}\""
|
||||
fi
|
||||
|
||||
if [ -f ${srcdir}/config/${target_var_file} ] ; then
|
||||
if [ -z "${using}" ] ; then
|
||||
andusing=" using \"${target_var_file}\""
|
||||
else
|
||||
andusing="${using} and \"${target_var_file}\""
|
||||
fi
|
||||
else
|
||||
andusing=${using}
|
||||
fi
|
||||
|
||||
echo "Created \"Makefile\"" in `pwd`${andusing}.
|
||||
|
||||
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
|
||||
done
|
||||
done
|
||||
|
||||
# If there are subdirectories, then recurse.
|
||||
|
||||
if [ -n "${norecurse}" -o -z "${configdirs}" ] ; then exit 0 ; fi
|
||||
|
||||
# configdirs is not null
|
||||
for configdir in ${configdirs} ; do
|
||||
echo Configuring ${configdir}...
|
||||
specifics=
|
||||
commons=
|
||||
|
||||
for target in ${targets} ; do
|
||||
# check for target specific dir override
|
||||
if [ -d ${configdir}.${target} ] ; then
|
||||
newspecifics="${specifics} ${target}"
|
||||
specifics=${newspecifics}
|
||||
else
|
||||
newcommons="${commons} +target=${target}"
|
||||
commons=${newcommons}
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
if [ -n "${verbose}" ] ; then
|
||||
echo " "commons=\"${commons}\"
|
||||
echo " "specifics=\"${specifics}\"
|
||||
fi
|
||||
|
||||
if [ -n "${commons}" ] ; then
|
||||
(cd ${configdir} ;
|
||||
./configure ${host} ${verbose} ${forcesubdirs} ${removing} ${commons}) \
|
||||
| sed 's/^/ /'
|
||||
fi
|
||||
|
||||
if [ -n "${specifics}" ] ; then
|
||||
for target in ${specifics} ; do
|
||||
echo Configuring target specific directory ${configdir}.${target}...
|
||||
(cd ${configdir}.${target} ;
|
||||
./configure ${host} ${verbose} ${forcesubdirs} ${removing} "+target=${target}") \
|
||||
| sed 's/^/ /'
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.2 1991/04/15 23:46:48 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
|
@ -0,0 +1,3 @@
|
||||
# per-host:
|
||||
|
||||
# per-target:
|
Loading…
Reference in New Issue
Block a user