#
# 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$
(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.
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
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
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
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 +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 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 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.
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
#
# 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'
# 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
-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=*)
-gas | +gas | +ga | +g)
gas=yes
;;
+ -help | +h | +help)
+ fatal=true
+ ;;
-nfp | +nfp | +nf | +n)
nfp=yes
;;
-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
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
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
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}
+for host in ${hosts} ; do
+ # Default other arg
+ if [ -z "${targets}" -o -n "${defaulttargets}" ] ; then
+ targets=${host}
+ defaulttargets=true
+ fi
-if [ -n "${removing}" ]
-then
- if [ -d "${hostsubdir}/${targetsubdir}" ]
- then
- rm -rf ${hostsubdir}/${targetsubdir}
+#### configure.in per-host parts come in here.
+## end of per-target part
- 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
- fi
+ for target in ${targets} ; do
- # Find the source files, if location was not specified.
- if [ -z "${srcdir}" ]
- then
- srcdirdefaulted=1
- srcdir=.
- if [ -n "${srctrigger}" -a ! -r ${srctrigger} ]
- then
- srcdir=..
+ 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
- fi
- exit 1
- fi
+ 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
- # 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.
+ if [ ! -d ${hostsubdir} ] ; then mkdir ${hostsubdir} ; fi
+ cd ${hostsubdir}
- # 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 [ ! -d ${targetsubdir} ] ; then mkdir ${targetsubdir} ; fi
+ cd ${targetsubdir}
- 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
+ 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
- ${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}
+ # 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 [ ! -r ${link} ]
- then
- echo "${progname}: unable to link \"${link}\" to \"${srcdir}/${file}\"." 1>&2
- exit 1
- fi
- echo "Linked \"${link}\" to \"${srcdir}/${file}\"."
- done
+ 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
- # Create a .gdbinit file which runs the one in srcdir
- # and tells GDB to look there for source files.
+ exit 1
+ fi
- case ${srcdir} in
- .)
- ;;
- *)
- echo "dir ." > .gdbinit
- echo "dir ${srcdir}" >> .gdbinit
- echo "source ${srcdir}/.gdbinit" >> .gdbinit
- ;;
- esac
+ # 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.
- # Install a makefile, and make it set VPATH
- # if necessary so that the sources are found.
- # Also change its value of srcdir.
+ # 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=$*
-# 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.
+ 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
- # 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
+ ${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}
- # set target, host, VPATH
- echo "host = ${host}" >> Makefile
- echo "target = ${target}" >> Makefile
+ 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
- if [ -n "${forcesubdirs}" ]
- then
- echo "subdir = /${hostsubdir}/${targetsubdir}" >> Makefile
- else
- echo "subdir =" >> Makefile
- fi
+ # 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
-# echo "workdir = `pwd`" >> Makefile
- echo "VPATH = ${srcdir}" >> Makefile
+ # set target, host, VPATH
+ echo "host = ${host}" >> Makefile
+ echo "target = ${target}" >> Makefile
- # add Makefile.in
- cat ${srcdir}/Makefile.in >> Makefile
+ if [ -n "${forcesubdirs}" ] ; then
+ echo "subdir = /${hostsubdir}/${targetsubdir}" >> Makefile
+ else
+ echo "subdir =" >> Makefile
+ fi
- # and shake thoroughly.
- host_var_file=hmake-${host}
- target_var_file=tmake-${target}
+ # echo "workdir = `pwd`" >> Makefile
+ echo "VPATH = ${srcdir}" >> Makefile
- # 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
+ # add Makefile.in
+ cat ${srcdir}/Makefile.in >> Makefile
- # 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
+ # and shake thoroughly.
+ host_var_file=hmake-${host}
+ target_var_file=tmake-${target}
- # set srcdir
- sed "s@^srcdir = \.@srcdir = ${srcdir}@" Makefile > Makefile.tem
- mv Makefile.tem Makefile
+ # 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
- # set destdir
- if [ -n "${destdir}" ]
- then
- sed "s:^destdir =.*$:destdir = ${destdir}:" 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
- # Remove all formfeeds, since some Makes get confused by them.
- sed "s/\f//" Makefile >> Makefile.tem
- mv Makefile.tem Makefile
+ # set srcdir
+ sed "s@^srcdir = \.@srcdir = ${srcdir}@" Makefile > Makefile.tem
+ mv Makefile.tem Makefile
- # reset SUBDIRS
- sed "s:^SUBDIRS =.*$:SUBDIRS = ${configdirs}:" 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 NONSUBDIRS
- sed "s:^NONSUBDIRS =.*$:NONSUBDIRS = ${noconfigdirs}:" Makefile > Makefile.tem
- mv Makefile.tem Makefile
+ # Remove all formfeeds, since some Makes get confused by them.
+ sed "s/\f//" Makefile >> Makefile.tem
+ mv Makefile.tem Makefile
- using=
- if [ -f ${srcdir}/config/${host_var_file} ]
- then
- using=" using \"${host_var_file}\""
- fi
+ # reset SUBDIRS
+ sed "s:^SUBDIRS =.*$:SUBDIRS = ${configdirs}:" Makefile > Makefile.tem
+ mv Makefile.tem Makefile
- 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
+ # reset NONSUBDIRS
+ sed "s:^NONSUBDIRS =.*$:NONSUBDIRS = ${noconfigdirs}:" Makefile > Makefile.tem
+ mv Makefile.tem Makefile
- echo "Created \"Makefile\""${andusing}.
+ using=
+ if [ -f ${srcdir}/config/${host_var_file} ] ; then
+ using=" using \"${host_var_file}\""
+ fi
- 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
+ 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
- originaldir=`pwd`
- cd ${srcdir}
-fi
+ echo "Created \"Makefile\"" in `pwd`${andusing}.
-# If there are subdirectories, then recurse.
+ 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 [ -n "${norecurse}" ] ; then exit 0 ; fi
+# If there are subdirectories, then recurse.
-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
#
#
+#
+# Local Variables:
+# fill-column: 131
+# End:
+#
# end of configure.template
configdirs="bfd binutils ld gas gnulib gcc clib"
srctrigger=README.configure
srcname="gnu development package"
+
+# per-host:
+
+# per-target:
+
--- /dev/null
+#!/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/\f//" 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
+# per-host:
+
+# per-target: