This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix unified tree breakage


Alexandre Oliva wrote:
On Oct 5, 2005, Paolo Bonzini <paolo.bonzini@lu.unisi.ch> wrote:


In 4.2, we'll have *toplevel* bootstrap enabled by default.  This is
what you saw indicated as "@if gcc-bootstrap", and it means that the
toplevel orchestrates a 3-stage build of libiberty, binutils, and
everything else up to gcc.  In this case it will just work because
stage1 will use the system assembler/linker, and stage2/3 will use the
previous stage of the in-tree assembler/linker:


This is not good.  It means the libgcc build uses one pair of
assembler/linker different from the one that gets installed.  Each
stage must use its own assembler/linker to build the GCC libraries.

It does, I'm sorry. It's quite complicated and sometimes I get it wrong myself. :-(


The stage2 and stage3 binaries should be identical (and even the stage1 and stage2 binaries should behave the same). Thus, using the previous stage of the in-tree assembler/linker could even be correct, but it is not what it is done.

I think this has to be done for all stages, and every stage must use
its own assembler/linker pair to build any target libraries (libgcc
included), otherwise the point of bootstrapping is sort of missed.

For toplevel bootstrap, it will be.


When I said that for 4.2 I want to remove this junk, it is because I would like to add a script that automatically picks the correct tool. For example,

run-tool --build='$$r/$(BUILD_SUBDIR)/bison/tests/bison -y' \
         --build='$$r/$(BUILD_SUBDIR)/byacc/byacc' \
         '$(CONFIGURED_YACC)

finds an in-tree bison or byacc, falling back to $(CONFIGURED_YACC). Or,

run-tool --target='$$r/$(HOST_SUBDIR)/gas/as-new' \
         --target='$$r/$(HOST_SUBDIR)/gcc/as' \
         --host='$(AS)' \
         '$(CONFIGURED_AS_FOR_TARGET)'"

finds an in-tree target assembler, falling back to the system host assembler in a native configuration (target = host) or then to the $(CONFIGURED_AS_FOR_TARGET). The first parameter specifies the desired triplet for the tool, so --host is only considered if the host and target triplets are identical.

This allows all the backticked `if ... ; then echo ; else echo; fi` expressions in Makefile.tpl to go away.

Paolo


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