This is the mail archive of the mailing list for the binutils project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

(toplevel patch) Fix multilib.out dependencies and related problems.

I think this finally fixes the various problems related to phony depdencies,
real dependencies, and multilib.out.  DJ, please review. :-)

Bootstrapped on i686-pc-linux-gnu.  Ran 'make'; no reconfigurations.  
Removed xgcc and ran 'make'; gcc rebuilt it, and target libs were 
reconfigured and built. 
Ran 'make'; no reconfigurations.  

Configured and built with a preset CC_FOR_TARGET; no errors from missing

So it all works.

Woo hoo.

I know I have some leftover BASE_CC_FOR_TARGET junk, but I'll get that later.

	* Issue 'maybe_compiler_driver' 
	(rather than BASE_CC_FOR_TARGET) as the dependence for multilib.out
	* Makefile.tpl: Use it; add regen rule for gcc/xgcc.
	* Regenerate.

Index: Makefile.tpl
RCS file: /cvs/gcc/gcc/Makefile.tpl,v
retrieving revision 1.21
diff -u -r1.21 Makefile.tpl
--- Makefile.tpl	19 Dec 2002 20:23:50 -0000	1.21
+++ Makefile.tpl	19 Dec 2002 21:16:18 -0000
@@ -784,7 +784,6 @@
 # built are.
 # --------------------------------------
 # Modules which run on the build machine
 # --------------------------------------
@@ -970,7 +969,7 @@
 # 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
+$(TARGET_SUBDIR)/[+module+]/multilib.out: @maybe_compiler_driver@
 	@[ -d $(TARGET_SUBDIR)/[+module+] ] || mkdir $(TARGET_SUBDIR)/[+module+];\
 	r=`${PWD}`; export r; \
 	echo "Configuring multilibs for [+module+]"; \
@@ -1264,6 +1263,14 @@
 	  rm -rf gcc/include; \
 	  mv gcc/tmp-include gcc/include 2>/dev/null; \
 	else true; fi
+# Special multilib.out dependence support.
+# When in-tree gcc is being used as CC_FOR_TARGET, we make
+# multilib.out depend on gcc/xgcc.  So we need a rule for what to
+# do if gcc/xgcc is in fact missing.  (Normally it would be either
+# up to date or newer than multilib.out, not missing.)
+	$(MAKE) all-gcc
 # --------------------------------------
 # Dependencies between different modules
RCS file: /cvs/gcc/gcc/,v
retrieving revision 1.196
diff -u -r1.196
---	19 Dec 2002 20:23:50 -0000	1.196
+++	19 Dec 2002 21:16:21 -0000
@@ -1698,11 +1698,23 @@
 qqCXX_FOR_TARGET=`echo "$qCXX_FOR_TARGET" | sed -e 's,[$][$],$$$$,g'`
 qqRAW_CXX_FOR_TARGET=`echo "$qRAW_CXX_FOR_TARGET" | sed -e 's,[$][$],$$$$,g'`
-# BASE_CC_FOR_TARGET is the actual program file of CC_FOR_TARGET,
-# for use in dependencies.  Replace $$r with a relative
-# path if it's present.
-set dummy $CC_FOR_TARGET; cc_for_target_first_word=$2
-BASE_CC_FOR_TARGET=`echo "$cc_for_target_first_word" | sed -e 's,[$][$]r,.,'`
+# maybe_compiler_driver is the program file on which multilib.out depends.
+# If we're not using the configured GCC, for now we just punt on the
+# dependency.  If you change the external compiler you're using, you
+# should know enough to reconfigure from scratch.
+# On the other hand, if you are using the configured GCC...
+case "${configdirs}" in
+  *gcc*) # We're configuring GCC.
+    case "${CC_FOR_TARGET}" in
+      *xgcc*)
+        # And we are (probably) using the configured GCC.
+        maybe_compiler_driver=gcc/xgcc
+        ;;
+    esac ;;
 cat >$sedtemp <<EOF
@@ -1722,7 +1734,7 @@

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]