From: Nathanael Nerode <neroden@twcny.rr.com>
To: gcc-patches@gcc.gnu.org, gdb-patches@sources.redhat.com,
binutils@sources.redhat.com, dj@redhat.com
Subject: (toplevel patch) Fix multilib.out dependencies and related problems.
Date: Thu, 19 Dec 2002 16:16:00 -0000 [thread overview]
Message-ID: <20021220000447.GA18896@doctormoo> (raw)
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}%
next reply other threads:[~2002-12-20 0:06 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-12-19 16:16 Nathanael Nerode [this message]
2002-12-19 17:18 ` DJ Delorie
2002-12-21 19:02 ` Alexandre Oliva
2002-12-19 17:29 Nathanael Nerode
2002-12-19 18:00 ` DJ Delorie
2002-12-19 18:08 Nathanael Nerode
2002-12-19 18:23 ` DJ Delorie
2002-12-19 18:24 ` Zack Weinberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20021220000447.GA18896@doctormoo \
--to=neroden@twcny.rr.com \
--cc=binutils@sources.redhat.com \
--cc=dj@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox