Browse Source

Split build process for newlib to 2 pass

pull/224/head
Kito Cheng 9 years ago
committed by Palmer Dabbelt
parent
commit
3b00a86e60
  1. 62
      Makefile.in

62
Makefile.in

@ -49,9 +49,11 @@ ASFLAGS_FOR_TARGET := $(ASFLAGS_FOR_TARGET_EXTRA)
GLIBC_TARGET_FLAGS := $(GLIBC_TARGET_FLAGS_EXTRA)
GLIBC_CC_FOR_TARGET ?= riscv$(XLEN)-unknown-linux-gnu-gcc
GLIBC_CXX_FOR_TARGET ?= riscv$(XLEN)-unknown-linux-gnu-g++
NEWLIB_CC_FOR_TARGET ?= riscv$(XLEN)-unknown-elf-gcc
NEWLIB_CXX_FOR_TARGET ?= riscv$(XLEN)-unknown-elf-g++
all: @default_target@
newlib: stamps/build-gcc-newlib
newlib: stamps/build-gcc-newlib-stage2
linux: stamps/build-gcc-linux-stage2
$(addprefix src/original-,$(PACKAGES)):
@ -204,20 +206,48 @@ stamps/build-binutils-newlib: $(srcdir)/riscv-binutils-gdb
$(MAKE) -C $(notdir $@) install
mkdir -p $(dir $@) && touch $@
src/newlib-gcc: $(srcdir)/riscv-gcc
rm -rf $@ $@.tmp
mkdir -p $(dir $@)
cp -a $< $@.tmp
cp -a $(srcdir)/riscv-newlib/. $@.tmp
cp -a $</include/. $@.tmp/include
mv $@.tmp $@
stamps/build-gcc-newlib-stage1: $(srcdir)/riscv-gcc stamps/build-binutils-newlib
rm -rf $@ $(notdir $@)
mkdir $(notdir $@)
cd $(notdir $@) && $</configure \
--target=riscv$(XLEN)-unknown-elf \
--prefix=$(INSTALL_DIR) \
--disable-shared \
--disable-threads \
--disable-tls \
--enable-languages=c,c++ \
--with-system-zlib \
--with-newlib \
--disable-libmudflap \
--disable-libssp \
--disable-libquadmath \
--disable-libgomp \
--disable-nls \
$(GCC_CHECKING_FLAGS) \
$(MULTILIB_FLAGS) \
$(WITH_ABI) \
$(WITH_ARCH)
$(MAKE) -C $(notdir $@) all-gcc
$(MAKE) -C $(notdir $@) install-gcc
mkdir -p $(dir $@) && touch $@
# For some reason, newlib builds a "default" library set even when
# multilibs are enabled. Purge it after completing a multilib build.
stamps/build-gcc-newlib: src/newlib-gcc stamps/build-binutils-newlib
stamps/build-newlib: $(srcdir)/riscv-newlib stamps/build-gcc-newlib-stage1
rm -rf $@ $(notdir $@)
mkdir $(notdir $@)
cd $(notdir $@) && $(CURDIR)/$</configure \
cd $(notdir $@) && $</configure \
--target=riscv$(XLEN)-unknown-elf \
--prefix=$(INSTALL_DIR) \
--enable-newlib-io-long-double \
--enable-newlib-io-long-long \
--enable-newlib-io-c99-formats
$(MAKE) -C $(notdir $@)
$(MAKE) -C $(notdir $@) install
mkdir -p $(dir $@) && touch $@
stamps/build-gcc-newlib-stage2: $(srcdir)/riscv-gcc stamps/build-newlib
rm -rf $@ $(notdir $@)
mkdir $(notdir $@)
cd $(notdir $@) && $</configure \
--target=riscv$(XLEN)-unknown-elf \
--prefix=$(INSTALL_DIR) \
--without-headers \
@ -227,6 +257,7 @@ stamps/build-gcc-newlib: src/newlib-gcc stamps/build-binutils-newlib
--with-system-zlib \
--enable-tls \
--with-newlib \
--with-headers=$(INSTALL_DIR)/include \
--disable-libmudflap \
--disable-libssp \
--disable-libquadmath \
@ -236,17 +267,16 @@ stamps/build-gcc-newlib: src/newlib-gcc stamps/build-binutils-newlib
$(MULTILIB_FLAGS) \
$(WITH_ABI) \
$(WITH_ARCH)
$(MAKE) -C $(notdir $@) inhibit-libc=true
$(MAKE) -C $(notdir $@)
$(MAKE) -C $(notdir $@) install
$(if $(findstring enable,$(MULTILIB_FLAGS)),rm -f $(INSTALL_DIR)/riscv$(XLEN)-unknown-elf/lib/*.*,)
mkdir -p $(dir $@) && touch $@
.PHONY: check-gcc-newlib
check-gcc-newlib: stamps/build-gcc-newlib
check-gcc-newlib: stamps/build-gcc-newlib-stage2
export PATH=$(srcdir)/scripts/wrapper/qemu:$(INSTALL_DIR)/bin:$(PATH) && \
export DEJAGNULIBS=$(srcdir)/riscv-dejagnu && \
export RISC_V_SYSROOT=$(SYSROOT) && \
cd build-gcc-newlib && \
cd build-gcc-newlib-stage2 && \
$(MAKE) check-gcc "RUNTESTFLAGS=--target_board=riscv-sim"
check-gcc-linux: stamps/build-gcc-linux-stage2

Loading…
Cancel
Save