* [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses @ 2008-10-07 8:31 Alexandre Oliva 2008-10-07 8:41 ` Ralf Wildenhues ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Alexandre Oliva @ 2008-10-07 8:31 UTC (permalink / raw) To: gcc-patches [-- Attachment #1: Type: text/plain, Size: 2360 bytes --] This patch introduces support for BUILD_CONFIG, a Makefile macro that, if set to say "a b", will cause config/a.mk and config/b.mk to be included in the top-level Makefile. The plan was to use this to add -fcompare-debug to certain variables, and eventually add a configure option to set a default (non-empty) value for BUILD_CONFIG. I ran into a number of problems. First of all, I needed CFLAGS and CFLAGS_FOR_TARGET to vary across bootstrap levels, so that I could build say stage2 without -fcompare-debug and stage3 with it. Second, I found that LIBCFLAGS was not used consistently. IMHO, we should only use LIBCFLAGS for builds using the pre-installed host compiler. For target builds, we should use LIBCFLAGS_FOR_TARGET, and for host builds in in stage2+ I can see that it makes sense to use either STAGE_CFLAGS (being the preferred flags for GCC for that stage, without any of the magic flags required by the compiler used to build stage1) or CFLAGS_FOR_TARGET (being the preferred flags for the GCC built in the previous stage). I chose the former, for simplicity. I also moved SYSROOT and DEBUG_PREFIX flags from *FLAGS_FOR_TARGET to XGCC_FLAGS_FOR_TARGET, which is added to CC, CXX, GCJ and GFORTRAN passed to target builds, along with the newly-introduced TFLAGS, which may vary from stage to stage. Overriding GCJ proved to be "interesting". gcc/java/Make-lang.in didn't want it overridden, using it internally as a target name, and libjava/configure didn't use GCJ passed in the environment. I fixed both. I also added a bunch of BUILD_CONFIGs to bootstrap with -O1 and -O3 (BOOT_CFLAGS overriders), bootstrap-debug (a much simpler implementation of the previous bootstrap target, still using the compare-debug script), bootstrap-debug-lib (a much simpler and faster implementation of the previous bootstrap4-debug target, that uses -fcompare-debug for both compiler and libraries verification in stage3, with further optional testing in stage4), bootstrap-debug-ckovw (that arranges for errors to be issued when using a newly-built compiler without -fcompare-debug) and bootstrap-time (that arranges for xgcc to dump compile, assembly and link times to a global log file; this is useful to verify VTA compile overhead in -fcompare-debug builds). Here's the patch, omitting the generated files. I'm installing it in the VTA branch. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: bootstrap-configs.patch --] [-- Type: text/x-patch, Size: 32002 bytes --] for ChangeLog.vta from Alexandre Oliva <aoliva@redhat.com> * Makefile.def (flags_to_pass): Remove redundant and incomplete STAGE1_CFLAGS, STAGE2_CFLAGS, STAGE3_CFLAGS, and STAGE4_CFLAGS. Add FLAGS_FOR_TARGET and BUILD_CONFIG. (bootstrap_stage): Remove bootstrap-debug custom stages. Turn stage_configureflags, stage_cflags and stage_libcflags into explicit Makefile macros. * Makefile.tpl (HOST_EXPORTS, EXTRA_HOST_FLAGS): Pass GCJ and GFORTRAN. (POSTSTAGE1_HOST_EXPORTS): Add XGCC_FLAGS_FOR_TARGET and TFLAGS to CC. Set CC_FOR_BUILD from CC. (BASE_TARGET_EXPORTS, RAW_CXX_TARGET_EXPORTS, NORMAL_TARGET_EXPORTS): Move SYSROOT_CFLAGS_FOR_TARGET and DEBUG_PREFIX_CFLAGS_FOR_TARGET from CFLAGS and CXXFLAGS to XGCC_FLAGS_FOR_TARGET. Add it along with TFLAGS to CC, CXX, GCJ, and GFORTRAN. (TFLAGS, STAGE_CFLAGS, STAGE_TFLAGS, STAGE_CONFIGURE_FLAGS): New. (_LIBCFLAGS): Renamed to _TFLAGS. (do-compare-debug, do-compare3-debug): Drop. (CC, GCC_FOR_TARGET, CXX_FOR_TARGET, RAW_CXX_FOR_TARGET, GCJ_FOR_TARGET, GFORTRAN_FOR_TARGET): Remove FLAGS_FOR_TARGET. (FLAGS_FOR_TARGET, SYSROOT_CFLAGS_FOR_TARGET, DEBUG_PREFIX_CFLAGS_FOR_TARGET): Move down. (XGCC_FLAGS_FOR_TARGET): New. (BASE_FLAGS_TO_PASS): Pass STAGEid_CFLAGS, STAGEid_TFLAGS and TFLAGS. (EXTRA_HOST_FLAGS): Pass GCJ and GFORTRAN. (POSTSTAGE1_FLAGS_TO_PASS): Move SYSROOT_CFLAGS_FOR_TARGET and DEBUG_PREFIX_CFLAGS_FOR_TARGET from CFLAGS, CXXFLAGS, LIBCFLAGS, LIBCXXFLAGS to XGCC_FLAGS_FOR_TARGET. Add it along with TFLAGS to CC, CXX, GCJ, and GFORTRAN. Pass XGCC_FLAGS_FOR_TARGET and TFLAGS. (BUILD_CONFIG): Include if requested. (all): Set TFLAGS on bootstrap. (configure-stageid-prefixmodule): Pass TFLAGS, adjust FLAGS. (all-stageid-prefixmodule): Likewise. (do-clean, distclean-stageid): Set TFLAGS. (restrap): Fix whitespace. (bootstrap4-debug): Drop. * Makefile.in: Rebuilt. * config/mt-gnu (CXXFLAGS_FOR_TARGET): Adjust. * config/bootstrap-O1.mk: New. * config/bootstrap-O3.mk: New. * config/bootstrap-time.mk: New. * config/bootstrap-debug.mk: New. * config/bootstrap-debug-ckovw.mk: New. * config/bootstrap-debug-lib.mk: New. * libjava/configure.ac: Insert libgcjdir in the GCJ passed in the environment, rather than overriding completely. * libjava/configure: Rebuilt. for gcc/java/ChangeLog.vta from Alexandre Oliva <aoliva@redhat.com> * Make-lang.in (GCJ): Renamed to... (XGCJ): ... this. Index: Makefile.def =================================================================== --- Makefile.def.orig 2008-10-03 15:38:23.000000000 -0300 +++ Makefile.def 2008-10-07 05:02:35.000000000 -0300 @@ -236,12 +236,8 @@ flags_to_pass = { flag= CXXFLAGS ; }; flags_to_pass = { flag= LDFLAGS ; }; flags_to_pass = { flag= LIBCFLAGS ; }; flags_to_pass = { flag= LIBCXXFLAGS ; }; -flags_to_pass = { flag= STAGE1_CFLAGS ; }; flags_to_pass = { flag= STAGE1_CHECKING ; }; flags_to_pass = { flag= STAGE1_LANGUAGES ; }; -flags_to_pass = { flag= STAGE2_CFLAGS ; }; -flags_to_pass = { flag= STAGE3_CFLAGS ; }; -flags_to_pass = { flag= STAGE4_CFLAGS ; }; flags_to_pass = { flag= GNATBIND ; }; flags_to_pass = { flag= GNATMAKE ; }; @@ -254,6 +250,7 @@ flags_to_pass = { flag= CPPFLAGS_FOR_TAR flags_to_pass = { flag= CXX_FOR_TARGET ; }; flags_to_pass = { flag= CXXFLAGS_FOR_TARGET ; }; flags_to_pass = { flag= DLLTOOL_FOR_TARGET ; }; +flags_to_pass = { flag= FLAGS_FOR_TARGET ; }; flags_to_pass = { flag= GCJ_FOR_TARGET ; }; flags_to_pass = { flag= GFORTRAN_FOR_TARGET ; }; flags_to_pass = { flag= LD_FOR_TARGET ; }; @@ -269,6 +266,7 @@ flags_to_pass = { flag= WINDRES_FOR_TARG flags_to_pass = { flag= WINDMC_FOR_TARGET ; }; // Miscellaneous +flags_to_pass = { flag= BUILD_CONFIG ; }; flags_to_pass = { flag= LANGUAGES ; optional=true ; }; flags_to_pass = { flag= LEAN ; }; @@ -511,69 +509,21 @@ dependencies = { module=all-target-winsu dependencies = { module=all-target-winsup; on=all-target-libtermcap; }; // Toplevel bootstrap -bootstrap_stage = { - id=1 ; - - // * We force-disable intermodule optimizations, even if - // --enable-intermodule was passed, since the installed compiler - // probably can't handle them. Luckily, autoconf always respects - // the last argument when conflicting --enable arguments are passed. - // * Likewise, we force-disable coverage flags, since the installed - // compiler probably has never heard of them. - stage_configure_flags='--disable-intermodule $(STAGE1_CHECKING) \ - --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"' ; - stage_cflags='$(STAGE1_CFLAGS)' ; - stage_libcflags='$(STAGE1_LIBCFLAGS)' ; }; +bootstrap_stage = { id=1 ; }; bootstrap_stage = { id=2 ; prev=1 ; - bootstrap_target=bootstrap2 ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE2_CFLAGS)" ; - stage_libcflags="$(STAGE2_LIBCFLAGS)" ; }; -bootstrap_stage = { - id=b2g0 ; prev=1 ; - bootstrap_target=bootstrap2-debug ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE2_CFLAGS) -g0" ; - stage_libcflags="$(STAGE2_LIBCFLAGS) -g0" ; }; + bootstrap_target=bootstrap2 ; }; bootstrap_stage = { id=3 ; prev=2 ; lean=1 ; compare_target=compare ; bootstrap_target=bootstrap ; - cleanstrap_target=cleanstrap ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE3_CFLAGS)" ; - stage_libcflags="$(STAGE3_LIBCFLAGS)" ; }; -bootstrap_stage = { - id=b3g2 ; prev=b2g0 ; lean=1 ; - compare_target=compare-debug ; - bootstrap_target=bootstrap-debug ; - cleanstrap_target=cleanstrap-debug ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE3_CFLAGS) -g2" ; - stage_libcflags="$(STAGE3_LIBCFLAGS) -g2" ; }; + cleanstrap_target=cleanstrap ; }; bootstrap_stage = { id=4 ; prev=3 ; lean=2 ; compare_target=compare3 ; - bootstrap_target=bootstrap4 ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE4_CFLAGS)" ; - stage_libcflags="$(STAGE4_CFLAGS)" ; }; -bootstrap_stage = { - id=b4g ; prev=b3g2 ; lean=2 ; - compare_target=compare3-debug ; - bootstrap_target=bootstrap4-debug ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE4_CFLAGS) -g2" ; - stage_libcflags="$(STAGE4_LIBCFLAGS) -g2" ; }; + bootstrap_target=bootstrap4 ; }; bootstrap_stage = { - id=profile ; prev=1 ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags='$(STAGE2_CFLAGS) -fprofile-generate' ; - stage_libcflags='$(STAGE2_LIBCFLAGS)' ; }; + id=profile ; prev=1 ; }; bootstrap_stage = { id=feedback ; prev=profile ; - bootstrap_target=profiledbootstrap ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags='$(STAGE3_CFLAGS) -fprofile-use' ; - stage_libcflags='$(STAGE3_LIBCFLAGS) -fprofile-use' ; }; + bootstrap_target=profiledbootstrap ; }; Index: Makefile.tpl =================================================================== --- Makefile.tpl.orig 2008-10-03 15:38:23.000000000 -0300 +++ Makefile.tpl 2008-10-07 05:02:35.000000000 -0300 @@ -6,7 +6,8 @@ in # # Makefile for directory with subdirs to build. # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation +# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -171,6 +172,8 @@ HOST_EXPORTS = \ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ + GCJ="$(GCJ)"; export GCJ; \ + GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ AR="$(AR)"; export AR; \ AS="$(AS)"; export AS; \ CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ @@ -202,11 +205,9 @@ HOST_EXPORTS = \ POSTSTAGE1_HOST_EXPORTS = \ $(HOST_EXPORTS) \ 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; \ + -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \ + $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ + CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ LDFLAGS="$(BOOT_LDFLAGS)"; export LDFLAGS; # Target libraries are put under this directory: @@ -220,13 +221,13 @@ BASE_TARGET_EXPORTS = \ $(BASE_EXPORTS) \ AR="$(AR_FOR_TARGET)"; export AR; \ AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \ - CC="$(CC_FOR_TARGET)"; export CC; \ - CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CC="$(CC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \ - GFORTRAN="$(GFORTRAN_FOR_TARGET)"; export GFORTRAN; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + GCJ="$(GCJ_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GCJ; \ + GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ @@ -242,11 +243,11 @@ BASE_TARGET_EXPORTS = \ RAW_CXX_TARGET_EXPORTS = \ $(BASE_TARGET_EXPORTS) \ CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ - CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; + CXX="$(RAW_CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX; NORMAL_TARGET_EXPORTS = \ $(BASE_TARGET_EXPORTS) \ - CXX="$(CXX_FOR_TARGET)"; export CXX; + CXX="$(CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX; # Where to find GMP HOST_GMPLIBS = @gmplibs@ @@ -337,49 +338,65 @@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates +TFLAGS = + +# Defaults for all stages; some are overridden below. + +STAGE_CFLAGS = $(BOOT_CFLAGS) +STAGE_TFLAGS = $(TFLAGS) +STAGE_CONFIGURE_FLAGS=@stage2_werror_flag@ + +[+ FOR bootstrap-stage +] +# Defaults for stage [+id+]; some are overridden below. +STAGE[+id+]_CFLAGS = $(STAGE_CFLAGS) +STAGE[+id+]_TFLAGS = $(STAGE_TFLAGS) +STAGE[+id+]_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) +[+ ENDFOR bootstrap-stage +] + # Only build the C compiler for stage1, because that is the only one that # we can guarantee will build with the native compiler, and also it is the # only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS), # MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them # overrideable (for a bootstrap build stage1 also builds gcc.info). +STAGE1_CFLAGS = @stage1_cflags@ STAGE1_CHECKING=@stage1_checking@ STAGE1_LANGUAGES=@stage1_languages@ +# * We force-disable intermodule optimizations, even if +# --enable-intermodule was passed, since the installed compiler +# probably can't handle them. Luckily, autoconf always respects +# the last argument when conflicting --enable arguments are passed. +# * Likewise, we force-disable coverage flags, since the installed +# compiler probably has never heard of them. +STAGE1_CONFIGURE_FLAGS = --disable-intermodule $(STAGE1_CHECKING) \ + --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" + +STAGEprofile_CFLAGS = $(STAGE2_CFLAGS) -fprofile-generate +STAGEprofile_TFLAGS = $(STAGE2_TFLAGS) -STAGE1_CFLAGS=@stage1_cflags@ -STAGE2_CFLAGS=$(BOOT_CFLAGS) -STAGE3_CFLAGS=$(BOOT_CFLAGS) -STAGE4_CFLAGS=$(BOOT_CFLAGS) - -STAGE1_LIBCFLAGS=$(CFLAGS_FOR_TARGET) -STAGE2_LIBCFLAGS=$(CFLAGS_FOR_TARGET) -STAGE3_LIBCFLAGS=$(CFLAGS_FOR_TARGET) -STAGE4_LIBCFLAGS=$(CFLAGS_FOR_TARGET) +STAGEfeedback_CFLAGS = $(STAGE3_CFLAGS) -fprofile-use +STAGEfeedback_TFLAGS = $(STAGE3_TFLAGS) do-compare = @do_compare@ do-compare3 = $(do-compare) -do-compare-debug = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2 -do-compare3-debug = $(do-compare-debug) # ----------------------------------------------- # Programs producing files for the TARGET machine # ----------------------------------------------- -FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ - AR_FOR_TARGET=@AR_FOR_TARGET@ AS_FOR_TARGET=@AS_FOR_TARGET@ -CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@ $(FLAGS_FOR_TARGET) +CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@ # If GCC_FOR_TARGET is not overriden on the command line, then this # variable is passed down to the gcc Makefile, where it is used to # build libgcc2.a. We define it here so that it can itself be # overridden on the command line. -GCC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCC_FOR_TARGET@ $(FLAGS_FOR_TARGET) -CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) -RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) -GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ $(FLAGS_FOR_TARGET) -GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ $(FLAGS_FOR_TARGET) +GCC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCC_FOR_TARGET@ +CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ +RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ +GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ +GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ LD_FOR_TARGET=@LD_FOR_TARGET@ @@ -397,13 +414,17 @@ COMPILER_NM_FOR_TARGET=@COMPILER_NM_FOR_ CFLAGS_FOR_TARGET = @CFLAGS_FOR_TARGET@ CXXFLAGS_FOR_TARGET = @CXXFLAGS_FOR_TARGET@ -SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ -DEBUG_PREFIX_CFLAGS_FOR_TARGET = @DEBUG_PREFIX_CFLAGS_FOR_TARGET@ LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates LDFLAGS_FOR_TARGET = +FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ +SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ +DEBUG_PREFIX_CFLAGS_FOR_TARGET = @DEBUG_PREFIX_CFLAGS_FOR_TARGET@ + +XGCC_FLAGS_FOR_TARGET = $(FLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET) + # ------------------------------------ # Miscellaneous targets and flag lists # ------------------------------------ @@ -453,7 +474,10 @@ HOST_LIB_PATH_[+module+] = \ # Flags to pass down to all sub-makes. BASE_FLAGS_TO_PASS =[+ FOR flags_to_pass +][+ IF optional +] \ "`echo '[+flag+]=$([+flag+])' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"[+ ELSE optional +] \ - "[+flag+]=$([+flag+])"[+ ENDIF optional+][+ ENDFOR flags_to_pass +] \ + "[+flag+]=$([+flag+])"[+ ENDIF optional+][+ ENDFOR flags_to_pass +][+ FOR bootstrap-stage +] \ + "STAGE[+id+]_CFLAGS=$(STAGE[+id+]_CFLAGS)" \ + "STAGE[+id+]_TFLAGS=$(STAGE[+id+]_TFLAGS)"[+ ENDFOR bootstrap-stage +] \ + "TFLAGS=$(TFLAGS)" \ "CONFIG_SHELL=$(SHELL)" \ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" @@ -468,6 +492,8 @@ EXTRA_HOST_FLAGS = \ 'CC=$(CC)' \ 'CXX=$(CXX)' \ 'DLLTOOL=$(DLLTOOL)' \ + 'GCJ=$(GCJ)' \ + 'GFORTRAN=$(GFORTRAN)' \ 'LD=$(LD)' \ 'LIPO=$(LIPO)' \ 'NM=$(NM)' \ @@ -507,20 +533,24 @@ POSTSTAGE1_FLAGS_TO_PASS = \ EXTRA_TARGET_FLAGS = \ 'AR=$$(AR_FOR_TARGET)' \ 'AS=$(COMPILER_AS_FOR_TARGET)' \ - 'CC=$$(CC_FOR_TARGET)' \ - 'CFLAGS=$$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ - 'CXX=$$(CXX_FOR_TARGET)' \ - 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ + 'CC=$$(CC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'CFLAGS=$$(CFLAGS_FOR_TARGET)' \ + 'CXX=$$(CXX_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \ 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ + 'GCJ=$$(GCJ_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ 'LD=$(COMPILER_LD_FOR_TARGET)' \ 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ - 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ - 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ + 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \ 'NM=$(COMPILER_NM_FOR_TARGET)' \ 'OBJDUMP=$$(OBJDUMP_FOR_TARGET)' \ 'RANLIB=$$(RANLIB_FOR_TARGET)' \ 'WINDRES=$$(WINDRES_FOR_TARGET)' \ - 'WINDMC=$$(WINDMC_FOR_TARGET)' + 'WINDMC=$$(WINDMC_FOR_TARGET)' \ + 'XGCC_FLAGS_FOR_TARGET=$(XGCC_FLAGS_FOR_TARGET)' \ + "TFLAGS=$$TFLAGS" TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) @@ -540,6 +570,13 @@ EXTRA_GCC_FLAGS = \ GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) +@if gcc +BUILD_CONFIG = +ifneq ($(BUILD_CONFIG),) +include $(foreach CONFIG, $(BUILD_CONFIG), $(srcdir)/config/$(CONFIG).mk) +endif +@endif gcc + .PHONY: configure-host configure-host: [+ FOR host_modules +] \ @@ -563,11 +600,17 @@ all: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if [ -f stage_last ]; then \ +@if gcc-bootstrap + if [ -f stage_last ]; then : ; \ + TFLAGS="$(STAGE$(shell sed s,^stage,, stage_last)_TFLAGS)"; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target; \ else \ +@endif gcc-bootstrap $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-host all-target; \ - fi +@if gcc-bootstrap + fi; \ +@endif gcc-bootstrap + : .PHONY: all-build [+ FOR build_modules +] @@ -848,6 +891,7 @@ configure-stage[+id+]-[+prefix+][+module @$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ [+ IF check_multilibs +]echo "Checking multilib configuration for [+module+]..."; \ $(CC_FOR_TARGET) --print-multi-lib > [+subdir+]/[+module+]/multilib.tmp 2> /dev/null ; \ @@ -863,11 +907,14 @@ configure-stage[+id+]-[+prefix+][+module fi; \ [+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \ [+exports+][+ IF prev +] \ - [+poststage1_exports+][+ ENDIF prev +] [+ IF prefix +] \ - CFLAGS="[+stage_libcflags+] $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="[+stage_libcflags+] $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; [+ ELSE +] \ - CFLAGS="[+stage_cflags+]"; export CFLAGS; \ - CXXFLAGS="[+stage_cflags+]"; export CXXFLAGS; [+ ENDIF +] \ + [+poststage1_exports+][+ ENDIF prev +][+ IF prefix +] \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;[+ ELSE prefix +] \ + CFLAGS="$(STAGE[+id+]_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE[+id+]_CFLAGS)"; export CXXFLAGS;[+ IF prev +] \ + LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \ + LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +]; export LIBCFLAGS;[+ ENDIF prefix +] \ echo Configuring stage [+id+] in [+subdir+]/[+module+] ; \ $(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \ cd [+subdir+]/[+module+] || exit 1; \ @@ -880,9 +927,10 @@ configure-stage[+id+]-[+prefix+][+module libsrcdir="$$s/[+module+]"; \ $(SHELL) $${libsrcdir}/configure \ [+args+] --build=${build_alias} --host=[+host_alias+] \ - --target=[+target_alias+] $${srcdiroption} \ - [+ IF prev +]--with-build-libsubdir=$(HOST_SUBDIR)[+ ENDIF prev +] \ - [+stage_configure_flags+] [+extra_configure_flags+] + --target=[+target_alias+] $${srcdiroption} [+ IF prev +]\ + --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +]\ + $(STAGE[+id+]_CONFIGURE_FLAGS)[+ IF extra_configure_flags +] \ + [+extra_configure_flags+][+ ENDIF extra_configure_flags +] @endif [+prefix+][+module+]-bootstrap [+ ENDFOR bootstrap_stage +] [+ ENDIF bootstrap +] @@ -922,16 +970,25 @@ all-stage[+id+]-[+prefix+][+module+]: co @[ $(current_stage) = stage[+id+] ] || $(MAKE) stage[+id+]-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ [+exports+][+ IF prev +] \ [+poststage1_exports+][+ ENDIF prev +] \ cd [+subdir+]/[+module+] && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="[+stage_cflags+]" CXXFLAGS="[+stage_cflags+]" \ - LIBCFLAGS="[+stage_libcflags+]" \ - CFLAGS_FOR_TARGET="[+stage_libcflags+]" \ - CXXFLAGS_FOR_TARGET="[+stage_libcflags+]" [+args+] [+ + $(MAKE) $(BASE_FLAGS_TO_PASS)[+ IF prefix +] \ + CFLAGS="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"[+ ELSE prefix +] \ + CFLAGS="$(STAGE[+id+]_CFLAGS)" \ + CXXFLAGS="$(STAGE[+id+]_CFLAGS)"[+ IF prev +] \ + LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \ + LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +][+ ENDIF prefix +] \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + [+args+] [+ IF prev +][+poststage1_args+][+ ENDIF prev +] [+extra_make_flags+] \ + TFLAGS="$(STAGE[+id+]_TFLAGS)" \ $(TARGET-stage[+id+]-[+prefix+][+module+]) maybe-clean-stage[+id+]-[+prefix+][+module+]: clean-stage[+id+]-[+prefix+][+module+] @@ -1394,6 +1451,7 @@ do-clean: clean-stage[+id+] @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target [+bootstrap-target+]-lean: @@ -1404,6 +1462,7 @@ do-clean: clean-stage[+id+] @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target [+ ENDIF bootstrap-target +] @@ -1426,6 +1485,7 @@ distclean-stage[+id+]:: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target [+ ENDIF cleanstrap-target +] @endif gcc-bootstrap @@ -1461,8 +1521,8 @@ stage_current: .PHONY: restrap restrap:: @: $(MAKE); $(stage) - rm -rf stage1-$(TARGET_SUBDIR) [+ FOR bootstrap-stage +][+ IF prev - +]stage[+id+]-* [+ ENDIF prev +][+ ENDFOR bootstrap-stage +] + rm -rf stage1-$(TARGET_SUBDIR)[+ FOR bootstrap-stage +][+ IF prev + +] stage[+id+]-*[+ ENDIF prev +][+ ENDFOR bootstrap-stage +] restrap:: all @endif gcc-bootstrap @@ -1629,53 +1689,6 @@ configure-gdb: $(CONFIGURE_GDB_TK) all-gdb: $(gdbnlmrequirements) $(GDB_TK) install-gdb: $(INSTALL_GDB_TK) -@if gcc-bootstrap -bootstrap4-debug-init = stgsrc=stageb3g2 stgdst=stageb4g -bootstrap4-debug-lib-gcc-clean = stamp-gnatlib* stamp-tools ada/rts - -cp-lR = cp -lR - -.PHONY: prepare-bootstrap4-debug-lib -prepare-bootstrap4-debug-lib: - @r=`${PWD_COMMAND}`; export r; \ - s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - : $(MAKE); $(stage); \ - $(bootstrap4-debug-init) didgcc=false; \ - for d3 in $$stgsrc-*; do \ - case $$d3 in "$$stgsrc-$(TARGET_SUBDIR)") continue ;; esac; \ - d4=`echo $$d3 | sed s,^$$stgsrc,$$stgdst,`; \ - if test -d $$d4; then \ - echo $$d4 already set up, skipping...; \ - continue; \ - fi; \ - d4t=$$d4.tmp; \ - rm -rf $$d4t || :; \ - $(cp-lR) $$d3/. $$d4t; \ - case $$d3 in "$$stgsrc-gcc") \ - (cd $$d4t && rm -rf $(bootstrap4-debug-lib-gcc-clean)) || :;; \ - esac; \ - mv $$d4t $$d4; \ - done - -.PHONY: clean-bootstrap4-debug-lib -clean-bootstrap4-debug-lib: prepare-bootstrap4-debug-lib - @$(bootstrap4-debug-init); \ - rm -rf $$stgdst-$(TARGET_SUBDIR) || :; \ - (cd $$stgdst-gcc && rm -rf $(bootstrap4-debug-lib-gcc-clean)) || : - -sed-script-prepare-bootstrap4-debug-lib-g0 = 's,%{g\*},,' -sed-script-prepare-bootstrap4-debug-lib-novta = 's,%{g\*},& %{!fvar-tracking-assignments:%{!fno-var-tracking-assignments:-fno-var-tracking-assignments}},' -sed-script-prepare-bootstrap4-debug-lib-custom = 's,x,x,' - -.PHONY: prepare-bootstrap4-debug-lib-g0 prepare-bootstrap4-debug-lib-novta prepare-bootstrap4-debug-lib-custom -prepare-bootstrap4-debug-lib-g0 prepare-bootstrap4-debug-lib-novta \ -prepare-bootstrap4-debug-lib-custom: prepare-bootstrap4-debug-lib - @$(bootstrap4-debug-init); \ - rm -f $$stgdst-gcc/specs; \ - sed $(sed-script-$@) < $$stgsrc-gcc/specs > $$stgdst-gcc/specs - -@endif gcc-bootstrap - # Serialization dependencies. Host configures don't work well in parallel to # each other, due to contention over config.cache. Target configures and # build configures are similar. Index: config/mt-gnu =================================================================== --- config/mt-gnu.orig 2008-10-03 15:38:23.000000000 -0300 +++ config/mt-gnu 2008-10-07 05:02:35.000000000 -0300 @@ -1,2 +1 @@ -CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) \ - $(DEBUG_PREFIX_CFLAGS_FOR_TARGET) -D_GNU_SOURCE +CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE Index: config/bootstrap-O1.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ config/bootstrap-O1.mk 2008-10-07 05:02:35.000000000 -0300 @@ -0,0 +1 @@ +BOOT_CFLAGS := -O1 $(filter-out -O%, $(BOOT_CFLAGS)) Index: config/bootstrap-O3.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ config/bootstrap-O3.mk 2008-10-07 05:02:35.000000000 -0300 @@ -0,0 +1 @@ +BOOT_CFLAGS := -O3 $(filter-out -O%, $(BOOT_CFLAGS)) Index: config/bootstrap-time.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ config/bootstrap-time.mk 2008-10-07 05:02:35.000000000 -0300 @@ -0,0 +1,2 @@ +BOOT_CFLAGS += -time=$(shell pwd)/time.log +TFLAGS += -time=$(shell pwd)/time.log Index: config/bootstrap-debug.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ config/bootstrap-debug.mk 2008-10-07 05:02:35.000000000 -0300 @@ -0,0 +1,2 @@ +STAGE2_CFLAGS += -gtoggle +do-compare = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2 Index: config/bootstrap-debug-ckovw.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ config/bootstrap-debug-ckovw.mk 2008-10-07 05:02:35.000000000 -0300 @@ -0,0 +1,12 @@ +# These arrange for a simple warning to be issued if -fcompare-debug +# is not given. +# BOOT_CFLAGS += -fcompare-debug="-w%n-fcompare-debug not overridden" +# TFLAGS += -fcompare-debug="-w%n-fcompare-debug not overridden" + +# GCC_COMPARE_DEBUG="-w%n-fcompare-debug not overridden"; + +FORCE_COMPARE_DEBUG = \ + GCC_COMPARE_DEBUG=$${GCC_COMPARE_DEBUG--fcompare-debug-not-overridden}; \ + export GCC_COMPARE_DEBUG; +POSTSTAGE1_HOST_EXPORTS += $(FORCE_COMPARE_DEBUG) +BASE_TARGET_EXPORTS += $(FORCE_COMPARE_DEBUG) Index: config/bootstrap-debug-lib.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ config/bootstrap-debug-lib.mk 2008-10-07 05:02:35.000000000 -0300 @@ -0,0 +1,12 @@ +# Stage1 compiler may not support this flag. +# STAGE1_CFLAGS += -fcompare-debug=-gtoggle +STAGE2_CFLAGS += -gtoggle -fcompare-debug= +STAGE3_CFLAGS += -fcompare-debug=-gtoggle +STAGE4_CFLAGS += -fcompare-debug=-fvar-tracking-assignments-toggle +# This might be enough after testing: +# TFLAGS += -fcompare-debug=-g0 +STAGE1_TFLAGS += -gtoggle -fcompare-debug= +STAGE2_TFLAGS += -fcompare-debug=-fvar-tracking-assignments-toggle +STAGE3_TFLAGS += -fcompare-debug=-gtoggle +STAGE4_TFLAGS += -fcompare-debug=-fvar-tracking-assignments-toggle +do-compare = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2 Index: libjava/configure.ac =================================================================== --- libjava/configure.ac.orig 2008-10-03 15:38:23.000000000 -0300 +++ libjava/configure.ac 2008-10-07 05:02:35.000000000 -0300 @@ -352,23 +352,30 @@ else which_gcj=path fi fi +libgcjdir=`${PWDCMD-pwd}` +case $libgcjdir in +*,*) libgcjdir=`echo "$libgcjdir" | sed 's:,:\\,:g'`;; +esac +case $GCJ in +*" -B"*) + GCJ=`echo "$GCJ" | sed "s, -B, -B$libgcjdir/&,"` + ;; +*) + GCJ=$GCJ" -B$libgcjdir/" + ;; +esac case "${which_gcj}" in built) - GCJ="$built_gcc_dir/gcj -B`${PWDCMD-pwd}`/ -B$built_gcc_dir/" GCJH='$(top_builddir)/$(MULTIBUILDTOP)../../$(host_subdir)/gcc/gcjh' ;; cross) if test "x${with_newlib}" = "xyes"; then # FIXME (comment): Why is this needed? GCC_UNWIND_INCLUDE= - GCJ="${target_noncanonical}-gcj" - else - GCJ="${target_noncanonical}-gcj -B`${PWDCMD-pwd}`/" fi GCJH='$(target_noncanonical)-gcjh' ;; path) - GCJ="gcj -B`${PWDCMD-pwd}`/" GCJH=gcjh ;; esac Index: gcc/java/Make-lang.in =================================================================== --- gcc/java/Make-lang.in.orig 2008-10-03 15:38:23.000000000 -0300 +++ gcc/java/Make-lang.in 2008-10-07 05:02:36.000000000 -0300 @@ -44,10 +44,10 @@ JAVA_INSTALL_NAME := $(shell echo gcj|sed '$(program_transform_name)') JAVA_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcj|sed '$(program_transform_name)') -GCJ = gcj +XGCJ = gcj # Define the names for selecting java in LANGUAGES. -java: jc1$(exeext) $(GCJ)$(exeext) jvgenmain$(exeext) jcf-dump$(exeext) +java: jc1$(exeext) $(XGCJ)$(exeext) jvgenmain$(exeext) jcf-dump$(exeext) # Define the name of target independent tools to be installed in $(bindir) # Names are subject to changes @@ -62,17 +62,17 @@ jvspec.o: $(srcdir)/java/jvspec.c $(SYST $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ $(INCLUDES) $(srcdir)/java/jvspec.c $(OUTPUT_OPTION)) -# Create the compiler driver for $(GCJ). -$(GCJ)$(exeext): $(GCC_OBJS) jvspec.o java/jcf-path.o version.o \ +# Create the compiler driver for $(XGCJ). +$(XGCJ)$(exeext): $(GCC_OBJS) jvspec.o java/jcf-path.o version.o \ prefix.o intl.o $(LIBDEPS) $(EXTRA_GCC_OBJS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(GCC_OBJS) jvspec.o \ java/jcf-path.o prefix.o intl.o \ version.o $(EXTRA_GCC_OBJS) $(LIBS) -# Create a version of the $(GCJ) driver which calls the cross-compiler. -$(GCJ)-cross$(exeext): $(GCJ)$(exeext) - -rm -f $(GCJ)-cross$(exeext) - cp $(GCJ)$(exeext) $(GCJ)-cross$(exeext) +# Create a version of the $(XGCJ) driver which calls the cross-compiler. +$(XGCJ)-cross$(exeext): $(XGCJ)$(exeext) + -rm -f $(XGCJ)-cross$(exeext) + cp $(XGCJ)$(exeext) $(XGCJ)-cross$(exeext) java.srcextra: @@ -115,8 +115,8 @@ jvgenmain$(exeext): $(JVGENMAIN_OBJS) $( #\f # Build hooks: -java.all.cross: $(GCJ)-cross$(exeext) -java.start.encap: $(GCJ)$(exeext) +java.all.cross: $(XGCJ)-cross$(exeext) +java.start.encap: $(XGCJ)$(exeext) java.rest.encap: @@ -157,11 +157,11 @@ check-java : # Install gcj as well as the target-independent tools. java.install-common: installdirs - -if [ -f $(GCJ)$(exeext) ]; then \ + -if [ -f $(XGCJ)$(exeext) ]; then \ rm -f $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ - $(INSTALL_PROGRAM) $(GCJ)$(exeext) $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ + $(INSTALL_PROGRAM) $(XGCJ)$(exeext) $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ chmod a+x $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ - if [ -f $(GCJ)-cross$(exeext) ]; then \ + if [ -f $(XGCJ)-cross$(exeext) ]; then \ true; \ else \ rm -f $(DESTDIR)$(bindir)/$(JAVA_TARGET_INSTALL_NAME)$(exeext); \ @@ -210,7 +210,7 @@ java.install-pdf: $(JAVA_PDFFILES) java.mostlyclean: -rm -f java/*$(objext) $(DEMANGLER_PROG) -rm -f java/*$(coverageexts) - -rm -f jc1$(exeext) $(GCJ)$(exeext) jvgenmain$(exeext) \ + -rm -f jc1$(exeext) $(XGCJ)$(exeext) jvgenmain$(exeext) \ jcf-dump$(exeext) s-java java.clean: java.distclean: [-- Attachment #3: Type: text/plain, Size: 257 bytes --] -- Alexandre Oliva http://www.lsd.ic.unicamp.br/~oliva/ Free Software Evangelist oliva@{lsd.ic.unicamp.br, gnu.org} FSFLA Board Member ¡Sé Libre! => http://www.fsfla.org/ Red Hat Compiler Engineer aoliva@{redhat.com, gcc.gnu.org} ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses 2008-10-07 8:31 [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses Alexandre Oliva @ 2008-10-07 8:41 ` Ralf Wildenhues 2008-10-07 9:01 ` Andreas Schwab 2008-10-07 18:09 ` Alexandre Oliva 2008-10-07 9:41 ` Paolo Bonzini 2008-10-08 2:27 ` Adam Nemet 2 siblings, 2 replies; 9+ messages in thread From: Ralf Wildenhues @ 2008-10-07 8:41 UTC (permalink / raw) To: Alexandre Oliva; +Cc: gcc-patches Hello Alexandre, a couple of nits, if I may. * Alexandre Oliva wrote on Tue, Oct 07, 2008 at 10:16:45AM CEST: > for ChangeLog.vta > from Alexandre Oliva <aoliva@redhat.com> [...] > * libjava/configure.ac: Insert libgcjdir in the GCJ passed in the > environment, rather than overriding completely. > * libjava/configure: Rebuilt. Not in a separate ChangeLog file? > --- libjava/configure.ac.orig 2008-10-03 15:38:23.000000000 -0300 > +++ libjava/configure.ac 2008-10-07 05:02:35.000000000 -0300 > @@ -352,23 +352,30 @@ else > which_gcj=path > fi > fi > +libgcjdir=`${PWDCMD-pwd}` > +case $libgcjdir in > +*,*) libgcjdir=`echo "$libgcjdir" | sed 's:,:\\,:g'`;; > +esac Why was this escaping added? It looks wrong. At least if it's supposed to fix some missing escaping inside config.status then that's the wrong way to go. > +case $GCJ in > +*" -B"*) > + GCJ=`echo "$GCJ" | sed "s, -B, -B$libgcjdir/&,"` > + ;; > +*) > + GCJ=$GCJ" -B$libgcjdir/" > + ;; > +esac Cheers, Ralf ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses 2008-10-07 8:41 ` Ralf Wildenhues @ 2008-10-07 9:01 ` Andreas Schwab 2008-10-07 18:09 ` Alexandre Oliva 1 sibling, 0 replies; 9+ messages in thread From: Andreas Schwab @ 2008-10-07 9:01 UTC (permalink / raw) To: Ralf Wildenhues; +Cc: Alexandre Oliva, gcc-patches Ralf Wildenhues <Ralf.Wildenhues@gmx.de> writes: >> --- libjava/configure.ac.orig 2008-10-03 15:38:23.000000000 -0300 >> +++ libjava/configure.ac 2008-10-07 05:02:35.000000000 -0300 >> @@ -352,23 +352,30 @@ else >> which_gcj=path >> fi >> fi >> +libgcjdir=`${PWDCMD-pwd}` >> +case $libgcjdir in >> +*,*) libgcjdir=`echo "$libgcjdir" | sed 's:,:\\,:g'`;; >> +esac > > Why was this escaping added? It looks wrong. At least if it's supposed > to fix some missing escaping inside config.status then that's the wrong > way to go. It's a no-op anyway. Andreas. -- Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux Products GmbH, MaxfeldstraÃe 5, 90409 Nürnberg, Germany PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses 2008-10-07 8:41 ` Ralf Wildenhues 2008-10-07 9:01 ` Andreas Schwab @ 2008-10-07 18:09 ` Alexandre Oliva 2008-10-10 13:42 ` Alexandre Oliva 1 sibling, 1 reply; 9+ messages in thread From: Alexandre Oliva @ 2008-10-07 18:09 UTC (permalink / raw) To: Ralf Wildenhues; +Cc: gcc-patches On Oct 7, 2008, Ralf Wildenhues <Ralf.Wildenhues@gmx.de> wrote: >> for ChangeLog.vta >> * libjava/configure.ac: Insert libgcjdir in the GCJ passed in the >> environment, rather than overriding completely. >> * libjava/configure: Rebuilt. > Not in a separate ChangeLog file? Yeah, I was lazy. There wasn't a libjava/ChangeLog.vta yet, and I didn't think it was worth it to create one for this change. For sure it would be moved to libjava/ChangeLog at merge time. >> +libgcjdir=`${PWDCMD-pwd}` >> +case $libgcjdir in >> +*,*) libgcjdir=`echo "$libgcjdir" | sed 's:,:\\,:g'`;; >> +esac > Why was this escaping added? It looks wrong. Because libgcjdir is only used in a 's,,,' sed command a few lines down, so for safety we need commas in it to be quoted. Just in case the user has commas in the build dir. >> + GCJ=`echo "$GCJ" | sed "s, -B, -B$libgcjdir/&,"` Or at least that was the plan. Now I see it may be used out of sed commands too: >> + GCJ=$GCJ" -B$libgcjdir/" In this case, the backslashes will probably be harmless, but I guess it's worth fixing or commenting on. Will do. Thanks. -- Alexandre Oliva http://www.lsd.ic.unicamp.br/~oliva/ Free Software Evangelist oliva@{lsd.ic.unicamp.br, gnu.org} FSFLA Board Member ¡Sé Libre! => http://www.fsfla.org/ Red Hat Compiler Engineer aoliva@{redhat.com, gcc.gnu.org} ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses 2008-10-07 18:09 ` Alexandre Oliva @ 2008-10-10 13:42 ` Alexandre Oliva 0 siblings, 0 replies; 9+ messages in thread From: Alexandre Oliva @ 2008-10-10 13:42 UTC (permalink / raw) To: Ralf Wildenhues; +Cc: gcc-patches [-- Attachment #1: Type: text/plain, Size: 817 bytes --] [Re-posting, I'd failed to remove the generated files from the patch before posting it, so it bounced. Sorry.] On Oct 7, 2008, Alexandre Oliva <aoliva@redhat.com> wrote: >>> + GCJ=$GCJ" -B$libgcjdir/" > In this case, the backslashes will probably be harmless, but I guess > it's worth fixing or commenting on. Will do. Thanks. Here it is, installing the first patch below in the branch. I found out reconfiguring didn't work because CXX wasn't set in the environment any more, so I fixed that as well. This is feeling more and more like trunk material, given the open bugs it fixes. Does anyone think it's a bad idea to install the second patch below in the trunk? I guess I could split out the BUILD_CONFIG part, but that's a small and safe part, useful on its own. Tested (both) on x86_64-linux-gnu. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: bootstrap-configs-fixquotes.patch --] [-- Type: text/x-patch, Size: 11455 bytes --] for ChangeLog.vta from Alexandre Oliva <aoliva@redhat.com> * config/multi.m4: Save CXX, GFORTRAN and GCJ in config.status. * libjava/configure.ac (libgcjdir): Quoting only for use in sed command. Quote backslashes too. * libjava/configure: Rebuilt. Index: config/multi.m4 =================================================================== --- config/multi.m4.orig 2007-11-23 18:17:05.000000000 -0200 +++ config/multi.m4 2008-10-10 02:14:51.000000000 -0300 @@ -1,5 +1,5 @@ ## -*- Autoconf -*- -# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006 +# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation @@ -62,4 +62,7 @@ with_target_subdir="$with_target_subdir" ac_configure_args="${multilib_arg} ${ac_configure_args}" multi_basedir="$multi_basedir" CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -CC="$CC"])])dnl +CC="$CC" +CXX="$CXX" +GFORTRAN="$GFORTRAN" +GCJ="$GCJ"])])dnl Index: libjava/configure.ac =================================================================== --- libjava/configure.ac.orig 2008-10-07 15:52:05.000000000 -0300 +++ libjava/configure.ac 2008-10-10 01:33:08.000000000 -0300 @@ -353,12 +353,15 @@ else fi fi libgcjdir=`${PWDCMD-pwd}` -case $libgcjdir in -*,*) libgcjdir=`echo "$libgcjdir" | sed 's:,:\\,:g'`;; -esac case $GCJ in *" -B"*) - GCJ=`echo "$GCJ" | sed "s, -B, -B$libgcjdir/&,"` + # Just in case there is a comma in the build dir, quote it for the + # sed command below. + case $libgcjdir in + *[[,\\]]*) qlibgcjdir=`echo "$libgcjdir" | sed 's:[[,\\]]:\\&:g'`;; + *) qlibgcjdir=$libgcjdir;; + esac + GCJ=`echo "$GCJ" | sed "s, -B, -B$qlibgcjdir/&,"` ;; *) GCJ=$GCJ" -B$libgcjdir/" Index: libjava/configure =================================================================== --- libjava/configure.orig 2008-10-07 15:52:30.000000000 -0300 +++ libjava/configure 2008-10-10 02:15:04.000000000 -0300 @@ -5380,12 +5380,15 @@ else fi fi libgcjdir=`${PWDCMD-pwd}` -case $libgcjdir in -*,*) libgcjdir=`echo "$libgcjdir" | sed 's:,:\\,:g'`;; -esac case $GCJ in *" -B"*) - GCJ=`echo "$GCJ" | sed "s, -B, -B$libgcjdir/&,"` + # Just in case there is a comma in the build dir, quote it for the + # sed command below. + case $libgcjdir in + *[,\\]*) qlibgcjdir=`echo "$libgcjdir" | sed 's:[,\\]:\\&:g'`;; + *) qlibgcjdir=$libgcjdir;; + esac + GCJ=`echo "$GCJ" | sed "s, -B, -B$qlibgcjdir/&,"` ;; *) GCJ=$GCJ" -B$libgcjdir/" @@ -6028,13 +6031,13 @@ if test "${lt_cv_nm_interface+set}" = se else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:6024: $ac_compile\"" >&5) + (eval echo "\"\$as_me:6034: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:6027: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:6037: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:6030: output\"" >&5) + (eval echo "\"\$as_me:6040: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -7078,7 +7081,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 7074 "configure"' > conftest.$ac_ext + echo '#line 7084 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -8779,11 +8782,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8775: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8785: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:8779: \$? = $ac_status" >&5 + echo "$as_me:8789: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9101,11 +9104,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9097: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9107: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9101: \$? = $ac_status" >&5 + echo "$as_me:9111: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9206,11 +9209,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9202: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9212: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9206: \$? = $ac_status" >&5 + echo "$as_me:9216: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -9261,11 +9264,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9257: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9267: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9261: \$? = $ac_status" >&5 + echo "$as_me:9271: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12113,7 +12116,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12109 "configure" +#line 12119 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12213,7 +12216,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12209 "configure" +#line 12219 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -14251,11 +14254,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14247: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14257: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14251: \$? = $ac_status" >&5 + echo "$as_me:14261: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -14350,11 +14353,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14346: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14356: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14350: \$? = $ac_status" >&5 + echo "$as_me:14360: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -14402,11 +14405,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14398: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14408: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14402: \$? = $ac_status" >&5 + echo "$as_me:14412: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -15790,11 +15793,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15786: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15796: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15790: \$? = $ac_status" >&5 + echo "$as_me:15800: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16106,11 +16109,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16102: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16112: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16106: \$? = $ac_status" >&5 + echo "$as_me:16116: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16205,11 +16208,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16201: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16211: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16205: \$? = $ac_status" >&5 + echo "$as_me:16215: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -16257,11 +16260,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16253: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16263: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16257: \$? = $ac_status" >&5 + echo "$as_me:16267: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -18613,7 +18616,7 @@ if test "${enable_sjlj_exceptions+set}" : else cat > conftest.$ac_ext << EOF -#line 18609 "configure" +#line 18619 "configure" struct S { ~S(); }; void bar(); void foo() @@ -28947,6 +28950,9 @@ ac_configure_args="${multilib_arg} ${ac_ multi_basedir="$multi_basedir" CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} CC="$CC" +CXX="$CXX" +GFORTRAN="$GFORTRAN" +GCJ="$GCJ" AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #3: bootstrap-configs.patch --] [-- Type: text/x-patch, Size: 30478 bytes --] for ChangeLog from Alexandre Oliva <aoliva@redhat.com> PR target/37137 * Makefile.def (flags_to_pass): Remove redundant and incomplete STAGE1_CFLAGS, STAGE2_CFLAGS, STAGE3_CFLAGS, and STAGE4_CFLAGS. Add FLAGS_FOR_TARGET and BUILD_CONFIG. (bootstrap_stage): Remove bootstrap-debug custom stages. Turn stage_configureflags, stage_cflags and stage_libcflags into explicit Makefile macros. * Makefile.tpl (HOST_EXPORTS, EXTRA_HOST_FLAGS): Pass GCJ and GFORTRAN. (POSTSTAGE1_HOST_EXPORTS): Add XGCC_FLAGS_FOR_TARGET and TFLAGS to CC. Set CC_FOR_BUILD from CC. (BASE_TARGET_EXPORTS, RAW_CXX_TARGET_EXPORTS, NORMAL_TARGET_EXPORTS): Move SYSROOT_CFLAGS_FOR_TARGET and DEBUG_PREFIX_CFLAGS_FOR_TARGET from CFLAGS and CXXFLAGS to XGCC_FLAGS_FOR_TARGET. Add it along with TFLAGS to CC, CXX, GCJ, and GFORTRAN. (TFLAGS, STAGE_CFLAGS, STAGE_TFLAGS, STAGE_CONFIGURE_FLAGS): New. (_LIBCFLAGS): Renamed to _TFLAGS. (do-compare-debug, do-compare3-debug): Drop. (CC, GCC_FOR_TARGET, CXX_FOR_TARGET, RAW_CXX_FOR_TARGET, GCJ_FOR_TARGET, GFORTRAN_FOR_TARGET): Remove FLAGS_FOR_TARGET. (FLAGS_FOR_TARGET, SYSROOT_CFLAGS_FOR_TARGET, DEBUG_PREFIX_CFLAGS_FOR_TARGET): Move down. (XGCC_FLAGS_FOR_TARGET): New. (BASE_FLAGS_TO_PASS): Pass STAGEid_CFLAGS, STAGEid_TFLAGS and TFLAGS. (EXTRA_HOST_FLAGS): Pass GCJ and GFORTRAN. (POSTSTAGE1_FLAGS_TO_PASS): Move SYSROOT_CFLAGS_FOR_TARGET and DEBUG_PREFIX_CFLAGS_FOR_TARGET from CFLAGS, CXXFLAGS, LIBCFLAGS, LIBCXXFLAGS to XGCC_FLAGS_FOR_TARGET. Add it along with TFLAGS to CC, CXX, GCJ, and GFORTRAN. Pass XGCC_FLAGS_FOR_TARGET and TFLAGS. (BUILD_CONFIG): Include if requested. (all): Set TFLAGS on bootstrap. (configure-stageid-prefixmodule): Pass TFLAGS, adjust FLAGS. (all-stageid-prefixmodule): Likewise. (do-clean, distclean-stageid): Set TFLAGS. (restrap): Fix whitespace. * Makefile.in: Rebuilt. for config/ChangeLog from Alexandre Oliva <aoliva@redhat.com> * multi.m4: Save CXX, GFORTRAN and GCJ in config.status. * mt-gnu (CXXFLAGS_FOR_TARGET): Adjust. * bootstrap-O1.mk: New. * bootstrap-O3.mk: New. * bootstrap-debug.mk: New. for gcc/ChangeLog from Alexandre Oliva <aoliva@redhat.com> PR target/37137 * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document. for gcc/java/ChangeLog from Alexandre Oliva <aoliva@redhat.com> * Make-lang.in (GCJ): Renamed to... (XGCJ): ... this. for libjava/ChangeLog from Alexandre Oliva <aoliva@redhat.com> * configure.ac: Insert libgcjdir in the GCJ passed in the environment, rather than overriding completely. * configure: Rebuilt. Index: Makefile.def =================================================================== --- Makefile.def.orig 2008-10-10 04:04:33.000000000 -0300 +++ Makefile.def 2008-10-10 05:08:10.000000000 -0300 @@ -246,12 +246,8 @@ flags_to_pass = { flag= CXXFLAGS ; }; flags_to_pass = { flag= LDFLAGS ; }; flags_to_pass = { flag= LIBCFLAGS ; }; flags_to_pass = { flag= LIBCXXFLAGS ; }; -flags_to_pass = { flag= STAGE1_CFLAGS ; }; flags_to_pass = { flag= STAGE1_CHECKING ; }; flags_to_pass = { flag= STAGE1_LANGUAGES ; }; -flags_to_pass = { flag= STAGE2_CFLAGS ; }; -flags_to_pass = { flag= STAGE3_CFLAGS ; }; -flags_to_pass = { flag= STAGE4_CFLAGS ; }; flags_to_pass = { flag= GNATBIND ; }; flags_to_pass = { flag= GNATMAKE ; }; @@ -264,6 +260,7 @@ flags_to_pass = { flag= CPPFLAGS_FOR_TAR flags_to_pass = { flag= CXX_FOR_TARGET ; }; flags_to_pass = { flag= CXXFLAGS_FOR_TARGET ; }; flags_to_pass = { flag= DLLTOOL_FOR_TARGET ; }; +flags_to_pass = { flag= FLAGS_FOR_TARGET ; }; flags_to_pass = { flag= GCJ_FOR_TARGET ; }; flags_to_pass = { flag= GFORTRAN_FOR_TARGET ; }; flags_to_pass = { flag= LD_FOR_TARGET ; }; @@ -279,6 +276,7 @@ flags_to_pass = { flag= WINDRES_FOR_TARG flags_to_pass = { flag= WINDMC_FOR_TARGET ; }; // Miscellaneous +flags_to_pass = { flag= BUILD_CONFIG ; }; flags_to_pass = { flag= LANGUAGES ; optional=true ; }; flags_to_pass = { flag= LEAN ; }; @@ -526,62 +524,21 @@ dependencies = { module=all-target-winsu dependencies = { module=all-target-winsup; on=all-target-libtermcap; }; // Toplevel bootstrap -bootstrap_stage = { - id=1 ; - - // * We force-disable intermodule optimizations, even if - // --enable-intermodule was passed, since the installed compiler - // probably can't handle them. Luckily, autoconf always respects - // the last argument when conflicting --enable arguments are passed. - // * Likewise, we force-disable coverage flags, since the installed - // compiler probably has never heard of them. - stage_configure_flags='--disable-intermodule $(STAGE1_CHECKING) \ - --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)"' ; - stage_cflags='$(STAGE1_CFLAGS)' ; - stage_libcflags='$(STAGE1_LIBCFLAGS)' ; }; +bootstrap_stage = { id=1 ; }; bootstrap_stage = { id=2 ; prev=1 ; - bootstrap_target=bootstrap2 ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE2_CFLAGS)" ; - stage_libcflags="$(STAGE2_LIBCFLAGS)" ; }; -bootstrap_stage = { - id=b2g0 ; prev=1 ; - bootstrap_target=bootstrap2-debug ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE2_CFLAGS) -g0" ; - stage_libcflags="$(STAGE2_LIBCFLAGS) -g0" ; }; + bootstrap_target=bootstrap2 ; }; bootstrap_stage = { id=3 ; prev=2 ; lean=1 ; compare_target=compare ; bootstrap_target=bootstrap ; - cleanstrap_target=cleanstrap ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE3_CFLAGS)" ; - stage_libcflags="$(STAGE3_LIBCFLAGS)" ; }; -bootstrap_stage = { - id=b3g2 ; prev=b2g0 ; lean=1 ; - compare_target=compare-debug ; - bootstrap_target=bootstrap-debug ; - cleanstrap_target=cleanstrap-debug ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE3_CFLAGS) -g2" ; - stage_libcflags="$(STAGE3_LIBCFLAGS) -g2" ; }; + cleanstrap_target=cleanstrap ; }; bootstrap_stage = { id=4 ; prev=3 ; lean=2 ; compare_target=compare3 ; - bootstrap_target=bootstrap4 ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags="$(STAGE4_CFLAGS)" ; - stage_libcflags="$(STAGE4_CFLAGS)" ; }; + bootstrap_target=bootstrap4 ; }; bootstrap_stage = { - id=profile ; prev=1 ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags='$(STAGE2_CFLAGS) -fprofile-generate' ; - stage_libcflags='$(STAGE2_LIBCFLAGS)' ; }; + id=profile ; prev=1 ; }; bootstrap_stage = { id=feedback ; prev=profile ; - bootstrap_target=profiledbootstrap ; - stage_configure_flags="@stage2_werror_flag@" ; - stage_cflags='$(STAGE3_CFLAGS) -fprofile-use' ; - stage_libcflags='$(STAGE3_LIBCFLAGS) -fprofile-use' ; }; + bootstrap_target=profiledbootstrap ; }; Index: Makefile.tpl =================================================================== --- Makefile.tpl.orig 2008-10-10 04:04:32.000000000 -0300 +++ Makefile.tpl 2008-10-10 05:08:11.000000000 -0300 @@ -6,7 +6,8 @@ in # # Makefile for directory with subdirs to build. # Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation +# 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -177,6 +178,8 @@ HOST_EXPORTS = \ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CXX="$(CXX)"; export CXX; \ CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \ + GCJ="$(GCJ)"; export GCJ; \ + GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \ AR="$(AR)"; export AR; \ AS="$(AS)"; export AS; \ CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ @@ -212,11 +215,9 @@ HOST_EXPORTS = \ POSTSTAGE1_HOST_EXPORTS = \ $(HOST_EXPORTS) \ 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; \ + -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ \ + $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ + CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ LDFLAGS="$(BOOT_LDFLAGS)"; export LDFLAGS; # Target libraries are put under this directory: @@ -230,13 +231,13 @@ BASE_TARGET_EXPORTS = \ $(BASE_EXPORTS) \ AR="$(AR_FOR_TARGET)"; export AR; \ AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \ - CC="$(CC_FOR_TARGET)"; export CC; \ - CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CC="$(CC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \ CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ - CXXFLAGS="$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; \ - GCJ="$(GCJ_FOR_TARGET)"; export GCJ; \ - GFORTRAN="$(GFORTRAN_FOR_TARGET)"; export GFORTRAN; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + GCJ="$(GCJ_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GCJ; \ + GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \ LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ @@ -252,11 +253,11 @@ BASE_TARGET_EXPORTS = \ RAW_CXX_TARGET_EXPORTS = \ $(BASE_TARGET_EXPORTS) \ CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \ - CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; + CXX="$(RAW_CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX; NORMAL_TARGET_EXPORTS = \ $(BASE_TARGET_EXPORTS) \ - CXX="$(CXX_FOR_TARGET)"; export CXX; + CXX="$(CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX; # Where to find GMP HOST_GMPLIBS = @gmplibs@ @@ -356,48 +357,65 @@ LIBCFLAGS = $(CFLAGS) CXXFLAGS = @CXXFLAGS@ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates +TFLAGS = + +# Defaults for all stages; some are overridden below. + +STAGE_CFLAGS = $(BOOT_CFLAGS) +STAGE_TFLAGS = $(TFLAGS) +STAGE_CONFIGURE_FLAGS=@stage2_werror_flag@ + +[+ FOR bootstrap-stage +] +# Defaults for stage [+id+]; some are overridden below. +STAGE[+id+]_CFLAGS = $(STAGE_CFLAGS) +STAGE[+id+]_TFLAGS = $(STAGE_TFLAGS) +STAGE[+id+]_CONFIGURE_FLAGS = $(STAGE_CONFIGURE_FLAGS) +[+ ENDFOR bootstrap-stage +] + # Only build the C compiler for stage1, because that is the only one that # we can guarantee will build with the native compiler, and also it is the # only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS), # MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them # overrideable (for a bootstrap build stage1 also builds gcc.info). +STAGE1_CFLAGS = @stage1_cflags@ STAGE1_CHECKING=@stage1_checking@ STAGE1_LANGUAGES=@stage1_languages@ +# * We force-disable intermodule optimizations, even if +# --enable-intermodule was passed, since the installed compiler +# probably can't handle them. Luckily, autoconf always respects +# the last argument when conflicting --enable arguments are passed. +# * Likewise, we force-disable coverage flags, since the installed +# compiler probably has never heard of them. +STAGE1_CONFIGURE_FLAGS = --disable-intermodule $(STAGE1_CHECKING) \ + --disable-coverage --enable-languages="$(STAGE1_LANGUAGES)" + +STAGEprofile_CFLAGS = $(STAGE2_CFLAGS) -fprofile-generate +STAGEprofile_TFLAGS = $(STAGE2_TFLAGS) -STAGE1_CFLAGS=@stage1_cflags@ -STAGE2_CFLAGS=$(BOOT_CFLAGS) -STAGE3_CFLAGS=$(BOOT_CFLAGS) -STAGE4_CFLAGS=$(BOOT_CFLAGS) - -STAGE1_LIBCFLAGS=$(CFLAGS_FOR_TARGET) -STAGE2_LIBCFLAGS=$(CFLAGS_FOR_TARGET) -STAGE3_LIBCFLAGS=$(CFLAGS_FOR_TARGET) -STAGE4_LIBCFLAGS=$(CFLAGS_FOR_TARGET) +STAGEfeedback_CFLAGS = $(STAGE3_CFLAGS) -fprofile-use +STAGEfeedback_TFLAGS = $(STAGE3_TFLAGS) do-compare = @do_compare@ do-compare3 = $(do-compare) -do-compare-debug = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2 # ----------------------------------------------- # Programs producing files for the TARGET machine # ----------------------------------------------- -FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ - AR_FOR_TARGET=@AR_FOR_TARGET@ AS_FOR_TARGET=@AS_FOR_TARGET@ -CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@ $(FLAGS_FOR_TARGET) +CC_FOR_TARGET=$(STAGE_CC_WRAPPER) @CC_FOR_TARGET@ # If GCC_FOR_TARGET is not overriden on the command line, then this # variable is passed down to the gcc Makefile, where it is used to # build libgcc2.a. We define it here so that it can itself be # overridden on the command line. -GCC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCC_FOR_TARGET@ $(FLAGS_FOR_TARGET) -CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) -RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ $(FLAGS_FOR_TARGET) -GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ $(FLAGS_FOR_TARGET) -GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ $(FLAGS_FOR_TARGET) +GCC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCC_FOR_TARGET@ +CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ +RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ +GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ +GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ LD_FOR_TARGET=@LD_FOR_TARGET@ @@ -415,13 +433,17 @@ COMPILER_NM_FOR_TARGET=@COMPILER_NM_FOR_ CFLAGS_FOR_TARGET = @CFLAGS_FOR_TARGET@ CXXFLAGS_FOR_TARGET = @CXXFLAGS_FOR_TARGET@ -SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ -DEBUG_PREFIX_CFLAGS_FOR_TARGET = @DEBUG_PREFIX_CFLAGS_FOR_TARGET@ LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET) LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates LDFLAGS_FOR_TARGET = +FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ +SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ +DEBUG_PREFIX_CFLAGS_FOR_TARGET = @DEBUG_PREFIX_CFLAGS_FOR_TARGET@ + +XGCC_FLAGS_FOR_TARGET = $(FLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET) + # ------------------------------------ # Miscellaneous targets and flag lists # ------------------------------------ @@ -471,7 +493,10 @@ HOST_LIB_PATH_[+module+] = \ # Flags to pass down to all sub-makes. BASE_FLAGS_TO_PASS =[+ FOR flags_to_pass +][+ IF optional +] \ "`echo '[+flag+]=$([+flag+])' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"[+ ELSE optional +] \ - "[+flag+]=$([+flag+])"[+ ENDIF optional+][+ ENDFOR flags_to_pass +] \ + "[+flag+]=$([+flag+])"[+ ENDIF optional+][+ ENDFOR flags_to_pass +][+ FOR bootstrap-stage +] \ + "STAGE[+id+]_CFLAGS=$(STAGE[+id+]_CFLAGS)" \ + "STAGE[+id+]_TFLAGS=$(STAGE[+id+]_TFLAGS)"[+ ENDFOR bootstrap-stage +] \ + "TFLAGS=$(TFLAGS)" \ "CONFIG_SHELL=$(SHELL)" \ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" @@ -486,6 +511,8 @@ EXTRA_HOST_FLAGS = \ 'CC=$(CC)' \ 'CXX=$(CXX)' \ 'DLLTOOL=$(DLLTOOL)' \ + 'GCJ=$(GCJ)' \ + 'GFORTRAN=$(GFORTRAN)' \ 'LD=$(LD)' \ 'LIPO=$(LIPO)' \ 'NM=$(NM)' \ @@ -525,20 +552,24 @@ POSTSTAGE1_FLAGS_TO_PASS = \ EXTRA_TARGET_FLAGS = \ 'AR=$$(AR_FOR_TARGET)' \ 'AS=$(COMPILER_AS_FOR_TARGET)' \ - 'CC=$$(CC_FOR_TARGET)' \ - 'CFLAGS=$$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ - 'CXX=$$(CXX_FOR_TARGET)' \ - 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ + 'CC=$$(CC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'CFLAGS=$$(CFLAGS_FOR_TARGET)' \ + 'CXX=$$(CXX_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \ 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \ + 'GCJ=$$(GCJ_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ + 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ 'LD=$(COMPILER_LD_FOR_TARGET)' \ 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ - 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ - 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)' \ + 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ + 'LIBCXXFLAGS=$$(LIBCXXFLAGS_FOR_TARGET)' \ 'NM=$(COMPILER_NM_FOR_TARGET)' \ 'OBJDUMP=$$(OBJDUMP_FOR_TARGET)' \ 'RANLIB=$$(RANLIB_FOR_TARGET)' \ 'WINDRES=$$(WINDRES_FOR_TARGET)' \ - 'WINDMC=$$(WINDMC_FOR_TARGET)' + 'WINDMC=$$(WINDMC_FOR_TARGET)' \ + 'XGCC_FLAGS_FOR_TARGET=$(XGCC_FLAGS_FOR_TARGET)' \ + "TFLAGS=$$TFLAGS" TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) @@ -558,6 +589,13 @@ EXTRA_GCC_FLAGS = \ GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS) +@if gcc +BUILD_CONFIG = +ifneq ($(BUILD_CONFIG),) +include $(foreach CONFIG, $(BUILD_CONFIG), $(srcdir)/config/$(CONFIG).mk) +endif +@endif gcc + .PHONY: configure-host configure-host: [+ FOR host_modules +] \ @@ -581,11 +619,17 @@ all: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ - if [ -f stage_last ]; then \ +@if gcc-bootstrap + if [ -f stage_last ]; then : ; \ + TFLAGS="$(STAGE$(shell sed s,^stage,, stage_last)_TFLAGS)"; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target; \ else \ +@endif gcc-bootstrap $(MAKE) $(RECURSE_FLAGS_TO_PASS) all-host all-target; \ - fi +@if gcc-bootstrap + fi; \ +@endif gcc-bootstrap + : .PHONY: all-build [+ FOR build_modules +] @@ -866,6 +910,7 @@ configure-stage[+id+]-[+prefix+][+module @$(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ [+ IF check_multilibs +]echo "Checking multilib configuration for [+module+]..."; \ $(CC_FOR_TARGET) --print-multi-lib > [+subdir+]/[+module+]/multilib.tmp 2> /dev/null ; \ @@ -881,11 +926,14 @@ configure-stage[+id+]-[+prefix+][+module fi; \ [+ ENDIF check_multilibs +]test ! -f [+subdir+]/[+module+]/Makefile || exit 0; \ [+exports+][+ IF prev +] \ - [+poststage1_exports+][+ ENDIF prev +] [+ IF prefix +] \ - CFLAGS="[+stage_libcflags+] $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \ - CXXFLAGS="[+stage_libcflags+] $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CXXFLAGS; [+ ELSE +] \ - CFLAGS="[+stage_cflags+]"; export CFLAGS; \ - CXXFLAGS="[+stage_cflags+]"; export CXXFLAGS; [+ ENDIF +] \ + [+poststage1_exports+][+ ENDIF prev +][+ IF prefix +] \ + CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;[+ ELSE prefix +] \ + CFLAGS="$(STAGE[+id+]_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE[+id+]_CFLAGS)"; export CXXFLAGS;[+ IF prev +] \ + LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \ + LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +]; export LIBCFLAGS;[+ ENDIF prefix +] \ echo Configuring stage [+id+] in [+subdir+]/[+module+] ; \ $(SHELL) $(srcdir)/mkinstalldirs [+subdir+]/[+module+] ; \ cd [+subdir+]/[+module+] || exit 1; \ @@ -898,9 +946,10 @@ configure-stage[+id+]-[+prefix+][+module libsrcdir="$$s/[+module+]"; \ $(SHELL) $${libsrcdir}/configure \ [+args+] --build=${build_alias} --host=[+host_alias+] \ - --target=[+target_alias+] $${srcdiroption} \ - [+ IF prev +]--with-build-libsubdir=$(HOST_SUBDIR)[+ ENDIF prev +] \ - [+stage_configure_flags+] [+extra_configure_flags+] + --target=[+target_alias+] $${srcdiroption} [+ IF prev +]\ + --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +]\ + $(STAGE[+id+]_CONFIGURE_FLAGS)[+ IF extra_configure_flags +] \ + [+extra_configure_flags+][+ ENDIF extra_configure_flags +] @endif [+prefix+][+module+]-bootstrap [+ ENDFOR bootstrap_stage +] [+ ENDIF bootstrap +] @@ -940,16 +989,25 @@ all-stage[+id+]-[+prefix+][+module+]: co @[ $(current_stage) = stage[+id+] ] || $(MAKE) stage[+id+]-start @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ [+exports+][+ IF prev +] \ [+poststage1_exports+][+ ENDIF prev +] \ cd [+subdir+]/[+module+] && \ - $(MAKE) $(BASE_FLAGS_TO_PASS) \ - CFLAGS="[+stage_cflags+]" CXXFLAGS="[+stage_cflags+]" \ - LIBCFLAGS="[+stage_libcflags+]" \ - CFLAGS_FOR_TARGET="[+stage_libcflags+]" \ - CXXFLAGS_FOR_TARGET="[+stage_libcflags+]" [+args+] [+ + $(MAKE) $(BASE_FLAGS_TO_PASS)[+ IF prefix +] \ + CFLAGS="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"[+ ELSE prefix +] \ + CFLAGS="$(STAGE[+id+]_CFLAGS)" \ + CXXFLAGS="$(STAGE[+id+]_CFLAGS)"[+ IF prev +] \ + LIBCFLAGS="$(STAGE[+id+]_CFLAGS)"[+ ELSE prev +] \ + LIBCFLAGS="$(LIBCFLAGS)"[+ ENDIF prev +][+ ENDIF prefix +] \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + [+args+] [+ IF prev +][+poststage1_args+][+ ENDIF prev +] [+extra_make_flags+] \ + TFLAGS="$(STAGE[+id+]_TFLAGS)" \ $(TARGET-stage[+id+]-[+prefix+][+module+]) maybe-clean-stage[+id+]-[+prefix+][+module+]: clean-stage[+id+]-[+prefix+][+module+] @@ -1411,6 +1469,7 @@ do-clean: clean-stage[+id+] @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target [+bootstrap-target+]-lean: @@ -1421,6 +1480,7 @@ do-clean: clean-stage[+id+] @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target [+ ENDIF bootstrap-target +] @@ -1443,6 +1503,7 @@ distclean-stage[+id+]:: @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE[+id+]_TFLAGS)"; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) all-host all-target [+ ENDIF cleanstrap-target +] @endif gcc-bootstrap @@ -1478,8 +1539,8 @@ stage_current: .PHONY: restrap restrap:: @: $(MAKE); $(stage) - rm -rf stage1-$(TARGET_SUBDIR) [+ FOR bootstrap-stage +][+ IF prev - +]stage[+id+]-* [+ ENDIF prev +][+ ENDFOR bootstrap-stage +] + rm -rf stage1-$(TARGET_SUBDIR)[+ FOR bootstrap-stage +][+ IF prev + +] stage[+id+]-*[+ ENDIF prev +][+ ENDFOR bootstrap-stage +] restrap:: all @endif gcc-bootstrap Index: config/mt-gnu =================================================================== --- config/mt-gnu.orig 2008-10-10 04:04:33.000000000 -0300 +++ config/mt-gnu 2008-10-10 05:08:11.000000000 -0300 @@ -1,2 +1 @@ -CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) \ - $(DEBUG_PREFIX_CFLAGS_FOR_TARGET) -D_GNU_SOURCE +CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE Index: config/bootstrap-O1.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ config/bootstrap-O1.mk 2008-10-10 05:08:11.000000000 -0300 @@ -0,0 +1 @@ +BOOT_CFLAGS := -O1 $(filter-out -O%, $(BOOT_CFLAGS)) Index: config/bootstrap-O3.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ config/bootstrap-O3.mk 2008-10-10 05:08:11.000000000 -0300 @@ -0,0 +1 @@ +BOOT_CFLAGS := -O3 $(filter-out -O%, $(BOOT_CFLAGS)) Index: config/bootstrap-debug.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ config/bootstrap-debug.mk 2008-10-10 05:08:11.000000000 -0300 @@ -0,0 +1,2 @@ +STAGE2_CFLAGS += -g0 +do-compare = $(SHELL) $(srcdir)/contrib/compare-debug $$f1 $$f2 Index: libjava/configure.ac =================================================================== --- libjava/configure.ac.orig 2008-10-10 04:04:33.000000000 -0300 +++ libjava/configure.ac 2008-10-10 05:08:11.000000000 -0300 @@ -352,23 +352,33 @@ else which_gcj=path fi fi +libgcjdir=`${PWDCMD-pwd}` +case $GCJ in +*" -B"*) + # Just in case there is a comma in the build dir, quote it for the + # sed command below. + case $libgcjdir in + *[[,\\]]*) qlibgcjdir=`echo "$libgcjdir" | sed 's:[[,\\]]:\\&:g'`;; + *) qlibgcjdir=$libgcjdir;; + esac + GCJ=`echo "$GCJ" | sed "s, -B, -B$qlibgcjdir/&,"` + ;; +*) + GCJ=$GCJ" -B$libgcjdir/" + ;; +esac case "${which_gcj}" in built) - GCJ="$built_gcc_dir/gcj -B`${PWDCMD-pwd}`/ -B$built_gcc_dir/" GCJH='$(top_builddir)/$(MULTIBUILDTOP)../../$(host_subdir)/gcc/gcjh' ;; cross) if test "x${with_newlib}" = "xyes"; then # FIXME (comment): Why is this needed? GCC_UNWIND_INCLUDE= - GCJ="${target_noncanonical}-gcj" - else - GCJ="${target_noncanonical}-gcj -B`${PWDCMD-pwd}`/" fi GCJH='$(target_noncanonical)-gcjh' ;; path) - GCJ="gcj -B`${PWDCMD-pwd}`/" GCJH=gcjh ;; esac Index: gcc/java/Make-lang.in =================================================================== --- gcc/java/Make-lang.in.orig 2008-10-10 04:04:33.000000000 -0300 +++ gcc/java/Make-lang.in 2008-10-10 05:08:11.000000000 -0300 @@ -44,10 +44,10 @@ JAVA_INSTALL_NAME := $(shell echo gcj|sed '$(program_transform_name)') JAVA_TARGET_INSTALL_NAME := $(target_noncanonical)-$(shell echo gcj|sed '$(program_transform_name)') -GCJ = gcj +XGCJ = gcj # Define the names for selecting java in LANGUAGES. -java: jc1$(exeext) $(GCJ)$(exeext) jvgenmain$(exeext) jcf-dump$(exeext) +java: jc1$(exeext) $(XGCJ)$(exeext) jvgenmain$(exeext) jcf-dump$(exeext) # Define the name of target independent tools to be installed in $(bindir) # Names are subject to changes @@ -62,17 +62,17 @@ jvspec.o: $(srcdir)/java/jvspec.c $(SYST $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ $(INCLUDES) $(srcdir)/java/jvspec.c $(OUTPUT_OPTION)) -# Create the compiler driver for $(GCJ). -$(GCJ)$(exeext): $(GCC_OBJS) jvspec.o java/jcf-path.o version.o \ +# Create the compiler driver for $(XGCJ). +$(XGCJ)$(exeext): $(GCC_OBJS) jvspec.o java/jcf-path.o version.o \ prefix.o intl.o $(LIBDEPS) $(EXTRA_GCC_OBJS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(GCC_OBJS) jvspec.o \ java/jcf-path.o prefix.o intl.o \ version.o $(EXTRA_GCC_OBJS) $(LIBS) -# Create a version of the $(GCJ) driver which calls the cross-compiler. -$(GCJ)-cross$(exeext): $(GCJ)$(exeext) - -rm -f $(GCJ)-cross$(exeext) - cp $(GCJ)$(exeext) $(GCJ)-cross$(exeext) +# Create a version of the $(XGCJ) driver which calls the cross-compiler. +$(XGCJ)-cross$(exeext): $(XGCJ)$(exeext) + -rm -f $(XGCJ)-cross$(exeext) + cp $(XGCJ)$(exeext) $(XGCJ)-cross$(exeext) java.srcextra: @@ -115,8 +115,8 @@ jvgenmain$(exeext): $(JVGENMAIN_OBJS) $( #\f # Build hooks: -java.all.cross: $(GCJ)-cross$(exeext) -java.start.encap: $(GCJ)$(exeext) +java.all.cross: $(XGCJ)-cross$(exeext) +java.start.encap: $(XGCJ)$(exeext) java.rest.encap: @@ -157,11 +157,11 @@ check-java : # Install gcj as well as the target-independent tools. java.install-common: installdirs - -if [ -f $(GCJ)$(exeext) ]; then \ + -if [ -f $(XGCJ)$(exeext) ]; then \ rm -f $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ - $(INSTALL_PROGRAM) $(GCJ)$(exeext) $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ + $(INSTALL_PROGRAM) $(XGCJ)$(exeext) $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ chmod a+x $(DESTDIR)$(bindir)/$(JAVA_INSTALL_NAME)$(exeext); \ - if [ -f $(GCJ)-cross$(exeext) ]; then \ + if [ -f $(XGCJ)-cross$(exeext) ]; then \ true; \ else \ rm -f $(DESTDIR)$(bindir)/$(JAVA_TARGET_INSTALL_NAME)$(exeext); \ @@ -210,7 +210,7 @@ java.install-pdf: $(JAVA_PDFFILES) java.mostlyclean: -rm -f java/*$(objext) $(DEMANGLER_PROG) -rm -f java/*$(coverageexts) - -rm -f jc1$(exeext) $(GCJ)$(exeext) jvgenmain$(exeext) \ + -rm -f jc1$(exeext) $(XGCJ)$(exeext) jvgenmain$(exeext) \ jcf-dump$(exeext) s-java java.clean: java.distclean: Index: gcc/doc/install.texi =================================================================== --- gcc/doc/install.texi.orig 2008-10-01 15:43:57.000000000 -0300 +++ gcc/doc/install.texi 2008-10-10 05:08:11.000000000 -0300 @@ -1848,7 +1848,7 @@ bootstrapped, you can use @code{CFLAGS_F compilation flags, as for non-bootstrapped target libraries. Again, if the native compiler miscompiles the stage1 compiler, you may need to work around this by avoiding non-working parts of the stage1 -compiler. Use @code{STAGE1_LIBCFLAGS} to this end. +compiler. Use @code{STAGE1_TFLAGS} to this end. If you used the flag @option{--enable-languages=@dots{}} to restrict the compilers to be built, only those you've actually enabled will be @@ -1872,6 +1872,24 @@ the one you are building on: for example @code{powerpc64-unknown-linux-gnu} host. In this case, pass @option{--enable-bootstrap} to the configure script. +@code{BUILD_CONFIG} can be used to bring in additional customization to +the build. It can be set to a whitespace-separated list of names. For +each such @code{NAME}, top-level @file{config/@code{NAME}.mk} will be +included by the top-level @file{Makefile}, bringing in any settings it +contains. Some examples are: + +@table @asis +@item @samp{bootstrap-O1} +Removes any @option{-O}-started option from @code{BOOT_CFLAGS}, and adds +@option{-O1} to it. @samp{BUILD_CONFIG=bootstrap-O1} is equivalent to +@samp{BOOT_CFLAGS='-g -O1'}. + +@item @samp{bootstrap-O3} +Analogous to @code{bootstrap-O1}. + +@item @samp{bootstrap-debug} +Builds stage2 without debug information, and uses +@file{contrib/compare-debug} to compare object files. @section Building a cross compiler Index: config/multi.m4 =================================================================== --- config/multi.m4.orig 2008-10-10 04:04:33.000000000 -0300 +++ config/multi.m4 2008-10-10 05:08:11.000000000 -0300 @@ -1,5 +1,5 @@ ## -*- Autoconf -*- -# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006 +# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation @@ -62,4 +62,7 @@ with_target_subdir="$with_target_subdir" ac_configure_args="${multilib_arg} ${ac_configure_args}" multi_basedir="$multi_basedir" CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -CC="$CC"])])dnl +CC="$CC" +CXX="$CXX" +GFORTRAN="$GFORTRAN" +GCJ="$GCJ"])])dnl [-- Attachment #4: Type: text/plain, Size: 257 bytes --] -- Alexandre Oliva http://www.lsd.ic.unicamp.br/~oliva/ Free Software Evangelist oliva@{lsd.ic.unicamp.br, gnu.org} FSFLA Board Member ¡Sé Libre! => http://www.fsfla.org/ Red Hat Compiler Engineer aoliva@{redhat.com, gcc.gnu.org} ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses 2008-10-07 8:31 [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses Alexandre Oliva 2008-10-07 8:41 ` Ralf Wildenhues @ 2008-10-07 9:41 ` Paolo Bonzini 2009-05-12 5:48 ` Alexandre Oliva 2008-10-08 2:27 ` Adam Nemet 2 siblings, 1 reply; 9+ messages in thread From: Paolo Bonzini @ 2008-10-07 9:41 UTC (permalink / raw) To: gcc-patches Alexandre Oliva wrote: > This patch introduces support for BUILD_CONFIG, a Makefile macro that, > if set to say "a b", will cause config/a.mk and config/b.mk to be > included in the top-level Makefile. The plan was to use this to add > -fcompare-debug to certain variables, and eventually add a configure > option to set a default (non-empty) value for BUILD_CONFIG. I like it. Please merge it into trunk when 4.5 stage1 starts. Paolo ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses 2008-10-07 9:41 ` Paolo Bonzini @ 2009-05-12 5:48 ` Alexandre Oliva 0 siblings, 0 replies; 9+ messages in thread From: Alexandre Oliva @ 2009-05-12 5:48 UTC (permalink / raw) To: Paolo Bonzini; +Cc: gcc-patches [-- Attachment #1: Type: text/plain, Size: 3302 bytes --] On Oct 7, 2008, Paolo Bonzini <bonzini@gnu.org> wrote: > Alexandre Oliva wrote: >> This patch introduces support for BUILD_CONFIG, a Makefile macro that, >> if set to say "a b", will cause config/a.mk and config/b.mk to be >> included in the top-level Makefile. The plan was to use this to add >> -fcompare-debug to certain variables, and eventually add a configure >> option to set a default (non-empty) value for BUILD_CONFIG. > I like it. Please merge it into trunk when 4.5 stage1 starts. Here's the patch I'm installing. It's the same as last time, except for variations in line numbers and a fix for an error I got in processing the docs. It's very large because of the regenerated files, so I'm compressing it. for ChangeLog from Alexandre Oliva <aoliva@redhat.com> PR target/37137 * Makefile.def (flags_to_pass): Remove redundant and incomplete STAGE1_CFLAGS, STAGE2_CFLAGS, STAGE3_CFLAGS, and STAGE4_CFLAGS. Add FLAGS_FOR_TARGET and BUILD_CONFIG. (bootstrap_stage): Remove bootstrap-debug custom stages. Turn stage_configureflags, stage_cflags and stage_libcflags into explicit Makefile macros. * Makefile.tpl (HOST_EXPORTS, EXTRA_HOST_FLAGS): Pass GCJ and GFORTRAN. (POSTSTAGE1_HOST_EXPORTS): Add XGCC_FLAGS_FOR_TARGET and TFLAGS to CC. Set CC_FOR_BUILD from CC. (BASE_TARGET_EXPORTS, RAW_CXX_TARGET_EXPORTS, NORMAL_TARGET_EXPORTS): Move SYSROOT_CFLAGS_FOR_TARGET and DEBUG_PREFIX_CFLAGS_FOR_TARGET from CFLAGS and CXXFLAGS to XGCC_FLAGS_FOR_TARGET. Add it along with TFLAGS to CC, CXX, GCJ, and GFORTRAN. (TFLAGS, STAGE_CFLAGS, STAGE_TFLAGS, STAGE_CONFIGURE_FLAGS): New. (_LIBCFLAGS): Renamed to _TFLAGS. (do-compare-debug, do-compare3-debug): Drop. (CC, GCC_FOR_TARGET, CXX_FOR_TARGET, RAW_CXX_FOR_TARGET, GCJ_FOR_TARGET, GFORTRAN_FOR_TARGET): Remove FLAGS_FOR_TARGET. (FLAGS_FOR_TARGET, SYSROOT_CFLAGS_FOR_TARGET, DEBUG_PREFIX_CFLAGS_FOR_TARGET): Move down. (XGCC_FLAGS_FOR_TARGET): New. (BASE_FLAGS_TO_PASS): Pass STAGEid_CFLAGS, STAGEid_TFLAGS and TFLAGS. (EXTRA_HOST_FLAGS): Pass GCJ and GFORTRAN. (POSTSTAGE1_FLAGS_TO_PASS): Move SYSROOT_CFLAGS_FOR_TARGET and DEBUG_PREFIX_CFLAGS_FOR_TARGET from CFLAGS, CXXFLAGS, LIBCFLAGS, LIBCXXFLAGS to XGCC_FLAGS_FOR_TARGET. Add it along with TFLAGS to CC, CXX, GCJ, and GFORTRAN. Pass XGCC_FLAGS_FOR_TARGET and TFLAGS. (BUILD_CONFIG): Include if requested. (all): Set TFLAGS on bootstrap. (configure-stageid-prefixmodule): Pass TFLAGS, adjust FLAGS. (all-stageid-prefixmodule): Likewise. (do-clean, distclean-stageid): Set TFLAGS. (restrap): Fix whitespace. * Makefile.in: Rebuilt. for config/ChangeLog from Alexandre Oliva <aoliva@redhat.com> * multi.m4: Save CXX, GFORTRAN and GCJ in config.status. * mt-gnu (CXXFLAGS_FOR_TARGET): Adjust. * bootstrap-O1.mk: New. * bootstrap-O3.mk: New. * bootstrap-debug.mk: New. for gcc/ChangeLog from Alexandre Oliva <aoliva@redhat.com> PR target/37137 * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document. for gcc/java/ChangeLog from Alexandre Oliva <aoliva@redhat.com> * Make-lang.in (GCJ): Renamed to... (XGCJ): ... this. for libjava/ChangeLog from Alexandre Oliva <aoliva@redhat.com> * configure.ac: Insert libgcjdir in the GCJ passed in the environment, rather than overriding completely. * configure: Rebuilt. [-- Attachment #2: bootstrap-configs.patch.bz2 --] [-- Type: application/x-bzip2, Size: 25229 bytes --] [-- Attachment #3: Type: text/plain, Size: 258 bytes --] -- Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/ You must be the change you wish to see in the world. -- Gandhi Be Free! -- http://FSFLA.org/ FSF Latin America board member Free Software Evangelist Red Hat Brazil Compiler Engineer ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses 2008-10-07 8:31 [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses Alexandre Oliva 2008-10-07 8:41 ` Ralf Wildenhues 2008-10-07 9:41 ` Paolo Bonzini @ 2008-10-08 2:27 ` Adam Nemet 2008-10-10 9:23 ` Alexandre Oliva 2 siblings, 1 reply; 9+ messages in thread From: Adam Nemet @ 2008-10-08 2:27 UTC (permalink / raw) To: Alexandre Oliva; +Cc: gcc-patches Alexandre Oliva <aoliva@redhat.com> writes: > Second, I found that LIBCFLAGS was not used consistently. IMHO, we > should only use LIBCFLAGS for builds using the pre-installed host > compiler. For target builds, we should use LIBCFLAGS_FOR_TARGET, and > for host builds in in stage2+ I can see that it makes sense to use > either STAGE_CFLAGS (being the preferred flags for GCC for that stage, > without any of the magic flags required by the compiler used to build > stage1) or CFLAGS_FOR_TARGET (being the preferred flags for the GCC > built in the previous stage). I chose the former, for simplicity. This is PR/37137. Can this part of the fix be merged to trunk now? I think you also need to update install.texi. See my WIP patch for the same issue. Adam Index: Makefile.tpl =================================================================== --- Makefile.tpl (revision 140955) +++ Makefile.tpl (working copy) @@ -370,7 +370,11 @@ STAGE2_CFLAGS=$(BOOT_CFLAGS) STAGE3_CFLAGS=$(BOOT_CFLAGS) STAGE4_CFLAGS=$(BOOT_CFLAGS) -STAGE1_LIBCFLAGS=$(CFLAGS_FOR_TARGET) +# Used during stage1 with host libraries. +STAGE1_LIBCFLAGS=@stage1_cflags@ +# Used during stage1 with target libraries. +STAGE1_CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET) + STAGE2_LIBCFLAGS=$(CFLAGS_FOR_TARGET) STAGE3_LIBCFLAGS=$(CFLAGS_FOR_TARGET) STAGE4_LIBCFLAGS=$(CFLAGS_FOR_TARGET) @@ -945,9 +949,14 @@ all-stage[+id+]-[+prefix+][+module+]: co cd [+subdir+]/[+module+] && \ $(MAKE) $(BASE_FLAGS_TO_PASS) \ CFLAGS="[+stage_cflags+]" CXXFLAGS="[+stage_cflags+]" \ - LIBCFLAGS="[+stage_libcflags+]" \ + LIBCFLAGS="[+stage_libcflags+]"[+ + IF (= (get "id") "1") +] \ + CFLAGS_FOR_TARGET="$(STAGE1_CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(STAGE1_CFLAGS_FOR_TARGET)"[+ + ELSE +] \ CFLAGS_FOR_TARGET="[+stage_libcflags+]" \ - CXXFLAGS_FOR_TARGET="[+stage_libcflags+]" [+args+] [+ + CXXFLAGS_FOR_TARGET="[+stage_libcflags+]"[+ + ENDIF +] [+args+] [+ IF prev +][+poststage1_args+][+ ENDIF prev +] [+extra_make_flags+] \ $(TARGET-stage[+id+]-[+prefix+][+module+]) Index: gcc/doc/install.texi =================================================================== --- gcc/doc/install.texi (revision 140955) +++ gcc/doc/install.texi (working copy) @@ -1848,7 +1848,7 @@ bootstrapped, you can use @code{CFLAGS_F compilation flags, as for non-bootstrapped target libraries. Again, if the native compiler miscompiles the stage1 compiler, you may need to work around this by avoiding non-working parts of the stage1 -compiler. Use @code{STAGE1_LIBCFLAGS} to this end. +compiler. Use @code{STAGE1_CFLAGS_FOR_TARGET} to this end. If you used the flag @option{--enable-languages=@dots{}} to restrict the compilers to be built, only those you've actually enabled will be ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses 2008-10-08 2:27 ` Adam Nemet @ 2008-10-10 9:23 ` Alexandre Oliva 0 siblings, 0 replies; 9+ messages in thread From: Alexandre Oliva @ 2008-10-10 9:23 UTC (permalink / raw) To: Adam Nemet; +Cc: gcc-patches [-- Attachment #1: Type: text/plain, Size: 532 bytes --] On Oct 7, 2008, Adam Nemet <anemet@caviumnetworks.com> wrote: > I think you also need to update install.texi. Thanks for reminding me, I was indeed missing docs for the newly-added BUILD_CONFIG as well. Fixed as follows in the branch. I also added it the patch for the trunk I just posted in this thread, although somewhat shortened, omitting features that are only in the VTA branch. I also added a reference to bug 37137 to the top-level ChangeLog entry, and dropped the cut&pasto that referenced bootstrap4-debug in there. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: bootstrap-configs-doc.patch --] [-- Type: text/x-patch, Size: 3053 bytes --] for gcc/ChangeLog.vta from Alexandre Oliva <aoliva@redhat.com> * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document. Index: gcc/doc/install.texi =================================================================== --- gcc/doc/install.texi.orig 2008-07-29 18:13:15.000000000 -0300 +++ gcc/doc/install.texi 2008-10-10 05:04:29.000000000 -0300 @@ -1834,7 +1834,7 @@ bootstrapped, you can use @code{CFLAGS_F compilation flags, as for non-bootstrapped target libraries. Again, if the native compiler miscompiles the stage1 compiler, you may need to work around this by avoiding non-working parts of the stage1 -compiler. Use @code{STAGE1_LIBCFLAGS} to this end. +compiler. Use @code{STAGE1_TFLAGS} to this end. If you used the flag @option{--enable-languages=@dots{}} to restrict the compilers to be built, only those you've actually enabled will be @@ -1858,6 +1858,50 @@ the one you are building on: for example @code{powerpc64-unknown-linux-gnu} host. In this case, pass @option{--enable-bootstrap} to the configure script. +@code{BUILD_CONFIG} can be used to bring in additional customization to +the build. It can be set to a whitespace-separated list of names. For +each such @code{NAME}, top-level @file{config/@code{NAME}.mk} will be +included by the top-level @file{Makefile}, bringing in any settings it +contains. Some examples are: + +@table @asis +@item @samp{bootstrap-O1} +Removes any @option{-O}-started option from @code{BOOT_CFLAGS}, and adds +@option{-O1} to it. @samp{BUILD_CONFIG=bootstrap-O1} is equivalent to +@samp{BOOT_CFLAGS='-g -O1'}. + +@item @samp{bootstrap-O3} +Analogous to @code{bootstrap-O1}. + +@item @samp{bootstrap-debug} +Builds stage2 without debug information, and uses +@file{contrib/compare-debug} to compare object files. If +@code{BOOT_CFLAGS} is overridden so as to not enable debug information, +stage2 will have it, and stage3 won't. + +@item @samp{bootstrap-debug-lib} +Toggles debug information generation in stage2, like +@file{bootstrap-debug}, and enables internal comparison +(@option{-fcompare-debug}) with and without debug information in stage3, +and internal comparison with and without variable tracking at +assignments (VTA) on stage4. As for libraries, it toggles debug +information generation for libraries on stage1, enables internal +comparison with and without VTA on stage2, internal comparison with and +without debug information in stage3 (all libraries, unlike previous +stages that only build libgcc), and internal comparison with and without +VTA on stage4. + +@item @samp{bootstrap-debug-ckovw} +Arranges for error messages to be issued if the compiler built on any +stage is run without the option @option{-fcompare-debug}. This is +useful to verify the full coverage of the @code{bootstrap-debug-lib} +option. + +@item @samp{bootstrap-time} +Arranges for the run time of each program started by the GCC driver, +built in any stage, to be logged to @file{time.log}, in the top level of +the build tree. +@end table @section Building a cross compiler [-- Attachment #3: Type: text/plain, Size: 2146 bytes --] for gcc/ChangeLog from Alexandre Oliva <aoliva@redhat.com> PR target/37137 * doc/install.texi (STAGE1_TFLAGS, BUILD_CONFIG): Document. Index: gcc/doc/install.texi =================================================================== --- gcc/doc/install.texi.orig 2008-10-01 15:43:57.000000000 -0300 +++ gcc/doc/install.texi 2008-10-10 05:08:11.000000000 -0300 @@ -1848,7 +1848,7 @@ bootstrapped, you can use @code{CFLAGS_F compilation flags, as for non-bootstrapped target libraries. Again, if the native compiler miscompiles the stage1 compiler, you may need to work around this by avoiding non-working parts of the stage1 -compiler. Use @code{STAGE1_LIBCFLAGS} to this end. +compiler. Use @code{STAGE1_TFLAGS} to this end. If you used the flag @option{--enable-languages=@dots{}} to restrict the compilers to be built, only those you've actually enabled will be @@ -1872,6 +1872,24 @@ the one you are building on: for example @code{powerpc64-unknown-linux-gnu} host. In this case, pass @option{--enable-bootstrap} to the configure script. +@code{BUILD_CONFIG} can be used to bring in additional customization to +the build. It can be set to a whitespace-separated list of names. For +each such @code{NAME}, top-level @file{config/@code{NAME}.mk} will be +included by the top-level @file{Makefile}, bringing in any settings it +contains. Some examples are: + +@table @asis +@item @samp{bootstrap-O1} +Removes any @option{-O}-started option from @code{BOOT_CFLAGS}, and adds +@option{-O1} to it. @samp{BUILD_CONFIG=bootstrap-O1} is equivalent to +@samp{BOOT_CFLAGS='-g -O1'}. + +@item @samp{bootstrap-O3} +Analogous to @code{bootstrap-O1}. + +@item @samp{bootstrap-debug} +Builds stage2 without debug information, and uses +@file{contrib/compare-debug} to compare object files. @section Building a cross compiler -- Alexandre Oliva http://www.lsd.ic.unicamp.br/~oliva/ Free Software Evangelist oliva@{lsd.ic.unicamp.br, gnu.org} FSFLA Board Member ¡Sé Libre! => http://www.fsfla.org/ Red Hat Compiler Engineer aoliva@{redhat.com, gcc.gnu.org} ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2009-05-12 5:48 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2008-10-07 8:31 [vta] revamp bootstrap-debug with -fcompare-debug, fix LIBCFLAGS uses Alexandre Oliva 2008-10-07 8:41 ` Ralf Wildenhues 2008-10-07 9:01 ` Andreas Schwab 2008-10-07 18:09 ` Alexandre Oliva 2008-10-10 13:42 ` Alexandre Oliva 2008-10-07 9:41 ` Paolo Bonzini 2009-05-12 5:48 ` Alexandre Oliva 2008-10-08 2:27 ` Adam Nemet 2008-10-10 9:23 ` Alexandre Oliva
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).