From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8621 invoked by alias); 28 Nov 2002 22:13:52 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 8606 invoked from network); 28 Nov 2002 22:13:51 -0000 Received: from unknown (HELO mailout5-0.nyroc.rr.com) (24.92.226.122) by sources.redhat.com with SMTP; 28 Nov 2002 22:13:51 -0000 Received: from doctormoo (syr-24-24-16-193.twcny.rr.com [24.24.16.193]) by mailout5-0.nyroc.rr.com (8.11.6/RoadRunner 1.20) with ESMTP id gASMDkF04921; Thu, 28 Nov 2002 17:13:47 -0500 (EST) Received: from neroden by doctormoo with local (Exim 3.36 #1 (Debian)) id 18HWuG-0005Qy-00; Thu, 28 Nov 2002 17:13:12 -0500 Date: Thu, 28 Nov 2002 14:13:00 -0000 To: gcc-patches@gcc.gnu.org, gdb-patches@sources.redhat.com, binutils@sources.redhat.com, dj@redhat.com Subject: (toplevel) introduce host subdir configuration in Makefile Message-ID: <20021128221312.GA20889@doctormoo> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4i From: Nathanael Nerode X-SW-Source: 2002-11/txt/msg00729.txt.bz2 This introduces configure targets for host modules, but doesn't use them by default. To use them right now, you need to configure --norecursion and then hit each one by hand. I'll make them used automatically once I fiddle around and get the dependencies right for sure. At the moment it appears that 'gcc','zlib','fastjar', and 'libiberty' can be configured in any order relative to each other (nice and straightforward). If anyone knows of specific configure order dependencies, they should tell me. I'll be spending a while fiddling with gcc and src trying to identify any other real configure order dependencies. The 'safe' way to do it is to have all-foo for *every* host module foo depend on configure-bar for *every* host module bar, and to have a huge list of configure-configure dependencies forcing a specific order. But that's stupid, and it looks to me like there are actually few if any of these dependences. (Apart from all-foo: configure-foo). I did include the one which was actually documented. Note that the configure target was written to replicate existing behavior as closely as possible, and is therefore a bit squirrely; I'll deal with that later, but at the moment I want to break as little as possible. This is made to apply after my outstanding patches. I hear that there's some support for dropping my patches into src now, letting it diverge from gcc mainline. That would be fine with me. :-) Either way, the sooner I can get my outstanding patches in the happier I am. Tested on i686-pc-linux-gnu. Without --norecursion, behaves as before. With --norecursion, seems to work as expected, but I'm working on checking dependencies. (Although if this goes in, others can help me.) * Makefile.tpl: Introduce host module configuration targets. * configure.in: Introduce support for them. --- configure.in.current 2002-11-28 15:08:58.000000000 -0500 +++ configure.in 2002-11-28 16:50:51.000000000 -0500 @@ -1446,6 +1446,18 @@ # desired. buildargs="--cache-file=../config.cache --build=${build_alias} --host=${build_alias} ${baseargs}" +# For host modules, accept cache file option, or specification as blank. +case "${cache_file}" in +"") # empty + cache_file_option="" ;; +/* | [A-Za-z]:[\\/]* ) # absolute path + cache_file_option="--cache-file=${cache_file}" ;; +*) # relative path + cache_file_option="--cache-file=../${cache_file}" ;; +esac + +hostargs="${cache_file_option} ${buildopt} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}" + targargs=${baseargs} # Passing a --with-cross-host argument lets the target libraries know @@ -1670,6 +1682,7 @@ s%@build_subdir@%${build_subdir}% s%@build_configargs@%${buildargs}% s%@gxx_include_dir@%${gxx_include_dir}% +s%@host_configargs@%${hostargs}% EOF sed -f $sedtemp Makefile > Makefile.tem rm -f Makefile $sedtemp --- Makefile.tpl.current 2002-11-28 16:42:32.000000000 -0500 +++ Makefile.tpl 2002-11-28 17:02:07.000000000 -0500 @@ -223,13 +223,17 @@ BUILD_SUBDIR = @build_subdir@ # This is set by the configure script to the arguments to use when configuring -# directories built for the target. -TARGET_CONFIGARGS = @target_configargs@ - -# This is set by the configure script to the arguments to use when configuring # directories built for the build system. BUILD_CONFIGARGS = @build_configargs@ +# This is set by the configure script to the arguments to use when configuring +# directories built for the host system. +HOST_CONFIGARGS = @host_configargs@ + +# This is set by the configure script to the arguments to use when configuring +# directories built for the target. +TARGET_CONFIGARGS = @target_configargs@ + # This is set by configure to REALLY_SET_LIB_PATH if --enable-shared # was used. SET_LIB_PATH = @SET_LIB_PATH@ @@ -862,6 +866,46 @@ +] $(X11_FLAGS_TO_PASS)[+ ENDIF with_x +] all) +.PHONY: configure-[+module+] maybe-configure-[+module+] +maybe-configure-[+module+]: +configure-[+module+]: [+module+]/Makefile +[+module+]/Makefile: config.status + @[ -d [+module+] ] || mkdir [+module+]; \ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ + CC="$(CC)"; export CC; \ + CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CXX="$(CXX)"; export CXX; \ + CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ + if [ z$(build_canonical) != z$(host_canoncial) ] ; then \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ + DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \ + LD="$(LD)"; export LD; \ + NM="$(NM)"; export NM; \ + RANLIB="$(RANLIB)"; export RANLIB; \ + WINDRES="$(WINDRES)"; export WINDRES; \ + OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \ + OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \ + fi; \ + echo Configuring in [+module+]; \ + cd [+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+]";; \ + esac; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) $${srcdiroption} \ + || exit 1 + [+ IF no_check +] .PHONY: check-[+module+] check-[+module+]: @@ -1042,6 +1086,46 @@ true; \ fi +.PHONY: configure-gcc maybe-configure-gcc +maybe-configure-gcc: +configure-gcc: gcc/Makefile +gcc/Makefile: config.status + @[ -d gcc ] || mkdir gcc;\ + r=`${PWD}`; export r; \ + s=`cd $(srcdir); ${PWD}`; export s; \ + CC="$(CC)"; export CC; \ + CFLAGS="$(CFLAGS)"; export CFLAGS; \ + CXX="$(CXX)"; export CXX; \ + CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ + if [ z$(build_canonical) != z$(host_canoncial) ] ; then \ + AR="$(AR)"; export AR; \ + AS="$(AS)"; export AS; \ + CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ + DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \ + LD="$(LD)"; export LD; \ + NM="$(NM)"; export NM; \ + RANLIB="$(RANLIB)"; export RANLIB; \ + WINDRES="$(WINDRES)"; export WINDRES; \ + OBJCOPY="$(OBJCOPY)"; export OBJCOPY; \ + OBJDUMP="$(OBJDUMP)"; export OBJDUMP; \ + fi; \ + echo Configuring in gcc; \ + cd gcc || exit 1; \ + case $(srcdir) in \ + \.) \ + srcdiroption="--srcdir=."; \ + libsrcdir=".";; \ + /* | [A-Za-z]:[\\/]*) \ + srcdiroption="--srcdir=$(srcdir)/gcc"; \ + libsrcdir="$$s/gcc";; \ + *) \ + srcdiroption="--srcdir=../$(srcdir)/gcc"; \ + libsrcdir="$$s/gcc";; \ + esac; \ + $(SHELL) $${libsrcdir}/configure \ + $(HOST_CONFIGARGS) $${srcdiroption} \ + || exit 1 + # Building GCC uses some tools for rebuilding "source" files # like texinfo, bison/byacc, etc. So we must depend on those. #