diff --git a/libada/ChangeLog b/libada/ChangeLog
index 0028f1ca8a7791ec90b3fc55b2fc1969644e64dc..796a3e4ba8f90dbed6954d487f19d0ad07d6279f 100644
--- a/libada/ChangeLog
+++ b/libada/ChangeLog
@@ -1,3 +1,14 @@
+2004-04-19  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+	* Makefile.in: Revert most of Arnaud's last change.  Prefer anything
+	over error-prone Make abuse.  Remove temporary debug code.
+	(gnatlib-zcx): New target.
+	(gnattools): Split into gnattools-native, gnattools-cross, to fix
+	previous bug; select which on the basis of default_gnattools_target.
+	(ada.all.cross): Merged with gnattools-cross target.
+	* configure.ac: Set default_gnattools_target.
+	* configure: Regenerate.
+
 2004-04-19  Arnaud Charlet  <charlet@act-europe.fr>
 
 	* Makefile.in: Fix errors introduced in previous change (in particular,
diff --git a/libada/Makefile.in b/libada/Makefile.in
index 5e41f92c0f5a91ec4dcd76a198e56f86ae8d178a..7f0ce61f5957156dd4b43b7920b6bf697f5c2ed8 100644
--- a/libada/Makefile.in
+++ b/libada/Makefile.in
@@ -121,55 +121,80 @@ ADA_TOOLS_FLAGS_TO_PASS=\
 .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared
 gnatlib: @default_gnatlib_target@
 
-gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared:
+gnatlib-plain:
 	$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \
 	  GNATLIBFLAGS="$(GNATLIBFLAGS)" \
 	  GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
 	  TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
 	  THREAD_KIND="$(THREAD_KIND)" \
-	  TRACE="$(TRACE)" $@
+	  TRACE="$(TRACE)" \
+	  gnatlib
 
-.PHONY: rts-zfp rts-ravenscar
-rts-zfp rts-ravenscar:
+gnatlib-sjlj:
 	$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \
-	  GNATMAKE=../gnatmake-cross $@
+	  GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+	  GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+	  TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
+	  THREAD_KIND="$(THREAD_KIND)" \
+	  TRACE="$(TRACE)" \
+	  gnatlib-sjlj
 
-# Rules to build gnattools.
-# For cross builds of gnattools,
-# put the host RTS dir first in the PATH to hide the default runtime
-# files that are among the sources
-RTS_DIR:=$(strip $(subst \,/,$(shell gnatls -v | grep adalib )))
+gnatlib-zcx:
+	$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \
+	  GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+	  GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+	  TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
+	  THREAD_KIND="$(THREAD_KIND)" \
+	  TRACE="$(TRACE)" \
+	  gnatlib-zcx
 
-ifeq ($(build),$(target))
-  GNATTOOLS = gnattools-native
-else
-  GNATTOOLS = gnattools-cross
-endif
+gnatlib-shared:
+	$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \
+	  GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+	  GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+	  GNATLIBLDFLAGS="$(GNATLIBLDFLAGS)" \
+	  TARGET_LIBGCC2_CFLAGS="$(TARGET_LIBGCC2_CFLAGS)" \
+	  THREAD_KIND="$(THREAD_KIND)" \
+	  TRACE="$(TRACE)" \
+	  gnatlib-shared
 
-.PHONY: gnattools regnattools
-gnattools: $(GNATTOOLS)
+.PHONY: rts-zfp rts-ravenscar
+rts-zfp:
+	$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \
+	  GNATMAKE=../gnatmake-cross \
+	  rts-zfp
+
+rts-ravenscar:
+	$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) \
+	  GNATMAKE=../gnatmake-cross \
+	  rts-ravenscar
+
+# Rules to build gnattools.
+.PHONY: gnattools gnattools-native gnattools-cross regnattools
+gnattools: @default_gnattools_target@
 
 gnattools-native: gnatlib
 	$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
 	  ADA_INCLUDES="-I- -I../rts" \
-	  CC="../../xgcc -B../../" STAGE_PREFIX=../../ gnattools1
-	$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
-	$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools3
-
-regnattools:
-	$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1-re
+	  CC="../../xgcc -B../../" STAGE_PREFIX=../../  gnattools1
 	$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
 	$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools3
 
