public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* PR/17383: fix gcc in-srcdir build (take 2)
@ 2005-02-27  4:24 Paolo Bonzini
  2005-02-28 14:29 ` Nick Clifton
  2005-03-01 15:17 ` Mike Stump
  0 siblings, 2 replies; 9+ messages in thread
From: Paolo Bonzini @ 2005-02-27  4:24 UTC (permalink / raw)
  To: GCC Patches, binutils, gdb-patches, DJ Delorie

[-- Attachment #1: Type: text/plain, Size: 403 bytes --]

The attached patch creates the host-subdir only if gcc is found in the
tree.  It is even a bit simpler than the original because the topdir is
found more easily, replacing with .. every element of the path from the
topdir to the builddirs.

It has passed in-srcdir and out-of-srcdir builds of gcc (all languages,
powerpc-apple-darwin7.8.0) and binutils+gdb (i686-pc-linux-gnu).  Ok for
gcc/src?

Paolo


[-- Attachment #2: fix-pr17383-3.patch --]
[-- Type: text/plain, Size: 27196 bytes --]

2005-05-25  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/17383
	* Makefile.def (target_modules): Remove "stage", now unnecessary.
	* Makefile.tpl (HOST_SUBDIR): New substitution.
	(STAGE_HOST_EXPORTS, EXPECT, HOST_LIB_PATH, USUAL_AR_FOR_TARGET,
	USUAL_AS_FOR_TARGET, USUAL_DLLTOOL_FOR_TARGET, USUAL_GCC_FOR_TARGET,
	USUAL_LD_FOR_TARGET, USUAL_NM_FOR_TARGET, USUAL_OBJDUMP_FOR_TARGET,
	USUAL_RANLIB_FOR_TARGET, USUAL_WINDRES_FOR_TARGET): Use it.
	(Host modules, Bootstrapped modules): Use it.
	(Build modules, Target modules): Do not create symlink trees,
	always configure out-of-srcdir.
	(distclean): Try removing $(host_subdir) with rm before using rm -rf.
	* configure.in (FLAGS_FOR_TARGET, CC_FOR_TARGET, GCJ_FOR_TARGET,
	GFORTRAN_FOR_TARGET, CXX_FOR_TARGET, RAW_CXX_FOR_TARGET): Use
	$(HOST_SUBDIR).  Create a symlink for host_subdir.

	* Makefile.in: Regenerate.
	* configure: Regenerate.

config:
2005-05-25  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/17383
	* config/acx.m4 (GCC_TOPLEV_SUBDIRS): Set HOST_SUBDIR if an in-src
	gcc build is going.

gcc:
2005-05-25  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/17383
	* gcc/Makefile.in (host_subdir): New.
	(build_objdir): New.  Replace ../$(build_subdir) with it throughout.
	* gcc/configure: Regenerate.

libjava:
2005-05-25  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/17383
	* configure.ac: Call GCC_TOPLEV_SUBDIRS.
	(COMPPATH): Removed.
	(ZIP, GCJH): Replace it with ../$(host_subdir).
	(built_gcc_dir): Add $(host_subdir).
	* configure: Regenerate.
	* Makefile.in, include/Makefile.in, testsuite/Makefile.in,
	external/Makefile.in, external/sax/Makefile.in,
	external/w3c_dom/Makefile.in: Regenerate.

libobjc:
2005-05-25  Paolo Bonzini  <bonzini@gnu.org>

	PR bootstrap/17383
	* configure.ac: Call GCC_TOPLEV_SUBDIRS.
	(Determine CFLAGS for gthread): Use $host_subdir.
	* configure: Regenerate.
	* Makefile.in (host_subdir): New.
	(INCLUDES): Use it.

Index: Makefile.def
===================================================================
RCS file: /cvs/gcc/gcc/Makefile.def,v
retrieving revision 1.46
diff -u -r1.46 Makefile.def
--- Makefile.def	17 Jan 2005 23:50:25 -0000	1.46
+++ Makefile.def	25 Feb 2005 13:39:29 -0000
@@ -117,7 +117,7 @@
 target_modules = { module= newlib; };
 target_modules = { module= libgfortran; };
 target_modules = { module= libobjc; };
-target_modules = { module= libtermcap; no_check=true; stage=true;
+target_modules = { module= libtermcap; no_check=true;
                    missing=mostlyclean;
                    missing=clean;
                    missing=distclean;
@@ -129,7 +129,7 @@
 target_modules = { module= examples; no_check=true; no_install=true; };
 target_modules = { module= libffi; };
 target_modules = { module= libjava; raw_cxx=true; };
-target_modules = { module= zlib; stage=true; };
+target_modules = { module= zlib; };
 target_modules = { module= boehm-gc; };
 target_modules = { module= qthreads; };
 target_modules = { module= rda; };
Index: Makefile.tpl
===================================================================
RCS file: /cvs/gcc/gcc/Makefile.tpl,v
retrieving revision 1.124
diff -u -r1.124 Makefile.tpl
--- Makefile.tpl	17 Jan 2005 23:50:27 -0000	1.124
+++ Makefile.tpl	26 Feb 2005 09:36:24 -0000
@@ -152,6 +152,9 @@
 # This is set by the configure script to the arguments to use when configuring
 # directories built for the host system.
 HOST_CONFIGARGS = @host_configargs@
+# Host programs are put under this directory, which is . except if building
+# with srcdir=..
+HOST_SUBDIR = @host_subdir@
 # This is the list of variables to export in the environment when
 # configuring subdirectories for the host system.
 HOST_EXPORTS = \
@@ -181,8 +184,12 @@
 # Similar, for later GCC stages.
 STAGE_HOST_EXPORTS = \
 	$(HOST_EXPORTS) \
-	CC="$(STAGE_CC_WRAPPER) $$r/prev-gcc/xgcc$(exeext) -B$$r/prev-gcc/ -B$(build_tooldir)/bin/"; export CC; \
-	CC_FOR_BUILD="$(STAGE_CC_WRAPPER) $$r/prev-gcc/xgcc$(exeext) -B$$r/prev-gcc/ -B$(build_tooldir)/bin/"; export CC_FOR_BUILD;
+	CC="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/xgcc$(exeext) \
+	  -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/"; export CC; \
+	CC_FOR_BUILD="$(STAGE_CC_WRAPPER) \
+	  $$r/$(HOST_SUBDIR)/prev-gcc/xgcc$(exeext) \
+	  -B$$r/$(HOST_SUBDIR)/prev-gcc/ \
+	  -B$(build_tooldir)/bin/"; export CC_FOR_BUILD;
 
 # This is set by the configure script to the list of directories which
 # should be built using the target tools.
@@ -305,8 +312,9 @@
 # (Default to avoid splitting info files by setting the threshold high.)
 MAKEINFOFLAGS = --split-size=5000000
 
-EXPECT = `if [ -f $$r/expect/expect ] ; \
-	then echo $$r/expect/expect ; \
+# FIXME: expect may become a build tool?
+EXPECT = `if [ -f $$r/$(HOST_SUBDIR)/expect/expect ] ; \
+	then echo $$r/$(HOST_SUBDIR)/expect/expect ; \
 	else echo expect ; fi`
 
 RUNTEST = `if [ -f $$s/dejagnu/runtest ] ; \
@@ -319,7 +327,7 @@
 
 # This is the list of directories that may be needed in RPATH_ENVVAR
 # so that programs built for the host machine work.
-HOST_LIB_PATH = $$r/bfd:$$r/opcodes
+HOST_LIB_PATH = $$r/$(HOST_SUBDIR)/bfd:$$r/$(HOST_SUBDIR)/opcodes
 
 AS = @AS@
 
@@ -360,8 +368,8 @@
 AR_FOR_TARGET=@AR_FOR_TARGET@
 CONFIGURED_AR_FOR_TARGET=@CONFIGURED_AR_FOR_TARGET@
 USUAL_AR_FOR_TARGET = ` \
-  if [ -f $$r/binutils/ar ] ; then \
-    echo $$r/binutils/ar ; \
+  if [ -f $$r/$(HOST_SUBDIR)/binutils/ar ] ; then \
+    echo $$r/$(HOST_SUBDIR)/binutils/ar ; \
   else \
     if [ '$(host)' = '$(target)' ] ; then \
       echo $(AR); \
@@ -373,9 +381,9 @@
 AS_FOR_TARGET=@AS_FOR_TARGET@
 CONFIGURED_AS_FOR_TARGET=@CONFIGURED_AS_FOR_TARGET@
 USUAL_AS_FOR_TARGET = ` \
-  if [ -f $$r/gas/as-new ] ; then \
-    echo $$r/gas/as-new ; \
-  elif [ -f $$r/gcc/xgcc ]; then \
+  if [ -f $$r/$(HOST_SUBDIR)/gas/as-new ] ; then \
+    echo $$r/$(HOST_SUBDIR)/gas/as-new ; \
+  elif [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ]; then \
     $(CC_FOR_TARGET) -print-prog-name=as ; \
   else \
     if [ '$(host)' = '$(target)' ] ; then \
@@ -396,7 +404,8 @@
 # build libgcc2.a.  We define it here so that it can itself be
 # overridden on the command line.
 GCC_FOR_TARGET=@GCC_FOR_TARGET@
-USUAL_GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) $$r/gcc/xgcc -B$$r/gcc/ $(FLAGS_FOR_TARGET)
+USUAL_GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) \
+  $$r/$(HOST_SUBDIR)/gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/ $(FLAGS_FOR_TARGET)
 LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
 
 CXX_FOR_TARGET = @CXX_FOR_TARGET@
@@ -409,8 +418,8 @@
 DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
 CONFIGURED_DLLTOOL_FOR_TARGET=@CONFIGURED_DLLTOOL_FOR_TARGET@
 USUAL_DLLTOOL_FOR_TARGET = ` \
-  if [ -f $$r/binutils/dlltool ] ; then \
-    echo $$r/binutils/dlltool ; \
+  if [ -f $$r/$(HOST_SUBDIR)/binutils/dlltool ] ; then \
+    echo $$r/$(HOST_SUBDIR)/binutils/dlltool ; \
   else \
     if [ '$(host)' = '$(target)' ] ; then \
       echo $(DLLTOOL); \
@@ -425,9 +434,9 @@
 LD_FOR_TARGET=@LD_FOR_TARGET@
 CONFIGURED_LD_FOR_TARGET=@CONFIGURED_LD_FOR_TARGET@
 USUAL_LD_FOR_TARGET = ` \
-  if [ -f $$r/ld/ld-new ] ; then \
-    echo $$r/ld/ld-new ; \
-  elif [ -f $$r/gcc/xgcc ]; then \
+  if [ -f $$r/$(HOST_SUBDIR)/ld/ld-new ] ; then \
+    echo $$r/$(HOST_SUBDIR)/ld/ld-new ; \
+  elif [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ]; then \
     $(CC_FOR_TARGET) -print-prog-name=ld ; \
   else \
     if [ '$(host)' = '$(target)' ] ; then \
@@ -442,9 +451,9 @@
 NM_FOR_TARGET=@NM_FOR_TARGET@
 CONFIGURED_NM_FOR_TARGET=@CONFIGURED_NM_FOR_TARGET@
 USUAL_NM_FOR_TARGET = ` \
-  if [ -f $$r/binutils/nm-new ] ; then \
-    echo $$r/binutils/nm-new ; \
-  elif [ -f $$r/gcc/xgcc ]; then \
+  if [ -f $$r/$(HOST_SUBDIR)/binutils/nm-new ] ; then \
+    echo $$r/$(HOST_SUBDIR)/binutils/nm-new ; \
+  elif [ -f $$r/$(HOST_SUBDIR)/gcc/xgcc ]; then \
     $(CC_FOR_TARGET) -print-prog-name=nm ; \
   else \
     if [ '$(host)' = '$(target)' ] ; then \
@@ -457,8 +466,8 @@
 RANLIB_FOR_TARGET=@RANLIB_FOR_TARGET@
 CONFIGURED_RANLIB_FOR_TARGET=@CONFIGURED_RANLIB_FOR_TARGET@
 USUAL_RANLIB_FOR_TARGET = ` \
-  if [ -f $$r/binutils/ranlib ] ; then \
-    echo $$r/binutils/ranlib ; \
+  if [ -f $$r/$(HOST_SUBDIR)/binutils/ranlib ] ; then \
+    echo $$r/$(HOST_SUBDIR)/binutils/ranlib ; \
   else \
     if [ '$(host)' = '$(target)' ] ; then \
       if [ x'$(RANLIB)' != x ]; then \
@@ -474,8 +483,8 @@
 WINDRES_FOR_TARGET=@WINDRES_FOR_TARGET@
 CONFIGURED_WINDRES_FOR_TARGET=@CONFIGURED_WINDRES_FOR_TARGET@
 USUAL_WINDRES_FOR_TARGET = ` \
-  if [ -f $$r/binutils/windres ] ; then \
-    echo $$r/binutils/windres ; \
+  if [ -f $$r/$(HOST_SUBDIR)/binutils/windres ] ; then \
+    echo $$r/$(HOST_SUBDIR)/binutils/windres ; \
   else \
     if [ '$(host)' = '$(target)' ] ; then \
       echo $(WINDRES); \
@@ -670,6 +679,9 @@
 	  rm -rf $(TARGET_SUBDIR); \
 	else true; fi
 	-rm -rf $(BUILD_SUBDIR)
+	-if [ "$(HOST_SUBDIR)" != "." ]; then \
+	  rm -rf $(HOST_SUBDIR); \
+	else true; fi
 	-rm -f texinfo/po/Makefile texinfo/po/Makefile.in texinfo/info/Makefile
 	-rm -f texinfo/doc/Makefile texinfo/po/POTFILES
 	-rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null
@@ -822,38 +834,12 @@
 	echo Configuring in $(BUILD_SUBDIR)/[+module+]; \
 	cd "$(BUILD_SUBDIR)/[+module+]" || exit 1; \
 	case $(srcdir) in \
-	  /* | [A-Za-z]:[\\/]*) \
-	    topdir=$(srcdir) ;; \
-	  *) \
-	    case "$(BUILD_SUBDIR)" in \
-	      .) topdir="../$(srcdir)" ;; \
-	      *) topdir="../../$(srcdir)" ;; \
-	    esac ;; \
+	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+	  *) topdir=`echo $(BUILD_SUBDIR)/[+module+]/ | \
+		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `/$(srcdir) ;; \
 	esac; \
-	if [ "$(srcdir)" = "." ] ; then \
-	  if [ "$(BUILD_SUBDIR)" != "." ] ; then \
-	    if $(SHELL) $$s/symlink-tree $${topdir}/[+module+] "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}/[+module+]"; \
-	  libsrcdir="$$s/[+module+]"; \
-	fi; \
+	srcdiroption="--srcdir=$${topdir}/[+module+]"; \
+	libsrcdir="$$s/[+module+]"; \
 	rm -f no-such-file || : ; \
 	CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
 	  $(BUILD_CONFIGARGS) $${srcdiroption} \
@@ -885,24 +871,20 @@
 maybe-configure-[+module+]: configure-[+module+]
 configure-[+module+]:
 	@[+ IF bootstrap +]test -f stage_last && exit 0; \
-	[+ ENDIF bootstrap +]test ! -f [+module+]/Makefile || exit 0; \
-	[ -d [+module+] ] || mkdir [+module+]; \
+	[+ ENDIF bootstrap +]test ! -f $(HOST_SUBDIR)/[+module+]/Makefile || exit 0; \
+	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/[+module+] ; \
 	r=`${PWD_COMMAND}`; export r; \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	$(HOST_EXPORTS) \
 	echo Configuring in [+module+]; \
-	cd [+module+] || exit 1; \
+	cd $(HOST_SUBDIR)/[+module+] || exit 1; \
 	case $(srcdir) in \
-	  \.) \
-	    srcdiroption="--srcdir=."; \
-	    libsrcdir=".";; \
-	  /* | [A-Za-z]:[\\/]*) \
-	    srcdiroption="--srcdir=$(srcdir)/[+module+]"; \
-	    libsrcdir="$$s/[+module+]";; \
-	  *) \
-	    srcdiroption="--srcdir=../$(srcdir)/[+module+]"; \
-	    libsrcdir="$$s/[+module+]";; \
+	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+	  *) topdir=`echo $(HOST_SUBDIR)/[+module+]/ | \
+		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `/$(srcdir) ;; \
 	esac; \
+	srcdiroption="--srcdir=$${topdir}/[+module+]"; \
+	libsrcdir="$$s/[+module+]"; \
 	$(SHELL) $${libsrcdir}/configure \
 	  $(HOST_CONFIGARGS) $${srcdiroption} [+extra_configure_flags+] \
 	  || exit 1
@@ -919,8 +901,8 @@
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	$(SET_LIB_PATH) \
 	$(HOST_EXPORTS) \
-	(cd [+module+] && $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] \
-	  $(TARGET-[+module+]))
+	(cd $(HOST_SUBDIR)/[+module+] && \
+	  $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] $(TARGET-[+module+]))
 @endif [+module+]
 
 .PHONY: check-[+module+] maybe-check-[+module+]
@@ -937,8 +919,8 @@
 	  s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	  $(SET_LIB_PATH) \
 	  $(HOST_EXPORTS) \
-	  (cd [+module+] && $(MAKE) $(FLAGS_TO_PASS) [+ 
-	    extra_make_flags+] check); \
+	  (cd $(HOST_SUBDIR)/[+module+] && \
+	    $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] check)
 	fi
 [+ ELSE check +]
 check-[+module+]:
@@ -946,8 +928,8 @@
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	$(SET_LIB_PATH) \
 	$(HOST_EXPORTS) \
-	(cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
-	  extra_make_flags+] check)
+	(cd $(HOST_SUBDIR)/[+module+] && \
+	  $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] check)
 [+ ENDIF no_check +]
 @endif [+module+]
 
@@ -963,8 +945,8 @@
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	$(SET_LIB_PATH) \
 	$(HOST_EXPORTS) \
-	(cd [+module+] && $(MAKE) $(FLAGS_TO_PASS)[+ 
-	  extra_make_flags+] install)
+	(cd $(HOST_SUBDIR)/[+module+] && \
+	  $(MAKE) $(FLAGS_TO_PASS) [+extra_make_flags+] check)
 [+ ENDIF no_install +]
 @endif [+module+]
 
@@ -991,7 +973,7 @@
 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
 	done; \
 	echo "Doing [+make_target+] in [+module+]" ; \
-	(cd [+module+] && \
+	(cd $(HOST_SUBDIR)/[+module+] && \
 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
 	          "RANLIB=$${RANLIB}" \
@@ -1032,38 +1014,12 @@
 	echo Configuring in $(TARGET_SUBDIR)/[+module+]; \
 	cd "$(TARGET_SUBDIR)/[+module+]" || exit 1; \
 	case $(srcdir) in \
-	  /* | [A-Za-z]:[\\/]*) \
-	    topdir=$(srcdir) ;; \
-	  *) \
-	    case "$(TARGET_SUBDIR)" in \
-	      .) topdir="../$(srcdir)" ;; \
-	      *) topdir="../../$(srcdir)" ;; \
-	    esac ;; \
-	esac; \[+ IF stage +]
-	if [ "$(srcdir)" = "." ] ; then \
-	  if [ "$(TARGET_SUBDIR)" != "." ] ; then \
-	    if $(SHELL) $$s/symlink-tree $${topdir}/[+module+] "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 \[+ ENDIF stage +]
-	  srcdiroption="--srcdir=$${topdir}/[+module+]"; \
-	  libsrcdir="$$s/[+module+]"; \[+ IF stage +]
-	fi; \[+ ENDIF stage +]
+	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+	  *) topdir=`echo $(TARGET_SUBDIR)/[+module+]/ | \
+		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `/$(srcdir) ;; \
+	esac; \
+	srcdiroption="--srcdir=$${topdir}/[+module+]"; \
+	libsrcdir="$$s/[+module+]"; \
 	rm -f no-such-file || : ; \
 	CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
 	  $(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -1378,18 +1334,25 @@
 stage[+id+]-start::
 	@[ -f stage_current ] && $(MAKE) `cat stage_current`-end || : ; \
 	echo stage[+id+] > stage_current ; \
-	echo stage[+id+] > stage_last[+ FOR host_modules +][+ IF bootstrap +]
+	echo stage[+id+] > stage_last; \
+	$(mkinstalldirs) $(HOST_SUBDIR)[+
+   FOR host_modules +][+ IF bootstrap +]
 @if [+ module +]
-	@[ -d stage[+id+]-[+module+] ] || mkdir stage[+id+]-[+module+]; \
-	set stage[+id+]-[+module+] [+module+] ; @CREATE_LINK_TO_DIR@ [+ IF prev +] ; \
-	set stage[+prev+]-[+module+] prev-[+module+] ; @CREATE_LINK_TO_DIR@ [+ ENDIF prev +]
+	@cd $(HOST_SUBDIR); [ -d stage[+id+]-[+module+] ] || \
+	  mkdir stage[+id+]-[+module+]; \
+	set stage[+id+]-[+module+] [+module+] ; \
+	@CREATE_LINK_TO_DIR@ [+ IF prev +] ; \
+	set stage[+prev+]-[+module+] prev-[+module+] ; \
+	@CREATE_LINK_TO_DIR@ [+ ENDIF prev +]
 @endif [+ module +][+ ENDIF bootstrap +][+ ENDFOR host_modules +]
 
 stage[+id+]-end::
 	@rm -f stage_current[+ FOR host_modules +][+ IF bootstrap +]
 @if [+ module +]
-	@set [+module+] stage[+id+]-[+module+] ; @UNDO_LINK_TO_DIR@ [+ IF prev +] ; \
-	set prev-[+module+] stage[+prev+]-[+module+] ; @UNDO_LINK_TO_DIR@ [+ ENDIF prev +]
+	@cd $(HOST_SUBDIR); set [+module+] stage[+id+]-[+module+] ; \
+	@UNDO_LINK_TO_DIR@ [+ IF prev +] ; \
+	set prev-[+module+] stage[+prev+]-[+module+] ; \
+	@UNDO_LINK_TO_DIR@ [+ ENDIF prev +]
 @endif [+ module +][+ ENDIF bootstrap +][+ ENDFOR host_modules +]
 
 # Bubble a bugfix through all the stages up to stage [+id+].  They
@@ -1434,18 +1397,14 @@
 	$(STAGE_HOST_EXPORTS) [+ ELSE prev +] \
 	$(HOST_EXPORTS) [+ ENDIF prev +] \
 	echo Configuring stage [+id+] in [+module+] ; \
-	cd [+module+] || exit 1; \
+	cd $(HOST_SUBDIR)/[+module+] || exit 1; \
 	case $(srcdir) in \
-	  \.) \
-	    srcdiroption="--srcdir=."; \
-	    libsrcdir=".";; \
-	  /* | [A-Za-z]:[\\/]*) \
-	    srcdiroption="--srcdir=$(srcdir)/[+module+]"; \
-	    libsrcdir="$$s/[+module+]";; \
-	  *) \
-	    srcdiroption="--srcdir=../$(srcdir)/[+module+]"; \
-	    libsrcdir="$$s/[+module+]";; \
+	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+	  *) topdir=`echo $(HOST_SUBDIR)/[+module+]/ | \
+		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `/$(srcdir) ;; \
 	esac; \
+	srcdiroption="--srcdir=$${topdir}/[+module+]"; \
+	libsrcdir="$$s/[+module+]"; \
 	$(SHELL) $${libsrcdir}/configure \
 	  $(HOST_CONFIGARGS) $${srcdiroption} \
 	  [+stage_configure_flags+] [+extra_configure_flags+]
@@ -1457,7 +1416,7 @@
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; [+ IF prev +] \
 	$(STAGE_HOST_EXPORTS) [+ ELSE prev +] \
 	$(HOST_EXPORTS) [+ ENDIF prev +] \
-	cd [+module+] && \
+	cd $(HOST_SUBDIR)/[+module+] && \
 	$(MAKE) $(FLAGS_TO_PASS) [+ IF prev +] \
 		$(POSTSTAGE1_FLAGS_TO_PASS) [+ ENDIF prev +] \
 		[+stage_make_flags+] [+extra_make_flags+]
@@ -1467,7 +1426,7 @@
 	@[ -f [+module+]/Makefile ] || [ -f stage[+id+]-[+module+]/Makefile ] \
 	  || exit 0 ; \
 	[ -f [+module+]/Makefile ] || $(MAKE) stage[+id+]-start ; \
-	cd [+module+] && \
+	cd $(HOST_SUBDIR)/[+module+] && \
 	$(MAKE) $(FLAGS_TO_PASS) [+ IF prev +] \
 		$(POSTSTAGE1_FLAGS_TO_PASS) [+ ENDIF prev +] \
 		[+stage_make_flags+] [+extra_make_flags+] clean
Index: configure.in
===================================================================
RCS file: /cvs/gcc/gcc/configure.in,v
retrieving revision 1.341
diff -u -r1.341 configure.in
--- configure.in	23 Feb 2005 10:12:44 -0000	1.341
+++ configure.in	26 Feb 2005 09:36:48 -0000
@@ -1988,7 +1988,7 @@
        # to it.  This is right: we don't want to search that directory
        # for binaries, but we want the header files in there, so add
        # them explicitly.
-       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/gcc/include'
+       FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/$(HOST_SUBDIR)/gcc/include'
 
        # Someone might think of using the pre-installed headers on
        # Canadian crosses, in case the installed compiler is not fully
@@ -2035,13 +2035,13 @@
 if test "x${use_gnu_ld}" = x &&
    echo " ${configdirs} " | grep " ld " > /dev/null ; then
   # Arrange for us to find uninstalled linker scripts.
-  FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/ld'
+  FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(HOST_SUBDIR)/ld'
 fi
 
 if test "x${CC_FOR_TARGET+set}" = xset; then
   :
 elif test -d ${srcdir}/gcc; then
-  CC_FOR_TARGET='$$r/gcc/xgcc -B$$r/gcc/'
+  CC_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/'
 elif test "$host" = "$target"; then
   CC_FOR_TARGET='$(CC)'
 else
@@ -2052,7 +2052,7 @@
 if test "x${GCJ_FOR_TARGET+set}" = xset; then
   :
 elif test -d ${srcdir}/gcc; then
-  GCJ_FOR_TARGET='$$r/gcc/gcj -B$$r/gcc/'
+  GCJ_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/gcj -B$$r/$(HOST_SUBDIR)/gcc/'
 elif test "$host" = "$target"; then
   GCJ_FOR_TARGET='gcj'
 else
@@ -2063,7 +2063,7 @@
 if test "x${GFORTRAN_FOR_TARGET+set}" = xset; then
   :
 elif test -d ${srcdir}/gcc; then
-  GFORTRAN_FOR_TARGET='$$r/gcc/gfortran -B$$r/gcc/'
+  GFORTRAN_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/'
 elif test "$host" = "$target"; then
   GFORTRAN_FOR_TARGET='gfortran'
 else
@@ -2088,8 +2088,8 @@
   # default whereas gcc does not.
   # RAW_CXX_FOR_TARGET is for linking C++ or java; CXX_FOR_TARGET is for
   # all other cases.
-  CXX_FOR_TARGET='$$r/gcc/g++ -B$$r/gcc/ -nostdinc++ '$libstdcxx_flags
-  RAW_CXX_FOR_TARGET='$$r/gcc/xgcc -shared-libgcc -B$$r/gcc/ -nostdinc++ '$raw_libstdcxx_flags
+  CXX_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/g++ -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ '$libstdcxx_flags
+  RAW_CXX_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ '$raw_libstdcxx_flags
 elif test "$host" = "$target"; then
   CXX_FOR_TARGET='$(CXX)'
   RAW_CXX_FOR_TARGET=${CXX_FOR_TARGET}
@@ -2288,7 +2288,7 @@
    && rm -f confdir.s2; then
   gcc_cv_prog_ln_s_dir=yes
 else
-  gcc_cv_prog_ln_s_dir=yes
+  gcc_cv_prog_ln_s_dir=no
 fi
 rm -rf confdir.s1 confdir.s2])
 
Index: config/acx.m4
===================================================================
RCS file: /cvs/gcc/gcc/config/acx.m4,v
retrieving revision 1.10
diff -u -r1.10 acx.m4
--- config/acx.m4	13 Aug 2004 22:31:45 -0000	1.10
+++ config/acx.m4	26 Feb 2005 09:36:51 -0000
@@ -76,8 +76,13 @@
 AC_REQUIRE([_GCC_TOPLEV_NONCANONICAL_BUILD]) []dnl
 # Prefix 'build-' so this never conflicts with target_subdir.
 build_subdir="build-${build_noncanonical}"
-# Not really a subdirectory, but here for completeness.
-host_subdir=.
+# --srcdir=. covers the toplevel, while "test -d" covers the subdirectories
+if ( test $srcdir = . && test -d gcc ) \
+   || test -d $srcdir/../host-${host_noncanonical}; then
+  host_subdir="host-${host_noncanonical}"
+else
+  host_subdir=.
+fi
 # No prefix.
 target_subdir=${target_noncanonical}
 AC_SUBST([build_subdir]) []dnl
Index: gcc/Makefile.in
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Makefile.in,v
retrieving revision 1.1447
diff -u -r1.1447 Makefile.in
--- gcc/Makefile.in	17 Feb 2005 08:47:19 -0000	1.1447
+++ gcc/Makefile.in	25 Feb 2005 13:39:32 -0000
@@ -83,8 +83,15 @@
 # It's normally the absolute path to the current directory.
 objdir = @objdir@
 
+host_subdir=@host_subdir@
 build_subdir=@build_subdir@
 
+ifeq ($(host_subdir),.)
+build_objdir := ../$(build_subdir)
+else
+build_objdir := $(srcdir)/../$(build_subdir)
+endif
+
 # --------
 # Defined vpaths
 # --------
@@ -757,7 +764,7 @@
 
 # Build and host support libraries.
 LIBIBERTY = ../libiberty/libiberty.a
-BUILD_LIBIBERTY = ../$(build_subdir)/libiberty/libiberty.a
+BUILD_LIBIBERTY = $(build_objdir)/libiberty/libiberty.a
 
 # Dependencies on the intl and portability libraries.
 LIBDEPS= $(CPPLIB) $(LIBIBERTY) $(LIBINTL_DEP) $(LIBICONV_DEP)
@@ -2839,8 +2846,8 @@
 
 # Build fixed copies of system files.
 stmp-fixinc: gsyslimits.h macro_list \
-  ../$(build_subdir)/fixincludes/fixincl \
-  ../$(build_subdir)/fixincludes/fixinc.sh
+  $(build_objdir)/fixincludes/fixincl \
+  $(build_objdir)/fixincludes/fixinc.sh
 	@if test ! -d ${SYSTEM_HEADER_DIR}; then \
 	  echo The directory that should contain system headers does not exist: >&2 ; \
 	  echo "  ${SYSTEM_HEADER_DIR}" >&2 ; \
@@ -2852,7 +2859,7 @@
 	(TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; \
 	  SHELL='$(SHELL)'; MACRO_LIST=`${PWD_COMMAND}`/macro_list ; \
 	  export TARGET_MACHINE srcdir SHELL MACRO_LIST && \
-	  cd ../$(build_subdir)/fixincludes && \
+	  cd $(build_objdir)/fixincludes && \
 	  $(SHELL) ./fixinc.sh ../../gcc/include \
 	    $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) )
 	rm -f include/syslimits.h
Index: libjava/configure.ac
===================================================================
RCS file: /cvs/gcc/gcc/libjava/configure.ac,v
retrieving revision 1.19
diff -u -r1.19 configure.ac
--- libjava/configure.ac	23 Feb 2005 01:05:45 -0000	1.19
+++ libjava/configure.ac	25 Feb 2005 13:39:32 -0000
@@ -5,6 +5,8 @@
 
 AC_CONFIG_SRCDIR(java/lang/System.java)
 
+GCC_TOPLEV_SUBDIRS
+
 # We use these options to decide which functions to include.
 AC_ARG_WITH(target-subdir,
   AS_HELP_STRING([--with-target-subdir=SUBDIR],
@@ -162,13 +164,6 @@
 AM_PROG_CC_C_O
 AC_CONFIG_SUBDIRS(libltdl)
 
-if test -z "$with_target_subdir" || test "$with_target_subdir" = "."; then
-   COMPPATH=.
-else
-   COMPPATH=..
-fi
-AC_SUBST(COMPPATH)
-
 # The -no-testsuite modules omit the test subdir.
 AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
 
@@ -1039,7 +1034,7 @@
 
 # Which gcj do we use?
 which_gcj=default
-built_gcc_dir="`cd ${builddotdot}/../../gcc && ${PWDCMD-pwd}`"
+built_gcc_dir="`cd ${builddotdot}/../../${host_subdir}/gcc && ${PWDCMD-pwd}`"
 if test -n "${with_cross_host}"; then
   # We are being configured with a cross compiler. We can't
   # use ac_exeext, because that is for the target platform.
@@ -1078,8 +1073,8 @@
 case "${which_gcj}" in
    built)
       GCJ="$built_gcc_dir/gcj -B`${PWDCMD-pwd}`/ -B$built_gcc_dir/"
-      GCJH='$(MULTIBUILDTOP)../$(COMPPATH)/gcc/gcjh'
-      ZIP='$(MULTIBUILDTOP)../$(COMPPATH)/fastjar/fastjar'
+      GCJH='$(MULTIBUILDTOP)../../$(host_subdir)/gcc/gcjh'
+      ZIP='$(MULTIBUILDTOP)../../$(host_subdir)/fastjar/fastjar'
    ;;
    cross)
       if test "x${with_newlib}" = "xyes"; then
Index: libobjc/configure.ac
===================================================================
RCS file: /cvs/gcc/gcc/libobjc/configure.ac,v
retrieving revision 1.12
diff -u -r1.12 configure.ac
--- libobjc/configure.ac	2 Dec 2004 11:05:06 -0000	1.12
+++ libobjc/configure.ac	25 Feb 2005 13:39:33 -0000
@@ -23,6 +23,7 @@
 AC_PREREQ(2.59)
 AC_INIT(package-unused, version-unused,, libobjc)
 AC_CONFIG_SRCDIR([objc/objc.h])
+GCC_TOPLEV_SUBDIRS
 
 # We need the following definitions because AC_PROG_LIBTOOL relies on them
 PACKAGE=libobjc
@@ -218,12 +219,12 @@
 # -----------
 
 # Determine CFLAGS for gthread.
-# FIXME: the current implementation is dependent on the 'r' variable
-# passed down from the top level
 AC_CACHE_CHECK([for gthread cflags],objc_cv_gthread_flags,
-[if test -f "$r"/gcc/Makefile
+[# we know we are compiled as a target library, so the toplevel build directory
+# is ../..
+if test -f ../../$host_subdir/gcc/Makefile
 then
-  objc_cv_gthread_flags=`grep \^GTHREAD_FLAGS "$r"/gcc/Makefile | awk -F= '{ print $2 }'`
+  objc_cv_gthread_flags=`grep \^GTHREAD_FLAGS ../../$host_subdir/gcc/Makefile | awk -F= '{ print $2 }'`
 else
   AC_MSG_ERROR([not found])
 fi])
Index: libobjc/Makefile.in
===================================================================
RCS file: /cvs/gcc/gcc/libobjc/Makefile.in,v
retrieving revision 1.44
diff -u -r1.44 Makefile.in
--- libobjc/Makefile.in	20 Oct 2004 01:26:37 -0000	1.44
+++ libobjc/Makefile.in	25 Feb 2005 13:52:22 -0000
@@ -34,6 +34,7 @@
 exec_prefix = @exec_prefix@
 target_noncanonical = @target_noncanonical@
 gcc_version = @gcc_version@
+host_subdir = @host_subdir@
 top_srcdir = @top_srcdir@
 toplevel_srcdir = @toplevel_srcdir@
 toolexecdir = @toolexecdir@
@@ -90,7 +91,8 @@
 #LIBTOOL_UNINSTALL = $(LIBTOOL) --mode=uninstall
 
 INCLUDES = -I$(srcdir)/objc  -I$(srcdir)/$(MULTISRCTOP)../gcc \
-  -I$(srcdir)/$(MULTISRCTOP)../gcc/config -I$(MULTIBUILDTOP)../../gcc \
+  -I$(srcdir)/$(MULTISRCTOP)../gcc/config \
+  -I$(MULTIBUILDTOP)../../$(host_subdir)/gcc \
   -I$(srcdir)/$(MULTISRCTOP)../include
 
 OBJC_GCFLAGS=-DOBJC_WITH_GC=1

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: PR/17383: fix gcc in-srcdir build (take 2)
  2005-02-27  4:24 PR/17383: fix gcc in-srcdir build (take 2) Paolo Bonzini
@ 2005-02-28 14:29 ` Nick Clifton
  2005-03-01 15:17 ` Mike Stump
  1 sibling, 0 replies; 9+ messages in thread
From: Nick Clifton @ 2005-02-28 14:29 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: GCC Patches, binutils, gdb-patches, DJ Delorie

Hi Paolo,

> It has passed in-srcdir and out-of-srcdir builds of gcc (all languages,
> powerpc-apple-darwin7.8.0) and binutils+gdb (i686-pc-linux-gnu).  Ok for
> gcc/src?


Approved for binutils.

Cheers
   Nick


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: PR/17383: fix gcc in-srcdir build (take 2)
  2005-02-27  4:24 PR/17383: fix gcc in-srcdir build (take 2) Paolo Bonzini
  2005-02-28 14:29 ` Nick Clifton
@ 2005-03-01 15:17 ` Mike Stump
  2005-03-01 23:02   ` Mark Mitchell
  1 sibling, 1 reply; 9+ messages in thread
From: Mike Stump @ 2005-03-01 15:17 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: GCC Patches, binutils, gdb-patches, DJ Delorie

On Saturday, February 26, 2005, at 03:46  AM, Paolo Bonzini wrote:
> The attached patch creates the host-subdir only if gcc is found in the
> tree.

It feels like progress to me...  I find it more annoying that this is 
broken, then any particular solution to the problem, therefore I 
support it.

Thanks....

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: PR/17383: fix gcc in-srcdir build (take 2)
  2005-03-01 15:17 ` Mike Stump
@ 2005-03-01 23:02   ` Mark Mitchell
  0 siblings, 0 replies; 9+ messages in thread
From: Mark Mitchell @ 2005-03-01 23:02 UTC (permalink / raw)
  To: Mike Stump; +Cc: Paolo Bonzini, GCC Patches, binutils, gdb-patches, DJ Delorie

Mike Stump wrote:
> On Saturday, February 26, 2005, at 03:46  AM, Paolo Bonzini wrote:
> 
>> The attached patch creates the host-subdir only if gcc is found in the
>> tree.
> 
> 
> It feels like progress to me...  I find it more annoying that this is 
> broken, then any particular solution to the problem, therefore I support 
> it.

I was perhaps the original proponent of this approach, and I'm still in 
favor.

-- 
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
(916) 791-8304

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: PR/17383: fix gcc in-srcdir build (take 2)
  2005-02-27 12:43 Nathanael Nerode
  2005-02-27 18:47 ` Alexandre Oliva
@ 2005-02-28 10:57 ` Paolo Bonzini
  1 sibling, 0 replies; 9+ messages in thread
From: Paolo Bonzini @ 2005-02-28 10:57 UTC (permalink / raw)
  To: Nathanael Nerode; +Cc: gcc-patches, binutils, gdb-patches, dj

> However, it *will* be somewhat confusing for developers that the location
> of the build has moved; please post an announcement to gcc@gcc.gnu.org if
> this goes in, explaining the new presence of host-i686-pc-linux-gnu, etc.

I'll do that, but consider that it only happens for in-srcdir builds. 
Out-of-srcdir does not need that (and neither do binutils or gdb).

paolo

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: PR/17383: fix gcc in-srcdir build (take 2)
  2005-02-27 18:47 ` Alexandre Oliva
  2005-02-28  9:06   ` DJ Delorie
@ 2005-02-28 10:39   ` Paolo Bonzini
  1 sibling, 0 replies; 9+ messages in thread
From: Paolo Bonzini @ 2005-02-28 10:39 UTC (permalink / raw)
  To: Alexandre Oliva; +Cc: Nathanael Nerode, gcc-patches, binutils, gdb-patches, dj

> Any comments for binutils or GDB folks?  Does anyone object to moving
> the directories in which we build tools for the host to a host subdir
> when srcdir=.?

Note that this only applies when gcc is present in the tree, with take 2 
of this patch (which I am also much more comfortable with).  Thanks for 
the review.

I am not committing it yet (and would have not committed it even if were 
not on 56k dialup...).

Paolo

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: PR/17383: fix gcc in-srcdir build (take 2)
  2005-02-27 18:47 ` Alexandre Oliva
@ 2005-02-28  9:06   ` DJ Delorie
  2005-02-28 10:39   ` Paolo Bonzini
  1 sibling, 0 replies; 9+ messages in thread
From: DJ Delorie @ 2005-02-28  9:06 UTC (permalink / raw)
  To: aoliva; +Cc: neroden, gcc-patches, paolo.bonzini, binutils, gdb-patches


> So, I'd approve this change if it wasn't for DJ's objection.

I object to ./configure not building in $srcdir on principle.  I
didn't say I objected to this patch specifically, but I didn't feel it
would be fair for me to review it with my bias.  Also, since there
seems to be little reward for maintaining build-in-srcdir, I feel my
arguments for keeping that are weak.

So at this point, I'm rather ambivalent about whether it's changed or
not, so I abstained.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: PR/17383: fix gcc in-srcdir build (take 2)
  2005-02-27 12:43 Nathanael Nerode
@ 2005-02-27 18:47 ` Alexandre Oliva
  2005-02-28  9:06   ` DJ Delorie
  2005-02-28 10:39   ` Paolo Bonzini
  2005-02-28 10:57 ` Paolo Bonzini
  1 sibling, 2 replies; 9+ messages in thread
From: Alexandre Oliva @ 2005-02-27 18:47 UTC (permalink / raw)
  To: Nathanael Nerode; +Cc: gcc-patches, paolo.bonzini, binutils, gdb-patches, dj

On Feb 26, 2005, neroden@twcny.rr.com (Nathanael Nerode) wrote:

> I've been wanting to do this for yonks.  Approved for mainline, unless DJ or
> Alex objects.  Give them a day or two.

DJ has objections to the change, unfortunately.  Personally, I don't
have any problem with this change: it will only affect the ./configure
case, that has long been recommended against, and even then, will only
make a difference for someone for whom the change would actually make
some difference, e.g., not someone who's only half-mindlessly building
and installing the package.  If you need to enter some sub-package
build-for-host directory, you'll probably be able to figure out what's
the right thing to do.  If you have scripts to automate some of these
steps, then you probably do this often enough that you probably don't
want to pollute your source tree with builds and already follow the
recommended procedure to build out of the source tree.  So, I'd
approve this change if it wasn't for DJ's objection.

DJ, given my arguments above, would you be willing to withdraw your
objection?

Any comments for binutils or GDB folks?  Does anyone object to moving
the directories in which we build tools for the host to a host subdir
when srcdir=.?

-- 
Alexandre Oliva             http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: PR/17383: fix gcc in-srcdir build (take 2)
@ 2005-02-27 12:43 Nathanael Nerode
  2005-02-27 18:47 ` Alexandre Oliva
  2005-02-28 10:57 ` Paolo Bonzini
  0 siblings, 2 replies; 9+ messages in thread
From: Nathanael Nerode @ 2005-02-27 12:43 UTC (permalink / raw)
  To: gcc-patches, paolo.bonzini, binutils, gdb-patches, dj

I've been wanting to do this for yonks.  Approved for mainline, unless DJ or
Alex objects.  Give them a day or two.

However, it *will* be somewhat confusing for developers that the location
of the build has moved; please post an announcement to gcc@gcc.gnu.org if
this goes in, explaining the new presence of host-i686-pc-linux-gnu, etc.
 
2005-05-25  Paolo Bonzini  <bonzini@gnu.org>

        PR bootstrap/17383
        * Makefile.def (target_modules): Remove "stage", now unnecessary.
        * Makefile.tpl (HOST_SUBDIR): New substitution.
        (STAGE_HOST_EXPORTS, EXPECT, HOST_LIB_PATH, USUAL_AR_FOR_TARGET,
        USUAL_AS_FOR_TARGET, USUAL_DLLTOOL_FOR_TARGET, USUAL_GCC_FOR_TARGET,
        USUAL_LD_FOR_TARGET, USUAL_NM_FOR_TARGET, USUAL_OBJDUMP_FOR_TARGET,
        USUAL_RANLIB_FOR_TARGET, USUAL_WINDRES_FOR_TARGET): Use it.
        (Host modules, Bootstrapped modules): Use it.
        (Build modules, Target modules): Do not create symlink trees,
        always configure out-of-srcdir.
        (distclean): Try removing $(host_subdir) with rm before using rm -rf.
        * configure.in (FLAGS_FOR_TARGET, CC_FOR_TARGET, GCJ_FOR_TARGET,
        GFORTRAN_FOR_TARGET, CXX_FOR_TARGET, RAW_CXX_FOR_TARGET): Use
        $(HOST_SUBDIR).  Create a symlink for host_subdir.

        * Makefile.in: Regenerate.
        * configure: Regenerate.

config:
2005-05-25  Paolo Bonzini  <bonzini@gnu.org>

        PR bootstrap/17383
        * config/acx.m4 (GCC_TOPLEV_SUBDIRS): Set HOST_SUBDIR if an in-src
        gcc build is going.

gcc:
2005-05-25  Paolo Bonzini  <bonzini@gnu.org>

        PR bootstrap/17383
        * gcc/Makefile.in (host_subdir): New.
        (build_objdir): New.  Replace ../$(build_subdir) with it throughout.
        * gcc/configure: Regenerate.

libjava:
2005-05-25  Paolo Bonzini  <bonzini@gnu.org>

        PR bootstrap/17383
        * configure.ac: Call GCC_TOPLEV_SUBDIRS.
        (COMPPATH): Removed.
        (ZIP, GCJH): Replace it with ../$(host_subdir).
        (built_gcc_dir): Add $(host_subdir).
        * configure: Regenerate.
        * Makefile.in, include/Makefile.in, testsuite/Makefile.in,
        external/Makefile.in, external/sax/Makefile.in,
        external/w3c_dom/Makefile.in: Regenerate.

libobjc:
2005-05-25  Paolo Bonzini  <bonzini@gnu.org>

        PR bootstrap/17383
        * configure.ac: Call GCC_TOPLEV_SUBDIRS.
        (Determine CFLAGS for gthread): Use $host_subdir.
        * configure: Regenerate.
        * Makefile.in (host_subdir): New.
        (INCLUDES): Use it.

-- 
This space intentionally left blank.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2005-03-01 23:02 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-02-27  4:24 PR/17383: fix gcc in-srcdir build (take 2) Paolo Bonzini
2005-02-28 14:29 ` Nick Clifton
2005-03-01 15:17 ` Mike Stump
2005-03-01 23:02   ` Mark Mitchell
2005-02-27 12:43 Nathanael Nerode
2005-02-27 18:47 ` Alexandre Oliva
2005-02-28  9:06   ` DJ Delorie
2005-02-28 10:39   ` Paolo Bonzini
2005-02-28 10:57 ` Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).