This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB 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
dependencies.

So it all works.

Woo hoo.

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

	* configure.in: 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.
	* Makefile.in: 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.
 TAGS: do-TAGS
 
-
 # --------------------------------------
 # 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.)
+gcc/xgcc:
+	$(MAKE) all-gcc
 
 # --------------------------------------
 # Dependencies between different modules
Index: configure.in
===================================================================
RCS file: /cvs/gcc/gcc/configure.in,v
retrieving revision 1.196
diff -u -r1.196 configure.in
--- configure.in	19 Dec 2002 20:23:50 -0000	1.196
+++ configure.in	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.
+maybe_compiler_driver=
+
+# 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 ;;
+esac
 
 sedtemp=sed.$$
 cat >$sedtemp <<EOF
@@ -1722,7 +1734,7 @@
 s%@target_configargs@%${targargs}%
 s%@FLAGS_FOR_TARGET@%${FLAGS_FOR_TARGET}%
 s%@CC_FOR_TARGET@%\$(STAGE_CC_WRAPPER) ${CC_FOR_TARGET}%
-s%@BASE_CC_FOR_TARGET@%${BASE_CC_FOR_TARGET}%
+s%@maybe_compiler_driver@%${maybe_compiler_driver}%
 s%@GCJ_FOR_TARGET@%\$(STAGE_CC_WRAPPER) ${GCJ_FOR_TARGET}%
 s%@CXX_FOR_TARGET@%\$(STAGE_CC_WRAPPER) ${qCXX_FOR_TARGET}%
 s%@RAW_CXX_FOR_TARGET@%\$(STAGE_CC_WRAPPER) ${qRAW_CXX_FOR_TARGET}%


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