+# For cross builds of gnattools,
+# put the host RTS dir first in the PATH to hide the default runtime
+# files that are among the sources
+# FIXME: This should be done in configure.
+RTS_DIR:=$(strip $(subst \,/,$(shell gnatls -v | grep adalib )))
 gnattools-cross: gnatlib
-	$(MAKE) -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
+	$(MAKE)  -C $(GCC_DIR)/ada $(FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) \
 	  ADA_INCLUDES="-I$(RTS_DIR)../adainclude -I$(RTS_DIR)" \
 	  GNATMAKE="gnatmake" \
 	  GNATBIND="gnatbind" \
 	  GNATLINK="gnatlink" \
 	  LIBGNAT="" \
 	  gnattools1-re gnattools2 gnattools4
-	# rename cross tools, as expected by the GCC makefile when installing
+	# Rename cross tools to where the GCC makefile wants them when
+	# installing.  FIXME: installation should be done elsewhere.
 	if [ -f $(GCC_DIR)/gnatbind$(exeext) ] ; then \
 	  mv $(GCC_DIR)/gnatbind$(exeext) $(GCC_DIR)/gnatbind-cross$(exeext); \
 	fi
@@ -222,6 +247,11 @@ gnattools-cross: gnatlib
 	  mv $(GCC_DIR)/gprcmd$(exeext) $(GCC_DIR)/gprcmd-cross$(exeext); \
 	fi
 
+regnattools:
+	$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools1-re
+	$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools2
+	$(MAKE) -C $(GCC_DIR)/ada $(ADA_TOOLS_FLAGS_TO_PASS) gnattools3
+
 # Check uninstalled version.
 check:
 
@@ -261,5 +291,5 @@ Makefile: $(srcdir)/Makefile.in config.status
 config.status: $(srcdir)/configure
 	$(SHELL) ./config.status --recheck
 
-$(srcdir)/configure: @MAINT@ $(srcdir)/configure.in
+$(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac
 	cd $(srcdir) && autoconf
diff --git a/libada/configure b/libada/configure
index 6ec07c472fe752038f6cbc0fb0851658b11fb84f..b5e1827717ecb6f34a185237ec5dc61f8126e0cc 100755
--- a/libada/configure
+++ b/libada/configure
@@ -272,7 +272,7 @@ PACKAGE_STRING=
 PACKAGE_BUGREPORT=
 
 ac_unique_file="Makefile.in"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINT enable_shared INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S x_ada_cflags default_gnatlib_target LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS MAINT enable_shared INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S x_ada_cflags default_gnatlib_target default_gnattools_target LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -1556,11 +1556,14 @@ if test $build = $target \
    && test ${enable_shared} = yes ; then
   # Note that build=target is almost certainly the wrong test; FIXME
   default_gnatlib_target="gnatlib-shared"
+  default_gnattools_target="gnattools-cross"
 else
   default_gnatlib_target="gnatlib-plain"
+  default_gnattools_target="gnattools-native"
 fi
 
 
+
 # Output: create a Makefile.
           ac_config_files="$ac_config_files Makefile"
 
@@ -2221,6 +2224,7 @@ s,@target_noncanonical@,$target_noncanonical,;t t
 s,@LN_S@,$LN_S,;t t
 s,@x_ada_cflags@,$x_ada_cflags,;t t
 s,@default_gnatlib_target@,$default_gnatlib_target,;t t
+s,@default_gnattools_target@,$default_gnattools_target,;t t
 s,@LIBOBJS@,$LIBOBJS,;t t
 s,@LTLIBOBJS@,$LTLIBOBJS,;t t
 CEOF
diff --git a/libada/configure.ac b/libada/configure.ac
index 9698f5fe14c7c2619a44b4f67bce087c87e12ba7..eaa50b8644182050132a5bdb8b1b983bd0b8e696 100644
--- a/libada/configure.ac
+++ b/libada/configure.ac
@@ -81,10 +81,13 @@ if test $build = $target \
    && test ${enable_shared} = yes ; then
   # Note that build=target is almost certainly the wrong test; FIXME
   default_gnatlib_target="gnatlib-shared"
+  default_gnattools_target="gnattools-cross"
 else
   default_gnatlib_target="gnatlib-plain"
+  default_gnattools_target="gnattools-native"
 fi
 AC_SUBST([default_gnatlib_target])
+AC_SUBST([default_gnattools_target])
 
 # Output: create a Makefile.
 AC_CONFIG_FILES([Makefile])