2002-12-05 David Carlton <carlton@math.stanford.edu>
[deliverable/binutils-gdb.git] / Makefile.tpl
index dc99532abe83704d0d0faf6a74d8d188ebf47d52..ca0164bd40318a112474260befd1f6fff0df7928 100644 (file)
@@ -259,7 +259,6 @@ REALLY_SET_LIB_PATH = \
 # Should be substed by configure.in
 FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@
 CC_FOR_TARGET = @CC_FOR_TARGET@
-BASE_CC_FOR_TARGET = @BASE_CC_FOR_TARGET@
 CXX_FOR_TARGET = @CXX_FOR_TARGET@
 RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@
 CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@
@@ -530,14 +529,8 @@ EXTRA_GCC_FLAGS = \
 
 GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS)
 
-# This is a list of the configure targets for all of the modules which
-# are compiled using the target tools.
-CONFIGURE_TARGET_MODULES =[+
-    FOR target_modules +] \
-       configure-target-[+module+][+
-    ENDFOR target_modules +]
-
-configure-target: $(CONFIGURE_TARGET_MODULES)
+configure-host: @configure_host_modules@
+configure-target: @configure_target_modules@
 
 # This is a list of the targets for which we can do a clean-{target}.
 CLEAN_MODULES =[+
@@ -566,6 +559,7 @@ all.normal: @all_build_modules@ \
        @all_host_modules@ \
        @all_target_modules@
 
+all-host: @all_host_modules@
 all-target: @all_target_modules@
 
 # Do a target for all the subdirectories.  A ``make do-X'' will do a
@@ -867,9 +861,50 @@ all-build-[+module+]: configure-build-[+module+]
 # Modules which run on the host machine
 # --------------------------------------
 [+ FOR host_modules +]
+.PHONY: configure-[+module+] maybe-configure-[+module+]
+maybe-configure-[+module+]:
+configure-[+module+]: [+module+]/Makefile
+
+[+module+]/Makefile: config.status
+       @[ -d [+module+] ] || mkdir [+module+]; \
+       r=`${PWD}`; export r; \
+       s=`cd $(srcdir); ${PWD}`; export s; \
+       CC="$(CC)"; export CC; \
+       CFLAGS="$(CFLAGS)"; export CFLAGS; \
+       CXX="$(CXX)"; export CXX; \
+       CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
+       if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
+         AR="$(AR)"; export AR; \
+         AS="$(AS)"; export AS; \
+         CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
+         DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+         LD="$(LD)"; export LD; \
+         NM="$(NM)"; export NM; \
+         RANLIB="$(RANLIB)"; export RANLIB; \
+         WINDRES="$(WINDRES)"; export WINDRES; \
+         OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
+         OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
+       fi; \
+       echo Configuring in [+module+]; \
+       cd [+module+] || exit 1; \
+       case $(srcdir) in \
+         \.) \
+           srcdiroption="--srcdir=."; \
+           libsrcdir=".";; \
+         /* | [A-Za-z]:[\\/]*) \
+           srcdiroption="--srcdir=$(srcdir)/[+module+]"; \
+           libsrcdir="$$s/[+module+]";; \
+         *) \
+           srcdiroption="--srcdir=../$(srcdir)/[+module+]"; \
+           libsrcdir="$$s/[+module+]";; \
+       esac; \
+       $(SHELL) $${libsrcdir}/configure \
+         $(HOST_CONFIGARGS) $${srcdiroption} \
+         || exit 1
+
 .PHONY: all-[+module+] maybe-all-[+module+]
 maybe-all-[+module+]:
-all-[+module+]:
+all-[+module+]: configure-[+module+]
        @r=`${PWD}`; export r; \
          s=`cd $(srcdir); ${PWD}`; export s; \
          $(SET_LIB_PATH) \
@@ -932,7 +967,9 @@ install-[+module+]: installdirs
 maybe-configure-target-[+module+]:
 configure-target-[+module+]: $(TARGET_SUBDIR)/[+module+]/Makefile
 
-$(TARGET_SUBDIR)/[+module+]/multilib.out: $(BASE_CC_FOR_TARGET)
+# Don't manually override CC_FOR_TARGET at make time; get it set right
+# at configure time.  Otherwise multilibs may be wrong.
+$(TARGET_SUBDIR)/[+module+]/multilib.out: maybe-all-gcc
        @[ -d $(TARGET_SUBDIR)/[+module+] ] || mkdir $(TARGET_SUBDIR)/[+module+];\
        r=`${PWD}`; export r; \
        echo "Configuring multilibs for [+module+]"; \
@@ -1057,16 +1094,60 @@ install-target-[+module+]: installdirs
 # build modules.  So GCC is a sort of hybrid.
 
 # gcc is the only module which uses GCC_FLAGS_TO_PASS.
+.PHONY: configure-gcc maybe-configure-gcc
+maybe-configure-gcc:
+configure-gcc: gcc/Makefile
+
+gcc/Makefile: config.status
+       @[ -d gcc ] || mkdir gcc; \
+       r=`${PWD}`; export r; \
+       s=`cd $(srcdir); ${PWD}`; export s; \
+       CC="$(CC)"; export CC; \
+       CFLAGS="$(CFLAGS)"; export CFLAGS; \
+       CXX="$(CXX)"; export CXX; \
+       CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
+       if [ z$(build_canonical) !=  z$(host_canoncial) ] ; then \
+         AR="$(AR)"; export AR; \
+         AS="$(AS)"; export AS; \
+         CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
+         DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+         LD="$(LD)"; export LD; \
+         NM="$(NM)"; export NM; \
+         RANLIB="$(RANLIB)"; export RANLIB; \
+         WINDRES="$(WINDRES)"; export WINDRES; \
+         OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \
+         OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \
+       fi; \
+       echo Configuring in gcc; \
+       cd gcc || exit 1; \
+       case $(srcdir) in \
+         \.) \
+           srcdiroption="--srcdir=."; \
+           libsrcdir=".";; \
+         /* | [A-Za-z]:[\\/]*) \
+           srcdiroption="--srcdir=$(srcdir)/gcc"; \
+           libsrcdir="$$s/gcc";; \
+         *) \
+           srcdiroption="--srcdir=../$(srcdir)/gcc"; \
+           libsrcdir="$$s/gcc";; \
+       esac; \
+       $(SHELL) $${libsrcdir}/configure \
+         $(HOST_CONFIGARGS) $${srcdiroption} \
+         || exit 1
+
+# Don't remake gcc if it's already been made by 'bootstrap'; that causes
+# nothing but trouble.  This wart will be fixed eventually by moving
+# the bootstrap behavior to this file.
 .PHONY: all-gcc maybe-all-gcc
 maybe-all-gcc:
-all-gcc:
-       @if [ -f ./gcc/Makefile ] ; then \
+all-gcc: configure-gcc
+       @if [ -f gcc/xgcc ] ; then \
+         exit 0 ; \
+       else \
          r=`${PWD}`; export r; \
          s=`cd $(srcdir); ${PWD}`; export s; \
          $(SET_LIB_PATH) \
          (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) all); \
-       else \
-         true; \
        fi
 
 # Building GCC uses some tools for rebuilding "source" files
@@ -1080,7 +1161,7 @@ all-gcc:
 # in parallel.
 #
 .PHONY: bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean bubblestrap quickstrap cleanstrap restrap
-bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean bubblestrap quickstrap cleanstrap restrap: all-bootstrap
+bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean bubblestrap quickstrap cleanstrap restrap: all-bootstrap configure-gcc
        @r=`${PWD}`; export r; \
        s=`cd $(srcdir); ${PWD}`; export s; \
        $(SET_LIB_PATH) \
@@ -1190,6 +1271,8 @@ gcc-no-fixedincludes:
 # it's safer to use a soft dependency.
 
 # Host modules specific to gcc.
+# GCC needs to identify certain tools.
+gcc/Makefile: maybe-configure-binutils maybe-configure-gas maybe-configure-ld maybe-configure-bison maybe-configure-flex
 all-gcc: maybe-all-libiberty maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib
 # This is a slightly kludgy method of getting dependencies on 
 # all-build-libiberty correct; it would be better to build it every time.
@@ -1197,12 +1280,16 @@ all-gcc: maybe-all-build-libiberty
 all-bootstrap: maybe-all-libiberty maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib
 
 # Host modules specific to gdb.
+# GDB needs to know that the simulator is being built.
+gdb/Makefile: maybe-configure-tcl maybe-configure-tk maybe-configure-sim
 GDB_TK = @GDB_TK@
 all-gdb: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-mmalloc maybe-all-readline maybe-all-bison maybe-all-byacc maybe-all-sim $(gdbnlmrequirements) $(GDB_TK)
 install-gdb: maybe-install-tcl maybe-install-tk maybe-install-itcl maybe-install-tix maybe-install-libgui
+libgui/Makefile: maybe-configure-tcl maybe-configure-tk
 all-libgui: maybe-all-tcl maybe-all-tk maybe-all-itcl
 
 # Host modules specific to binutils.
+bfd/Makefile: configure-libiberty
 all-bfd: maybe-all-libiberty maybe-all-intl
 all-binutils: maybe-all-libiberty maybe-all-opcodes maybe-all-bfd maybe-all-flex maybe-all-bison maybe-all-byacc maybe-all-intl
 # We put install-opcodes before install-binutils because the installed
@@ -1216,7 +1303,9 @@ all-opcodes: maybe-all-bfd maybe-all-libiberty
 
 # Other host modules in the 'src' repository.
 all-dejagnu: maybe-all-tcl maybe-all-expect maybe-all-tk
+expect/Makefile: maybe-configure-tcl maybe-configure-tk
 all-expect: maybe-all-tcl maybe-all-tk
+itcl/Makefile: maybe-configure-tcl maybe-configure-tk
 all-itcl: maybe-all-tcl maybe-all-tk
 # We put install-tcl before install-itcl because itcl wants to run a
 # program on installation which uses the Tcl libraries.
@@ -1224,7 +1313,9 @@ install-itcl: maybe-install-tcl
 all-sid: maybe-all-tcl maybe-all-tk
 install-sid: maybe-install-tcl maybe-install-tk
 all-sim: maybe-all-libiberty maybe-all-bfd maybe-all-opcodes maybe-all-readline
+tk/Makefile: maybe-configure-tcl
 all-tk: maybe-all-tcl
+tix/Makefile: maybe-configure-tcl maybe-configure-tk
 all-tix: maybe-all-tcl maybe-all-tk
 all-texinfo: maybe-all-libiberty
 
This page took 0.026734 seconds and 4 git commands to generate.