When build != host, create libiberty for the build machine.
authorDJ Delorie <dj@redhat.com>
Wed, 28 Nov 2001 19:55:01 +0000 (19:55 +0000)
committerDJ Delorie <dj@redhat.com>
Wed, 28 Nov 2001 19:55:01 +0000 (19:55 +0000)
* Makefile.in (TARGET_CONFIGARGS, BUILD_CONFIGARGS): Replace
CONFIG_ARGUMENTS.
(ALL_BUILD_MODULES_LIST, BUILD_CONFIGDIRS, BUILD_SUBDIR):
New variables.
(ALL_BUILD_MODULES, CONFIGURE_BUILD_MODULES): New variables
and rules.
(all.normal): Depend on ALL_BUILD_MODULES.
(CONFIGURE_TARGET_MODULES rule): Use TARGET_CONFIGARGS.
(all-build-libiberty): Depend on configure-build-libiberty.

* configure: Calculate and substitute proper value for
ALL_BUILD_MODULES.
* configure.in: Create the build subdirectory.
Calculate and substitute TARGET_CONFIGARGS (formerly
CONFIG_ARGUMENTS); also BUILD_SUBDIR and BUILD_CONFIGARGS (new).

ChangeLog
Makefile.in
configure
configure.in

index ebf058cc428e685c010a7678dcc2b32484ab9072..a2b08804adf950df4f92fc04d7aa22d086a7c3d9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2001-11-28  DJ Delorie <dj@redhat.com>
+           Zack Weinberg  <zack@codesourcery.com>
+
+       When build != host, create libiberty for the build machine.
+
+       * Makefile.in (TARGET_CONFIGARGS, BUILD_CONFIGARGS): Replace
+       CONFIG_ARGUMENTS.
+       (ALL_BUILD_MODULES_LIST, BUILD_CONFIGDIRS, BUILD_SUBDIR):
+       New variables.
+       (ALL_BUILD_MODULES, CONFIGURE_BUILD_MODULES): New variables
+       and rules.
+       (all.normal): Depend on ALL_BUILD_MODULES.
+       (CONFIGURE_TARGET_MODULES rule): Use TARGET_CONFIGARGS.
+       (all-build-libiberty): Depend on configure-build-libiberty.
+
+       * configure: Calculate and substitute proper value for
+       ALL_BUILD_MODULES.
+       * configure.in: Create the build subdirectory.
+       Calculate and substitute TARGET_CONFIGARGS (formerly
+       CONFIG_ARGUMENTS); also BUILD_SUBDIR and BUILD_CONFIGARGS (new).
+
 2001-11-26  Geoffrey Keating  <geoffk@redhat.com>
 
        * config.sub: Update to version 1.232 on subversion.
index f6252662e43400960100d8601bfb5d7d7dfa8777..e48d98a0a71390f8a55a995ae0d9624a6dcf09de 100644 (file)
@@ -179,8 +179,16 @@ TARGET_CONFIGDIRS = libiberty libgloss $(SPECIAL_LIBS) newlib libio librx libstd
 # Changed by configure to $(target_alias) if cross.
 TARGET_SUBDIR = .
 
-# This is set by the configure script to the arguments passed to configure.
-CONFIG_ARGUMENTS = 
+BUILD_CONFIGDIRS = libiberty
+BUILD_SUBDIR = .
+
+# This is set by the configure script to the arguments to use when configuring
+# directories built for the target.
+TARGET_CONFIGARGS = 
+
+# This is set by the configure script to the arguments to use when configuring
+# directories built for the build system.
+BUILD_CONFIGARGS =
 
 # This is set by configure to REALLY_SET_LIB_PATH if --enable-shared
 # was used.
@@ -488,6 +496,18 @@ EXTRA_GCC_FLAGS = \
 
 GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS)
 
+# This is a list of the targets for all of the modules which are compiled
+# using the build machine's native compiler.  Configure edits the second
+# macro for build!=host builds.
+ALL_BUILD_MODULES_LIST = \
+       all-build-libiberty
+ALL_BUILD_MODULES = 
+
+# This is a list of the configure targets for all of the modules which
+# are compiled using the native tools.
+CONFIGURE_BUILD_MODULES = \
+       configure-build-libiberty
+
 # This is a list of the targets for all of the modules which are compiled
 # using $(FLAGS_TO_PASS).
 ALL_MODULES = \
