@@ -119,8 +119,14 @@ MUSL_CC_FOR_TARGET ?= $(MUSL_TUPLE)-gcc
119119MUSL_CXX_FOR_TARGET ?= $(MUSL_TUPLE ) -g++
120120
121121CONFIGURE_HOST = @configure_host@
122+ PREPARATION_STAMP: =stamps/check-write-permission
122123
123124all : @default_target@
125+ ifeq (@enable_host_gcc@,--enable-host-gcc)
126+ PREPARATION_STAMP+ = stamps/install-host-gcc
127+ PATH := $(builddir ) /install-host-gcc/bin:$(PATH )
128+ GCC_CHECKING_FLAGS := $(GCC_CHECKING_FLAGS ) --enable-werror-always
129+ endif
124130newlib : stamps/build-gcc-newlib-stage2
125131linux : stamps/build-gcc-linux-stage2
126132ifneq (,$(findstring riscv32,$(MUSL_TUPLE ) ) )
@@ -324,11 +330,25 @@ $(srcdir)/%/.git:
324330 flock ` git rev-parse --git-dir` /config git submodule init $(dir $@ ) && \
325331 flock ` git rev-parse --git-dir` /config git submodule update $(dir $@ )
326332
333+ stamps/install-host-gcc : $(GCC_SRCDIR ) $(GCC_SRC_GIT )
334+ if test -f $< /contrib/download_prerequisites && test " @NEED_GCC_EXTERNAL_LIBRARIES@" = " true" ; then cd $< && ./contrib/download_prerequisites; fi
335+ rm -rf $@ $(notdir $@ )
336+ mkdir $(notdir $@ )
337+ cd $(notdir $@ ) && $< /configure \
338+ --prefix=$(builddir ) /install-host-gcc \
339+ @with_system_zlib@ \
340+ --enable-languages=c,c++ \
341+ --disable-bootstrap \
342+ --disable-multilib
343+ $(MAKE ) -C $(notdir $@ )
344+ $(MAKE ) -C $(notdir $@ ) install
345+ mkdir -p $(dir $@ ) && touch $@
346+
327347#
328348# GLIBC
329349#
330350
331- stamps/build-binutils-linux : $(BINUTILS_SRCDIR ) $(BINUTILS_SRC_GIT ) stamps/check-write-permission
351+ stamps/build-binutils-linux : $(BINUTILS_SRCDIR ) $(BINUTILS_SRC_GIT ) $( PREPARATION_STAMP )
332352 rm -rf $@ $(notdir $@ )
333353 mkdir $(notdir $@ )
334354# CC_FOR_TARGET is required for the ld testsuite.
@@ -351,7 +371,7 @@ stamps/build-binutils-linux: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) stamps/check
351371 $(MAKE) -C $(notdir $@) install
352372 mkdir -p $(dir $@) && touch $@
353373
354- stamps/build-gdb-linux : $(GDB_SRCDIR ) $(GDB_SRC_GIT )
374+ stamps/build-gdb-linux : $(GDB_SRCDIR ) $(GDB_SRC_GIT ) $( PREPARATION_STAMP )
355375 rm -rf $@ $(notdir $@ )
356376 mkdir $(notdir $@ )
357377# CC_FOR_TARGET is required for the ld testsuite.
@@ -498,7 +518,7 @@ stamps/build-gcc-linux-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) $(addprefix stamps/b
498518 cp -a $(INSTALL_DIR)/$(LINUX_TUPLE)/lib* $(SYSROOT)
499519 mkdir -p $(dir $@) && touch $@
500520
501- stamps/build-binutils-linux-native : $(BINUTILS_SRCDIR ) $(BINUTILS_SRC_GIT ) stamps/build-gcc-linux-stage2 stamps/check-write-permission
521+ stamps/build-binutils-linux-native : $(BINUTILS_SRCDIR ) $(BINUTILS_SRC_GIT ) stamps/build-gcc-linux-stage2 $( PREPARATION_STAMP )
502522 rm -rf $@ $(notdir $@ )
503523 mkdir $(notdir $@ )
504524 cd $(notdir $@ ) && $< /configure \
@@ -555,7 +575,7 @@ stamps/build-gcc-linux-native: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-gcc-lin
555575# NEWLIB
556576#
557577
558- stamps/build-binutils-newlib : $(BINUTILS_SRCDIR ) $(BINUTILS_SRC_GIT ) stamps/check-write-permission
578+ stamps/build-binutils-newlib : $(BINUTILS_SRCDIR ) $(BINUTILS_SRC_GIT ) $( PREPARATION_STAMP )
559579 rm -rf $@ $(notdir $@ )
560580 mkdir $(notdir $@ )
561581# CC_FOR_TARGET is required for the ld testsuite.
@@ -575,7 +595,7 @@ stamps/build-binutils-newlib: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) stamps/chec
575595 $(MAKE) -C $(notdir $@) install
576596 mkdir -p $(dir $@) && touch $@
577597
578- stamps/build-gdb-newlib : $(GDB_SRCDIR ) $(GDB_SRC_GIT )
598+ stamps/build-gdb-newlib : $(GDB_SRCDIR ) $(GDB_SRC_GIT ) $( PREPARATION_STAMP )
579599 rm -rf $@ $(notdir $@ )
580600 mkdir $(notdir $@ )
581601# CC_FOR_TARGET is required for the ld testsuite.
@@ -741,7 +761,7 @@ stamps/build-gcc-newlib-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-newlib
741761# MUSL
742762#
743763
744- stamps/build-binutils-musl : $(BINUTILS_SRCDIR ) $(BINUTILS_SRC_GIT ) stamps/check-write-permission
764+ stamps/build-binutils-musl : $(BINUTILS_SRCDIR ) $(BINUTILS_SRC_GIT ) $( PREPARATION_STAMP )
745765 rm -rf $@ $(notdir $@ )
746766 mkdir $(notdir $@ )
747767# CC_FOR_TARGET is required for the ld testsuite.
@@ -870,7 +890,7 @@ stamps/build-gcc-musl-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-musl-lin
870890 cp -a $(INSTALL_DIR)/$(MUSL_TUPLE)/lib* $(SYSROOT)
871891 mkdir -p $(dir $@) && touch $@
872892
873- stamps/build-spike : $(SPIKE_SRCDIR ) $(SPIKE_SRC_GIT )
893+ stamps/build-spike : $(SPIKE_SRCDIR ) $(SPIKE_SRC_GIT ) $( PREPARATION_STAMP )
874894 rm -rf $@ $(notdir $@ )
875895 mkdir $(notdir $@ )
876896 cd $(notdir $@ ) && $< /configure \
@@ -906,7 +926,7 @@ stamps/build-pk64: $(PK_SRCDIR) $(PK_SRC_GIT) stamps/build-gcc-newlib-stage2
906926 mkdir -p $(dir $@ )
907927 date > $@
908928
909- stamps/build-qemu : $(QEMU_SRCDIR ) $(QEMU_SRC_GIT )
929+ stamps/build-qemu : $(QEMU_SRCDIR ) $(QEMU_SRC_GIT ) $( PREPARATION_STAMP )
910930 rm -rf $@ $(notdir $@ )
911931 mkdir $(notdir $@ )
912932 cd $(notdir $@ ) && $< /configure \
@@ -971,7 +991,7 @@ stamps/build-llvm-newlib: $(LLVM_SRCDIR) $(LLVM_SRC_GIT) stamps/build-gcc-newlib
971991 ln -s -f clang++ $(NEWLIB_TUPLE ) -clang++
972992 mkdir -p $(dir $@ ) && touch $@
973993
974- stamps/build-dejagnu : $(DEJAGNU_SRCDIR ) $(DEJAGNU_SRC_GIT )
994+ stamps/build-dejagnu : $(DEJAGNU_SRCDIR ) $(DEJAGNU_SRC_GIT ) $( PREPARATION_STAMP )
975995 rm -rf $@ $(notdir $@ )
976996 mkdir $(notdir $@ )
977997 cd $(notdir $@ ) && $< /configure \
@@ -1101,7 +1121,7 @@ report-binutils-linux: stamps/check-binutils-linux
11011121 ` find build-binutils-linux/ -name * .sum | paste -sd " ," -`
11021122
11031123clean :
1104- rm -rf build-* stamps install-newlib-nano
1124+ rm -rf build-* install- * stamps install-newlib-nano
11051125
11061126.PHONY : report-gdb-newlib report-gdb-newlib-nano
11071127report-gdb-newlib : stamps/check-gdb-newlib
0 commit comments