diff options
author | K. Richard Pixley <rich@cygnus> | 1991-08-06 19:12:55 +0000 |
---|---|---|
committer | K. Richard Pixley <rich@cygnus> | 1991-08-06 19:12:55 +0000 |
commit | 4101d8683819f444840a46569202d92b6a47fd1d (patch) | |
tree | 1a81d8de75c912eef07a024f7ff2d95326d3bfab /ld/configure | |
parent | dd61f09ec8bf172d3f377fa1c0aab67455170d67 (diff) | |
download | ppe42-binutils-4101d8683819f444840a46569202d92b6a47fd1d.tar.gz ppe42-binutils-4101d8683819f444840a46569202d92b6a47fd1d.zip |
Host-level GNUmakefiles.
Diffstat (limited to 'ld/configure')
-rwxr-xr-x | ld/configure | 212 |
1 files changed, 120 insertions, 92 deletions
diff --git a/ld/configure b/ld/configure index 4386ff660f..72a3e231c8 100755 --- a/ld/configure +++ b/ld/configure @@ -3,9 +3,6 @@ # configure.in and a configure template. configdirs= -# the debugger. -#set -x - #!/bin/sh # Configuration script template @@ -13,19 +10,19 @@ configdirs= #This file is part of GNU. -#GNU CC is free software; you can redistribute it and/or modify -#it under the terms of the GNU General Public License as published by -#the Free Software Foundation; either version 1, or (at your option) -#any later version. - -#GNU CC is distributed in the hope that it will be useful, -#but WITHOUT ANY WARRANTY; without even the implied warranty of -#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -#GNU General Public License for more details. - -#You should have received a copy of the GNU General Public License -#along with GNU CC; see the file COPYING. If not, write to -#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ # $Id$ @@ -50,13 +47,13 @@ symbolic_link='ln -s' progname=$0 # clear some things potentially inherited from environment. - ansi= -clib= defaulttargets= destdir= fatal= hostsubdir= +Makefile=Makefile +Makefile_in=Makefile.in norecurse= removing= srcdir= @@ -73,9 +70,6 @@ do -ansi | +ansi) ansi=true ;; - -clib | +c*) - clib=clib - ;; -destdir=* | +destdir=* | +destdi=* | +destd=* | +dest=* | +des=* | +de=* | +d=*) destdir=`echo ${arg} | sed 's/[+-]d[a-z]*=//'` ;; @@ -187,7 +181,7 @@ fi # any existing configure script. configdirs= -srctrigger=ldver.c +srctrigger=ldmain.c srcname="linker" ## end of common part. @@ -209,6 +203,9 @@ if [ -n "${template}" ] ; then -e '/^#### configure.in per-target parts come in here.$/,/^## end of per-target part.$/c\ #### configure.in per-target parts come in here.\ ## end of per-target part.' \ + -e '/^#### configure.in post-target parts come in here.$/,/^## end of post-target part.$/c\ +#### configure.in post-target parts come in here.\ +## end of post-target part.' \ < ${template} > template.new if [ -r configure.in ] ; then @@ -222,18 +219,26 @@ if [ -n "${template}" ] ; then exit 1 fi - # split configure.in into common, per-host, and per-target parts + # split configure.in into common, per-host, per-target, + # and post-target parts. Post-target is optional. sed -e '/^# per\-host:/,$d' configure.in > configure.com sed -e '1,/^# per\-host:/d' -e '/^# per\-target:/,$d' configure.in > configure.hst - sed -e '1,/^# per\-target:/d' configure.in > configure.tgt + if grep -s '^# post-target:' configure.in ; then + sed -e '1,/^# per\-target:/d' -e '/^# post\-target:/,$d' configure.in > configure.tgt + sed -e '1,/^# post\-target:/d' configure.in > configure.pos + else + sed -e '1,/^# per\-target:/d' configure.in > configure.tgt + echo >configure.pos + fi # and insert them sed -e '/^#### configure.in common parts come in here.$/ r configure.com' \ -e '/^#### configure.in per\-host parts come in here.$/ r configure.hst' \ -e '/^#### configure.in per\-target parts come in here.$/ r configure.tgt' \ + -e '/^#### configure.in post\-target parts come in here.$/ r configure.pos' \ template.new > configure.new - rm -f configure.com configure.tgt configure.hst + rm -f configure.com configure.tgt configure.hst configure.pos else echo Warning: no configure.in in `pwd` cat ${template} >> configure @@ -246,6 +251,13 @@ if [ -n "${template}" ] ; then echo Rebuilt configure in `pwd` if [ -z "${norecurse}" ] ; then + # If template is relative path, make it absolute for recursing. + if echo "${template}" | grep -s '^/' ; then + true + else + template=`pwd`/${template} + fi + while [ -n "${configdirs}" ] ; do # set configdir to car of configdirs, configdirs to cdr of configdirs set ${configdirs}; configdir=$1; shift; configdirs=$* @@ -297,7 +309,7 @@ for host in ${hosts} ; do for target in ${targets} ; do if [ -n "${verbose}" ] ; then - echo host \= \"${host}\", target \= \"${target}\". + echo " target=\"${target}\"" fi target_makefile_frag=config/tmake-${target} @@ -322,13 +334,13 @@ for host in ${hosts} ; do echo Warning: no `pwd`/${hostsubdir} to remove. fi else - rm -f Makefile config.status ${links} + 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." + if [ -f ${Makefile} ] ; then + echo "${Makefile} already exists in source directory. `pwd` not configured." exit 1 fi @@ -417,62 +429,57 @@ for host in ${hosts} ; do # 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 + echo "CROSS=-DCROSS_COMPILE" > ${Makefile} + echo "ALL=start.encap" >> ${Makefile} else - echo "ALL=all.internal" > Makefile + echo "ALL=all.internal" > ${Makefile} fi # set target, host, VPATH - echo "host = ${host}" >> Makefile - echo "target = ${target}" >> Makefile + echo "host = ${host}" >> ${Makefile} + echo "target = ${target}" >> ${Makefile} if [ -n "${forcesubdirs}" ] ; then - echo "subdir = /${hostsubdir}/${targetsubdir}" >> Makefile + echo "subdir = /${hostsubdir}/${targetsubdir}" >> ${Makefile} else - echo "subdir =" >> Makefile + echo "subdir =" >> ${Makefile} fi - # echo "workdir = `pwd`" >> Makefile - echo "VPATH = ${srcdir}" >> Makefile + # echo "workdir = `pwd`" >> ${Makefile} + echo "VPATH = ${srcdir}" >> ${Makefile} - # add Makefile.in - cat ${srcdir}/Makefile.in >> Makefile + # add "Makefile.in" (or whatever it's called) + cat ${srcdir}/${Makefile_in} >> ${Makefile} - # and shake thoroughly. # Conditionalize the makefile for this host. if [ -f ${srcdir}/${host_makefile_frag} ] ; then - sed -e "/^####/ r ${srcdir}/${host_makefile_frag}" Makefile > Makefile.tem - mv Makefile.tem Makefile + sed -e "/^####/ r ${srcdir}/${host_makefile_frag}" ${Makefile} > Makefile.tem + mv Makefile.tem ${Makefile} fi # Conditionalize the makefile for this target. if [ -f ${srcdir}/${target_makefile_frag} ] ; then - sed -e "/^####/ r ${srcdir}/${target_makefile_frag}" Makefile > Makefile.tem - mv Makefile.tem Makefile + sed -e "/^####/ r ${srcdir}/${target_makefile_frag}" ${Makefile} > Makefile.tem + mv Makefile.tem ${Makefile} fi # set srcdir - sed "s@^srcdir = \.@srcdir = ${srcdir}@" Makefile > Makefile.tem - mv Makefile.tem Makefile + 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 + 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 + 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 + sed "s:^NONSUBDIRS =.*$:NONSUBDIRS = ${noconfigdirs}:" ${Makefile} > Makefile.tem + mv Makefile.tem ${Makefile} using= if [ -f ${srcdir}/${host_makefile_frag} ] ; then @@ -489,7 +496,11 @@ for host in ${hosts} ; do andusing=${using} fi - echo "Created \"Makefile\"" in `pwd`${andusing}. + echo "Created \"${Makefile}\"" in `pwd`${andusing}. + +#### configure.in post-target parts come in here. + +## end of post-target part. if [ "${host}" = "${target}" ] ; then echo "Links are now set up for use with a ${target}." \ @@ -506,19 +517,21 @@ for host in ${hosts} ; do fi done # for each target -# # Now build a Makefile for this host. -# if [ -n "${forcesubdirs}" ] ; then -# cd ${hostsubdir} -# cat > GNUmakefile << E!O!F -## Makefile generated by configure for host ${host}. -# -#%: -# for i in ${targets} ; do \ -# $(MAKE) -C Target-\$i \$@ -# -#all clean stage1 stage2 stage3 stage4etags tags TAGS -#E!O!F -# fi + # Now build a Makefile for this host. + if [ -n "${forcesubdirs}" -a ! -n "${removing}" ] ; then + cd ${hostsubdir} + cat > GNUmakefile << E!O!F +# Makefile generated by configure for host ${host}. + +ALL := $(shell ls -d Target-*) + +%: + $(foreach subdir,$(ALL),$(MAKE) -C $(subdir) \$@ &&) true + +all: +E!O!F + cd .. + fi done # for each host # If there are subdirectories, then recurse. @@ -545,7 +558,7 @@ for configdir in ${configdirs} ; do if [ -n "${commons}" ] ; then if [ -d ${configdir} ] ; then (cd ${configdir} ; - ./configure ${commons} ${verbose} ${forcesubdirs} ${removing} "+destdir=${destdir}") \ + ./configure ${commons} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ | sed 's/^/ /' else echo Warning: directory \"${configdir}\" is missing. @@ -556,7 +569,7 @@ for configdir in ${configdirs} ; do for host in ${specifics} ; do echo Configuring target specific directory ${configdir}.${host}... (cd ${configdir}.${host} ; - ./configure ${host} ${verbose} ${forcesubdirs} ${removing} "+destdir=${destdir}") \ + ./configure ${host} ${verbose} ${forcesubdirs} ${removing} +destdir=${destdir}) \ | sed 's/^/ /' done # for host in specifics fi # if there are any specifics @@ -581,7 +594,8 @@ for configdir in ${configdirs} ; do if [ -n "${commons}" ] ; then if [ -d ${configdir} ] ; then (cd ${configdir} ; - ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} ${commons} "+destdir=${destdir}") \ + ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ + ${commons} +destdir=${destdir}) \ | sed 's/^/ /' else echo Warning: directory \"${configdir}\" is missing. @@ -592,7 +606,8 @@ for configdir in ${configdirs} ; do for target in ${specifics} ; do echo Configuring target specific directory ${configdir}.${target}... (cd ${configdir}.${target} ; - ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} "+target=${target}" "+destdir=${destdir}") \ + ./configure ${hosts} ${verbose} ${forcesubdirs} ${removing} \ + "+target=${target}" +destdir=${destdir}) \ | sed 's/^/ /' done fi # if any specifics @@ -603,30 +618,43 @@ exit 0 # # $Log$ -# Revision 1.14 1991/07/15 23:43:20 steve -# Fixed a few bugs, added 29k coff support. +# Revision 1.16 1991/08/06 19:12:42 rich +# Host-level GNUmakefiles. +# +# Revision 1.22 1991/07/20 01:22:30 rich +# propogate gdb changes and destdir fix +# +# Revision 1.21 1991/07/20 00:55:20 gnu +# Roll in new configure that handles GDB. Make sure that the "configure" +# that is checked-in reflects the latest "configure.in", which includes gdb. +# +# Revision 1.9 1991/07/06 04:35:51 gnu +# Fix bug in configure when iterating targets. +# Depend on alldeps.mak, not ${srcdir}/alldeps.mak, so it can be found +# in either spot. # -# Revision 1.13 1991/06/12 21:24:30 rich -# correctly propogate destdir +# Revision 1.8 1991/07/05 00:04:58 gnu +# Thu Jul 4 14:47:06 1991 John Gilmore (gnu at cygint.cygnus.com) # -# Revision 1.17 1991/06/09 20:39:58 rich -# Added +clib option. +# * configure.in, Makefile.in: Avoid rebuilding "depend" as much. +# Avoid declaring Makefile dependencies, because GNU Make stupidly +# tries to update it if we do. # -# Revision 1.16 1991/05/27 21:04:21 rich -# Removed clib for now. +# * coffread.c: Revise for minor changes to bfd internal coff +# indexes. # -# Revision 1.15 1991/05/27 20:54:24 rich -# fixed a bug in multiple targets +# * configure: If -template= is given a relative path, make it +# absolute before recurring in subdirectories. # -# Revision 1.14 1991/05/22 01:44:04 rich -# remove gdb until config issues resolve. +# Revision 1.7 1991/07/04 15:59:46 gnu +# Make gdb work with configure. Only thing that doesn't work is the -list +# option (as far as I know). # -# Revision 1.13 1991/05/19 08:00:09 rich -# Added gdb. +# Revision 1.6 1991/06/04 07:28:16 gnu +# Change GDB over to GNU General Public License version 2. # -# Revision 1.12 1991/05/19 00:32:13 rich -# Changes to deal with missing subdirs gracefully, and changes dictated -# from dropping configure over gdb. +# Revision 1.5 1991/05/19 07:26:54 rich +# configure changes and -opcode.h movement. # # Revision 1.4 1991/05/19 00:16:45 rich # Configure for gdb. |