@@ -954,6 +974,7 @@ CLEAN_X11_MODULES = \
 # The target built for a native build.
 .PHONY: all.normal
 all.normal: \
+       $(ALL_BUILD_MODULES) \
        $(ALL_MODULES) \
        $(ALL_X11_MODULES) \
        $(ALL_TARGET_MODULES) \
@@ -1195,6 +1216,106 @@ gcc-no-fixedincludes:
          mv gcc/tmp-include gcc/include 2>/dev/null; \
        else true; fi
 
+# This rule is used to build the modules which are built with the
+# build machine's native compiler.
+.PHONY: $(ALL_BUILD_MODULES)
+$(ALL_BUILD_MODULES):
+       dir=`echo $@ | sed -e 's/all-build-//'`; \
+       if [ -f ./$${dir}/Makefile ] ; then \
+         r=`pwd`; export r; \
+         s=`cd $(srcdir); pwd`; export s; \
+         (cd $(BUILD_SUBDIR)/$${dir} && $(MAKE) all); \
+       else \
+         true; \
+       fi
+
+# This rule is used to configure the modules which are built with the
+# native tools.
+.PHONY: $(CONFIGURE_BUILD_MODULES)
+$(CONFIGURE_BUILD_MODULES):
+       @dir=`echo $@ | sed -e 's/configure-build-//'`; \
+       if [ ! -d $(BUILD_SUBDIR) ]; then \
+         true; \
+       elif [ -f $(BUILD_SUBDIR)/$${dir}/Makefile ] ; then \
+         true; \
+       elif echo " $(BUILD_CONFIGDIRS) " | grep " $${dir} " >/dev/null 2>&1; then \
+         if [ -d $(srcdir)/$${dir} ]; then \
+           [ -d $(BUILD_SUBDIR)/$${dir} ] || mkdir $(BUILD_SUBDIR)/$${dir};\
+           r=`pwd`; export r; \
+           s=`cd $(srcdir); pwd`; export s; \
+           AR="$(AR_FOR_BUILD)"; export AR; \
+           AS="$(AS_FOR_BUILD)"; export AS; \
+           CC="$(CC_FOR_BUILD)"; export CC; \
+           CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
+           CXX="$(CXX_FOR_BUILD)"; export CXX; \
+           CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
+           GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \
+           DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \
+           LD="$(LD_FOR_BUILD)"; export LD; \
+            LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \
+           NM="$(NM_FOR_BUILD)"; export NM; \
+           RANLIB="$(RANLIB_FOR_BUILD)"; export RANLIB; \
+           WINDRES="$(WINDRES_FOR_BUILD)"; export WINDRES; \
+           echo Configuring in $(BUILD_SUBDIR)/$${dir}; \
+           cd "$(BUILD_SUBDIR)/$${dir}" || exit 1; \
+           case $(srcdir) in \
+           /* | [A-Za-z]:[\\/]*) \
+             topdir=$(srcdir) ;; \
+           *) \
+             case "$(BUILD_SUBDIR)" in \
+             .) topdir="../$(srcdir)" ;; \
+             *) topdir="../../$(srcdir)" ;; \
+             esac ;; \
+           esac; \
+           if [ "$(srcdir)" = "." ] ; then \
+             if [ "$(BUILD_SUBDIR)" != "." ] ; then \
+               if $(SHELL) $$s/symlink-tree $${topdir}/$${dir} "no-such-file" ; then \
+                 if [ -f Makefile ]; then \
+                   if $(MAKE) distclean; then \
+                     true; \
+                   else \
+                     exit 1; \
+                   fi; \
+                 else \
+                   true; \
+                 fi; \
+               else \
+                 exit 1; \
+               fi; \
+             else \
+               true; \
+             fi; \
+             srcdiroption="--srcdir=."; \
+             libsrcdir="."; \
+           else \
+             srcdiroption="--srcdir=$${topdir}/$${dir}"; \
+             libsrcdir="$$s/$${dir}"; \
+           fi; \
+           if [ -f $${libsrcdir}/configure ] ; then \
+             rm -f no-such-file skip-this-dir; \
+             CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
+               $(BUILD_CONFIGARGS) $${srcdiroption} \
+               --with-build-subdir="$(BUILD_SUBDIR)"; \
+           else \
+             rm -f no-such-file skip-this-dir; \
+             CONFIG_SITE=no-such-file $(SHELL) $$s/configure \
+               $(BUILD_CONFIGARGS) $${srcdiroption} \
+               --with-build-subdir="$(BUILD_SUBDIR)"; \
+           fi || exit 1; \
+           if [ -f skip-this-dir ] ; then \
+             sh skip-this-dir; \
+             rm -f skip-this-dir; \
+             cd ..; rmdir $${dir} || true; \
+           else \
+             true; \
+           fi; \
+         else \
+           true; \
+         fi; \
+       else \
+         true; \
+       fi
+
 # This rule is used to build the modules which use FLAGS_TO_PASS.  To
 # build a target all-X means to cd to X and make all.
 #
@@ -1339,12 +1460,12 @@ $(CONFIGURE_TARGET_MODULES):
            if [ -f $${libsrcdir}/configure ] ; then \
              rm -f no-such-file skip-this-dir; \
              CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
-               $(CONFIG_ARGUMENTS) $${srcdiroption} \
+               $(TARGET_CONFIGARGS) $${srcdiroption} \
                --with-target-subdir="$(TARGET_SUBDIR)"; \
            else \
              rm -f no-such-file skip-this-dir; \
              CONFIG_SITE=no-such-file $(SHELL) $$s/configure \
-               $(CONFIG_ARGUMENTS) $${srcdiroption} \
+               $(TARGET_CONFIGARGS) $${srcdiroption} \
                --with-target-subdir="$(TARGET_SUBDIR)"; \
            fi; \
            if [ -f skip-this-dir ] ; then \
@@ -1635,6 +1756,9 @@ all-target-libio: configure-target-libio all-gas all-ld all-gcc all-target-libib
 check-target-libio: all-target-libstdc++
 all-libgui: all-tcl all-tk all-tcl8.1 all-tk8.1 all-itcl
 all-libiberty:
+
+all-build-libiberty: configure-build-libiberty
+
 configure-target-libffi: $(ALL_GCC_C) 
 all-target-libffi: configure-target-libffi
 configure-target-libjava: $(ALL_GCC_CXX) configure-target-zlib configure-target-boehm-gc configure-target-qthreads configure-target-libffi
index ae89f40c831badecbc26e94ee54646fd9ca4c591..9a8b19743bfc370d8b87c05d43f99542d6f467d7 100755 (executable)
--- a/configure
+++ b/configure
@@ -1078,6 +1078,12 @@ else
        GDB_TK=""
 fi
 
+all_build_modules=
+if test x"${build_alias}" != x"${host_alias}"
+then
+  all_build_modules='$(ALL_BUILD_MODULES_LIST)'
+fi
+
 for subdir in . ${subdirs} ; do
 
     # ${subdir} is relative path from . to the directory we're currently
@@ -1378,6 +1384,7 @@ EOF
                     -e "s|^oldincludedir[      ]*=.*$|oldincludedir = ${oldincludedir}|" \
                     -e "s|^infodir[    ]*=.*$|infodir = ${infodir}|" \
                     -e "s|^mandir[     ]*=.*$|mandir = ${mandir}|" \
+                   -e "s|^ALL_BUILD_MODULES =.*|ALL_BUILD_MODULES =${all_build_modules}|" \
                    -e "/^CC[   ]*=/{
                        :loop1
                        /\\\\$/ N
index 7b7e4bb73dea1695670346fe9bd8e8d08852e4c1..fa83cedf6cca69e19b1f66038e5eaed60c55b322 100644 (file)
@@ -434,6 +434,18 @@ if [ ! -d ${target_subdir} ] ; then
   fi
 fi
 
+build_subdir=${build_alias}
+
+if [ x"${build_alias}" != x"${host}" ] ; then
+  if [ ! -d ${build_subdir} ] ; then
+    if mkdir ${build_subdir} ; then true
+    else
+      echo "'*** could not make ${PWD=`pwd`}/${build_subdir}" 1>&2
+      exit 1
+    fi
+  fi
+fi
+
 copy_dirs=
 
 # Handle --with-headers=XXX.  The contents of the named directory are
@@ -1260,7 +1272,8 @@ if [ "${shared}" = "yes" ]; then
   esac
 fi
 
-# Record target_configdirs and the configure arguments in Makefile.
+# Record target_configdirs and the configure arguments for target and
+# build configuration in Makefile.
 target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
 targargs=`echo "${arguments}" | \
        sed -e 's/--no[^        ]*//' \
@@ -1269,6 +1282,11 @@ targargs=`echo "${arguments}" | \
            -e 's/--bu[a-z-]*=[^        ]*//' \
            -e 's/--ta[a-z-]*=[^        ]*//'`
 
+# For the build-side libraries, we just need to pretend we're native,
+# and not use the same cache file.  Multilibs are neither needed nor
+# desired.
+buildargs="--cache-file=../config.cache --build=${build_alias} --host=${build_alias} ${targargs}"
+
 # Passing a --with-cross-host argument lets the target libraries know
 # whether they are being built with a cross-compiler or being built
 # native.  However, it would be better to use other mechanisms to make the
@@ -1289,6 +1307,9 @@ if [ x${with_newlib} != xno ] && echo " ${target_configdirs} " | grep " newlib "
   targargs="--with-newlib ${targargs}"
 fi
 
+# Pass the appropriate --host, --build, and --cache-file arguments.
+targargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${targargs}"
+
 # provide a proper gxx_include_dir.
 # Note, if you change the default, make sure to fix both here and in
 # the gcc, libio, and libstdc++ subdirectories.
@@ -1426,15 +1447,16 @@ qCXX_FOR_TARGET=`echo "$CXX_FOR_TARGET" | sed 's,[&%],\\\&,g'`
 # macros.
 qqCXX_FOR_TARGET=`echo "$qCXX_FOR_TARGET" | sed -e 's,[$][$],$$$$,g'`
 
-targargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${targargs}"
 sed -e "s:^TARGET_CONFIGDIRS[  ]*=.*$:TARGET_CONFIGDIRS = ${target_configdirs}:" \
-    -e "s%^CONFIG_ARGUMENTS[   ]*=.*$%CONFIG_ARGUMENTS = ${targargs}%" \
+    -e "s%^TARGET_CONFIGARGS[  ]*=.*$%TARGET_CONFIGARGS = ${targargs}%" \
     -e "s%^FLAGS_FOR_TARGET[   ]*=.*$%FLAGS_FOR_TARGET = ${FLAGS_FOR_TARGET}%" \
     -e "s%^CC_FOR_TARGET[      ]*=.*$%CC_FOR_TARGET = ${CC_FOR_TARGET}%" \
     -e "s%^CHILL_FOR_TARGET[   ]*=.*$%CHILL_FOR_TARGET = ${CHILL_FOR_TARGET}%" \
     -e "s%^CXX_FOR_TARGET[     ]*=.*$%CXX_FOR_TARGET = ${qCXX_FOR_TARGET}%" \
     -e "s%^CXX_FOR_TARGET_FOR_RECURSIVE_MAKE[  ]*=.*$%CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = ${qqCXX_FOR_TARGET}%" \
     -e "s%^TARGET_SUBDIR[      ]*=.*$%TARGET_SUBDIR = ${target_subdir}%" \
+    -e "s%^BUILD_SUBDIR[       ]*=.*$%BUILD_SUBDIR = ${build_subdir}%" \
+    -e "s%^BUILD_CONFIGARGS[   ]*=.*$%BUILD_CONFIGARGS = ${buildargs}%" \
     -e "s%^gxx_include_dir[    ]*=.*$%gxx_include_dir=${gxx_include_dir}%" \
        Makefile > Makefile.tem
 rm -f Makefile