srcdir := /home/seti/riscv-gnu-toolchain builddir := /home/seti/riscv-gnu-toolchain INSTALL_DIR := /opt/riscv GCC_SRCDIR := $(srcdir)/gcc BINUTILS_SRCDIR := $(srcdir)/binutils NEWLIB_SRCDIR := $(srcdir)/newlib GLIBC_SRCDIR := $(srcdir)/glibc MUSL_SRCDIR := $(srcdir)/musl LINUX_HEADERS_SRCDIR := $(srcdir)/linux-headers/include GDB_SRCDIR := $(srcdir)/gdb QEMU_SRCDIR := $(srcdir)/qemu SPIKE_SRCDIR := $(srcdir)/spike PK_SRCDIR := $(srcdir)/pk SIM ?= qemu ifeq ($(srcdir)/riscv-gcc,$(GCC_SRCDIR)) # We need a relative source dir for the gcc configure, to make msys2 mingw64 # builds work. Mayberelsrcdir is relative if a relative path was used to run # configure, otherwise absolute, so we have to check. mayberelsrcdir := . gccsrcdir := $(shell case $(mayberelsrcdir) in \ ([\\/]* | ?:[\\/]*) echo $(mayberelsrcdir)/riscv-gcc ;; \ (*) echo ../$(mayberelsrcdir)/riscv-gcc ;; \ esac) else gccsrcdir := $(abspath $(GCC_SRCDIR)) endif WITH_ARCH ?= --with-arch=rv32imc WITH_ABI ?= --with-abi=ilp32 WITH_TUNE ?= --with-tune=rocket WITH_ISA_SPEC ?= --with-isa-spec=2.2 SYSROOT := $(INSTALL_DIR)/sysroot ENABLE_LIBSANITIZER ?= --disable-libsanitizer QEMU_TARGETS ?= riscv64-linux-user,riscv32-linux-user SHELL := /bin/sh AWK := /usr/bin/gawk SED := /usr/bin/sed PATH := $(INSTALL_DIR)/bin:$(PATH) # Check to see if we need wrapper scripts for awk/sed (which point to # gawk/gsed on platforms where these aren't the default), otherwise # don't override these as the wrappers don't always work. ifneq (/usr/bin/sed,/bin/sed) PATH := $(builddir)/scripts/wrapper/sed:$(PATH) endif ifneq (/usr/bin/gawk,/usr/bin/gawk) PATH := $(builddir)/scripts/wrapper/awk:$(PATH) endif export PATH AWK SED MULTILIB_FLAGS := --disable-multilib MULTILIB_GEN := ifeq ($(MULTILIB_GEN),) NEWLIB_MULTILIB_NAMES := rv32imc-ilp32 GCC_MULTILIB_FLAGS := $(MULTILIB_FLAGS) else NEWLIB_MULTILIB_NAMES := $(shell echo "$(MULTILIB_GEN)" | $(SED) 's/;/\n/g'| $(AWK) '{split($$0,a,"-"); printf "%s-%s ", a[1],a[2]}') GCC_MULTILIB_FLAGS := $(MULTILIB_FLAGS) --with-multilib-generator="$(MULTILIB_GEN)" endif GLIBC_MULTILIB_NAMES := rv32imc-ilp32 GCC_CHECKING_FLAGS := XLEN := $(shell echo $(WITH_ARCH) | tr A-Z a-z | sed 's/.*rv\([0-9]*\).*/\1/') ifneq ($(XLEN),32) XLEN := 64 endif make_tuple = riscv$(1)-unknown-$(2) LINUX_TUPLE ?= $(call make_tuple,$(XLEN),linux-gnu) NEWLIB_TUPLE ?= $(call make_tuple,$(XLEN),elf) MUSL_TUPLE ?= $(call make_tuple,$(XLEN),linux-musl) CFLAGS_FOR_TARGET := $(CFLAGS_FOR_TARGET_EXTRA) -mcmodel=medlow CXXFLAGS_FOR_TARGET := $(CXXFLAGS_FOR_TARGET_EXTRA) -mcmodel=medlow ASFLAGS_FOR_TARGET := $(ASFLAGS_FOR_TARGET_EXTRA) -mcmodel=medlow # --with-expat is required to enable XML support used by OpenOCD. BINUTILS_TARGET_FLAGS := --with-expat=yes $(BINUTILS_TARGET_FLAGS_EXTRA) BINUTILS_NATIVE_FLAGS := $(BINUTILS_NATIVE_FLAGS_EXTRA) GDB_TARGET_FLAGS := --with-expat=yes $(GDB_TARGET_FLAGS_EXTRA) GDB_NATIVE_FLAGS := $(GDB_NATIVE_FLAGS_EXTRA) GLIBC_TARGET_FLAGS := $(GLIBC_TARGET_FLAGS_EXTRA) GLIBC_CC_FOR_TARGET ?= $(LINUX_TUPLE)-gcc GLIBC_CXX_FOR_TARGET ?= $(LINUX_TUPLE)-g++ GLIBC_TARGET_BOARDS ?= $(shell echo "$(GLIBC_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim/-march=\1/-mabi=\2/-mcmodel=medlow!g') NEWLIB_CC_FOR_TARGET ?= $(NEWLIB_TUPLE)-gcc NEWLIB_CXX_FOR_TARGET ?= $(NEWLIB_TUPLE)-g++ NEWLIB_TARGET_BOARDS ?= $(shell echo "$(NEWLIB_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim/-march=\1/-mabi=\2/-mcmodel=medlow!g') NEWLIB_NANO_TARGET_BOARDS ?= $(shell echo "$(NEWLIB_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim-nano/-march=\1/-mabi=\2/-mcmodel=medlow!g') MUSL_TARGET_FLAGS := $(MUSL_TARGET_FLAGS_EXTRA) MUSL_CC_FOR_TARGET ?= $(MUSL_TUPLE)-gcc MUSL_CXX_FOR_TARGET ?= $(MUSL_TUPLE)-g++ CONFIGURE_HOST = all: newlib newlib: stamps/build-gcc-newlib-stage2 linux: stamps/build-gcc-linux-stage2 ifneq (,$(findstring riscv32,$(MUSL_TUPLE))) .PHONY: musl musl: @echo "musl only supports 64bit builds." && exit 1 else musl: stamps/build-gcc-musl-stage2 endif ifeq (--enable-gdb,--enable-gdb) newlib: stamps/build-gdb-newlib linux: stamps/build-gdb-linux endif linux-native: stamps/build-gcc-linux-native .PHONY: build-binutils build-gdb build-gcc1 build-libc build-gcc2 build-qemu build-binutils: stamps/build-binutils-newlib build-gdb: stamps/build-gdb-newlib build-gcc%: stamps/build-gcc-newlib-stage% ifeq (newlib,linux) build-libc: $(addprefix stamps/build-glibc-linux-,$(GLIBC_MULTILIB_NAMES)) else build-libc: stamps/build-newlib stamps/build-newlib-nano \ stamps/merge-newlib-nano endif build-qemu: stamps/build-qemu REGRESSION_TEST_LIST = gcc .PHONY: check check: check-newlib .PHONY: check-linux check-newlib check-linux: $(patsubst %,check-%-linux,$(REGRESSION_TEST_LIST)) check-newlib: $(patsubst %,check-%-newlib,$(REGRESSION_TEST_LIST)) check-newlib-nano: $(patsubst %,check-%-newlib-nano,$(REGRESSION_TEST_LIST)) .PHONY: check-gcc check-gcc-linux check-gcc-newlib check-gcc-newlib-nano check-gcc: check-gcc-newlib check-gcc-linux: stamps/check-gcc-linux check-gcc-newlib: stamps/check-gcc-newlib check-gcc-newlib-nano: stamps/check-gcc-newlib-nano .PHONY: check-glibc-linux check-glibc-linux: $(addprefix stamps/check-glibc-linux-,$(GLIBC_MULTILIB_NAMES)) .PHONY: check-dhrystone check-dhrystone-linux check-dhrystone-newlib check-dhrystone: check-dhrystone-newlib .PHONY: check-binutils check-binutils-linux check-binutils-newlib check-binutils: check-binutils-newlib check-binutils-linux: stamps/check-binutils-linux check-binutils-newlib: stamps/check-binutils-newlib check-binutils-newlib-nano: stamps/check-binutils-newlib-nano .PHONY: check-gdb check-gdb-linux check-gdb-newlib check-gdb: check-gdb-newlib check-gdb-linux: stamps/check-gdb-linux check-gdb-newlib: stamps/check-gdb-newlib check-gdb-newlib-nano: stamps/check-gdb-newlib-nano .PHONY: report report: report-newlib .PHONY: report-linux report-newlib report-newlib-nano report-linux: $(patsubst %,report-%-linux,$(REGRESSION_TEST_LIST)) report-newlib: $(patsubst %,report-%-newlib,$(REGRESSION_TEST_LIST)) report-newlib-nano: $(patsubst %,report-%-newlib-nano,$(REGRESSION_TEST_LIST)) .PHONY: report-gcc report-gcc: report-gcc-newlib .PHONY: report-dhrystone report-dhrystone: report-dhrystone-newlib .PHONY: report-binutils report-binutils: report-binutils-newlib .PHONY: report-gdb report-gdb: report-gdb-newlib .PHONY: build-sim ifeq ($(SIM),qemu) QEMU_CPU=$(shell $(srcdir)/scripts/march-to-cpu-opt $(WITH_ARCH)) SIM_PATH:=$(srcdir)/scripts/wrapper/qemu SIM_PREPARE:=PATH="$(SIM_PATH):$(INSTALL_DIR)/bin:$(PATH)" RISC_V_SYSROOT="$(SYSROOT)" QEMU_CPU="$(QEMU_CPU)" SIM_STAMP:= stamps/build-qemu else ifeq ($(SIM),spike) # Using spike simulator. SIM_PATH:=$(srcdir)/scripts/wrapper/spike SIM_PREPARE:=PATH="$(SIM_PATH):$(INSTALL_DIR)/bin:$(PATH)" PK_PATH="$(INSTALL_DIR)/$(NEWLIB_TUPLE)/bin/" ARCH_STR="$(WITH_ARCH)" SIM_STAMP:= stamps/build-spike ifneq (,$(findstring rv32,$(NEWLIB_MULTILIB_NAMES))) SIM_STAMP+= stamps/build-pk32 endif ifneq (,$(findstring rv64,$(NEWLIB_MULTILIB_NAMES))) SIM_STAMP+= stamps/build-pk64 endif else ifeq ($(SIM),gdb) # Using gdb simulator. SIM_PATH:=$(INSTALL_DIR)/bin SIM_PREPARE:= else $(error "Only support SIM=spike, SIM=gdb or SIM=qemu (default).") endif endif endif build-sim: $(SIM_STAMP) stamps/check-write-permission: mkdir -p $(INSTALL_DIR)/.test || \ (echo "Sorry, you don't have permission to write to" \ "'$(INSTALL_DIR)'. Please make sure that the location is " \ "writable or use --prefix to specify another destination.'" \ && exit 1) rm -r $(INSTALL_DIR)/.test mkdir -p $(dir $@) && touch $@ stamps/build-linux-headers: mkdir -p $(SYSROOT)/usr/ ifdef LINUX_HEADERS_SRCDIR cp -a $(LINUX_HEADERS_SRCDIR) $(SYSROOT)/usr/ else cp -a $(srcdir)/linux-headers/include $(SYSROOT)/usr/ endif mkdir -p $(dir $@) && touch $@ # # Rule for auto init submodules # ifeq ($(findstring $(srcdir),$(GCC_SRCDIR)),$(srcdir)) GCC_SRC_GIT := $(GCC_SRCDIR)/.git else GCC_SRC_GIT := endif ifeq ($(findstring $(srcdir),$(BINUTILS_SRCDIR)),$(srcdir)) BINUTILS_SRC_GIT := $(BINUTILS_SRCDIR)/.git else BINUTILS_SRC_GIT := endif ifeq ($(findstring $(srcdir),$(GDB_SRCDIR)),$(srcdir)) GDB_SRC_GIT := $(GDB_SRCDIR)/.git else GDB_SRC_GIT := endif ifeq ($(findstring $(srcdir),$(NEWLIB_SRCDIR)),$(srcdir)) NEWLIB_SRC_GIT := $(NEWLIB_SRCDIR)/.git else NEWLIB_SRC_GIT := endif ifeq ($(findstring $(srcdir),$(GLIBC_SRCDIR)),$(srcdir)) GLIBC_SRC_GIT := $(GLIBC_SRCDIR)/.git else GLIBC_SRC_GIT := endif ifeq ($(findstring $(srcdir),$(MUSL_SRCDIR)),$(srcdir)) MUSL_SRC_GIT := $(MUSL_SRCDIR)/.git else MUSL_SRC_GIT := endif ifeq ($(findstring $(srcdir),$(QEMU_SRCDIR)),$(srcdir)) QEMU_SRC_GIT := $(QEMU_SRCDIR)/.git else QEMU_SRC_GIT := endif ifeq ($(findstring $(srcdir),$(SPIKE_SRCDIR)),$(srcdir)) SPIKE_SRC_GIT := $(SPIKE_SRCDIR)/.git else SPIKE_SRC_GIT := endif ifneq ("$(wildcard $(GCC_SRCDIR)/.git)","") GCCPKGVER := g$(shell git -C $(GCC_SRCDIR) describe --always --dirty --exclude '*') else GCCPKGVER := endif $(srcdir)/%/.git: cd $(srcdir) && \ flock `git rev-parse --git-dir`/config git submodule init $(dir $@) && \ flock `git rev-parse --git-dir`/config git submodule update $(dir $@) # # GLIBC # stamps/build-binutils-linux: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) stamps/check-write-permission rm -rf $@ $(notdir $@) mkdir $(notdir $@) # CC_FOR_TARGET is required for the ld testsuite. cd $(notdir $@) && CC_FOR_TARGET=$(GLIBC_CC_FOR_TARGET) $</configure \ --target=$(LINUX_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ --with-sysroot=$(SYSROOT) \ $(MULTILIB_FLAGS) \ \ --disable-werror \ --disable-nls \ $(BINUTILS_TARGET_FLAGS) \ --disable-gdb \ --disable-sim \ --disable-libdecnumber \ --disable-readline \ $(WITH_ISA_SPEC) $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ stamps/build-gdb-linux: $(GDB_SRCDIR) $(GDB_SRC_GIT) rm -rf $@ $(notdir $@) mkdir $(notdir $@) # CC_FOR_TARGET is required for the ld testsuite. cd $(notdir $@) && CC_FOR_TARGET=$(GLIBC_CC_FOR_TARGET) $</configure \ --target=$(LINUX_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ --with-sysroot=$(SYSROOT) \ $(MULTILIB_FLAGS) \ \ --disable-werror \ --disable-nls \ $(GDB_TARGET_FLAGS) \ --enable-gdb \ --disable-gas \ --disable-binutils \ --disable-ld \ --disable-gold \ --disable-gprof $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ stamps/build-glibc-linux-headers: $(GLIBC_SRCDIR) $(GLIBC_SRC_GIT) stamps/build-gcc-linux-stage1 rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && CC="$(GLIBC_CC_FOR_TARGET)" $</configure \ --host=$(LINUX_TUPLE) \ --prefix=$(SYSROOT)/usr \ --enable-shared \ --with-headers=$(LINUX_HEADERS_SRCDIR) \ --disable-multilib \ --enable-kernel=3.0.0 $(MAKE) -C $(notdir $@) install-headers mkdir -p $(dir $@) && touch $@ stamps/build-glibc-linux-%: $(GLIBC_SRCDIR) $(GLIBC_SRC_GIT) stamps/build-gcc-linux-stage1 ifeq ($(MULTILIB_FLAGS),--enable-multilib) $(eval $@_ARCH := $(word 4,$(subst -, ,$@))) $(eval $@_ABI := $(word 5,$(subst -, ,$@))) else $(eval $@_ARCH := ) $(eval $@_ABI := ) endif $(eval $@_LIBDIRSUFFIX := $(if $($@_ABI),$(shell echo $($@_ARCH) | sed 's/.*rv\([0-9]*\).*/\1/')/$($@_ABI),)) $(eval $@_XLEN := $(if $($@_ABI),$(shell echo $($@_ARCH) | sed 's/.*rv\([0-9]*\).*/\1/'),$(XLEN))) $(eval $@_CFLAGS := $(if $($@_ABI),-march=$($@_ARCH) -mabi=$($@_ABI),)) $(eval $@_LIBDIROPTS := $(if $@_LIBDIRSUFFIX,--libdir=/usr/lib$($@_LIBDIRSUFFIX) libc_cv_slibdir=/lib$($@_LIBDIRSUFFIX) libc_cv_rtlddir=/lib,)) rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && \ CC="$(GLIBC_CC_FOR_TARGET) $($@_CFLAGS)" \ CXX="this-is-not-the-compiler-youre-looking-for" \ CFLAGS="$(CFLAGS_FOR_TARGET) -g -O2 $($@_CFLAGS)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET) -g -O2 $($@_CFLAGS)" \ ASFLAGS="$(ASFLAGS_FOR_TARGET) $($@_CFLAGS)" \ $</configure \ --host=$(call make_tuple,$($@_XLEN),linux-gnu) \ --prefix=/usr \ --disable-werror \ --enable-shared \ --enable-obsolete-rpc \ --with-headers=$(LINUX_HEADERS_SRCDIR) \ $(MULTILIB_FLAGS) \ --enable-kernel=3.0.0 \ $(GLIBC_TARGET_FLAGS) \ $($@_LIBDIROPTS) $(MAKE) -C $(notdir $@) +flock $(SYSROOT)/.lock $(MAKE) -C $(notdir $@) install install_root=$(SYSROOT) mkdir -p $(dir $@) && touch $@ stamps/build-gcc-linux-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils-linux \ stamps/build-linux-headers if test -f $</contrib/download_prerequisites && test "false" = "true"; then cd $< && ./contrib/download_prerequisites; fi rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --target=$(LINUX_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ --with-sysroot=$(SYSROOT) \ --with-newlib \ --without-headers \ --disable-shared \ --disable-threads \ --with-system-zlib \ --enable-tls \ --enable-languages=c \ --disable-libatomic \ --disable-libmudflap \ --disable-libssp \ --disable-libquadmath \ --disable-libgomp \ --disable-nls \ --disable-bootstrap \ --src=$(gccsrcdir) \ $(GCC_CHECKING_FLAGS) \ $(MULTILIB_FLAGS) \ $(WITH_ABI) \ $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc $(MAKE) -C $(notdir $@) inhibit-libc=true install-gcc $(MAKE) -C $(notdir $@) inhibit-libc=true all-target-libgcc $(MAKE) -C $(notdir $@) inhibit-libc=true install-target-libgcc mkdir -p $(dir $@) && touch $@ stamps/build-gcc-linux-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) $(addprefix stamps/build-glibc-linux-,$(GLIBC_MULTILIB_NAMES)) \ stamps/build-glibc-linux-headers rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --target=$(LINUX_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ --with-sysroot=$(SYSROOT) \ --with-pkgversion="$(GCCPKGVER)" \ --with-system-zlib \ --enable-shared \ --enable-tls \ --enable-languages=c,c++,fortran \ --disable-libmudflap \ --disable-libssp \ --disable-libquadmath \ $(ENABLE_LIBSANITIZER) \ --disable-nls \ --disable-bootstrap \ --src=$(gccsrcdir) \ $(GCC_CHECKING_FLAGS) \ $(MULTILIB_FLAGS) \ $(WITH_ABI) \ $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install cp -a $(INSTALL_DIR)/$(LINUX_TUPLE)/lib* $(SYSROOT) mkdir -p $(dir $@) && touch $@ stamps/build-binutils-linux-native: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) stamps/build-gcc-linux-stage2 stamps/check-write-permission rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --host=$(LINUX_TUPLE) \ --target=$(LINUX_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR)/native \ $(MULTILIB_FLAGS) \ \ --disable-werror \ --disable-nls \ $(BINUTILS_NATIVE_FLAGS) \ --disable-gdb \ --disable-sim \ --disable-libdecnumber \ --disable-readline \ $(WITH_ISA_SPEC) $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ stamps/build-gcc-linux-native: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-gcc-linux-stage2 stamps/build-binutils-linux-native if test -f $</contrib/download_prerequisites; then cd $< && ./contrib/download_prerequisites; fi rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --host=$(LINUX_TUPLE) \ --target=$(LINUX_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR)/native \ --without-system-zlib \ --enable-shared \ --enable-tls \ --enable-languages=c,c++,fortran \ --disable-libmudflap \ --disable-libssp \ --disable-libquadmath \ --disable-nls \ --disable-bootstrap \ --with-native-system-header-dir=$(INSTALL_DIR)/native/include \ $(GCC_CHECKING_FLAGS) \ $(MULTILIB_FLAGS) \ $(WITH_ABI) \ $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install cp -a $(INSTALL_DIR)/$(LINUX_TUPLE)/lib* $(SYSROOT) mkdir -p $(dir $@) && touch $@ # # NEWLIB # stamps/build-binutils-newlib: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) stamps/check-write-permission rm -rf $@ $(notdir $@) mkdir $(notdir $@) # CC_FOR_TARGET is required for the ld testsuite. cd $(notdir $@) && CC_FOR_TARGET=$(NEWLIB_CC_FOR_TARGET) $</configure \ --target=$(NEWLIB_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ \ --disable-werror \ $(BINUTILS_TARGET_FLAGS) \ --disable-gdb \ --disable-sim \ --disable-libdecnumber \ --disable-readline \ $(WITH_ISA_SPEC) $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ stamps/build-gdb-newlib: $(GDB_SRCDIR) $(GDB_SRC_GIT) rm -rf $@ $(notdir $@) mkdir $(notdir $@) # CC_FOR_TARGET is required for the ld testsuite. cd $(notdir $@) && CC_FOR_TARGET=$(NEWLIB_CC_FOR_TARGET) $</configure \ --target=$(NEWLIB_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ \ --disable-werror \ $(GDB_TARGET_FLAGS) \ --enable-gdb \ --disable-gas \ --disable-binutils \ --disable-ld \ --disable-gold \ --disable-gprof $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ stamps/build-gcc-newlib-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils-newlib if test -f $</contrib/download_prerequisites && test "false" = "true"; then cd $< && ./contrib/download_prerequisites; fi rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --target=$(NEWLIB_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ --disable-shared \ --disable-threads \ --disable-tls \ --enable-languages=c,c++ \ --with-system-zlib \ --with-newlib \ --with-sysroot=$(INSTALL_DIR)/$(NEWLIB_TUPLE) \ --disable-libmudflap \ --disable-libssp \ --disable-libquadmath \ --disable-libgomp \ --disable-nls \ --disable-tm-clone-registry \ --src=$(gccsrcdir) \ $(GCC_CHECKING_FLAGS) \ $(GCC_MULTILIB_FLAGS) \ $(WITH_ABI) \ $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ CFLAGS_FOR_TARGET="-Os $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-Os $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) all-gcc $(MAKE) -C $(notdir $@) install-gcc mkdir -p $(dir $@) && touch $@ stamps/build-newlib: $(NEWLIB_SRCDIR) $(NEWLIB_SRC_GIT) stamps/build-gcc-newlib-stage1 rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --target=$(NEWLIB_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ --enable-newlib-io-long-double \ --enable-newlib-io-long-long \ --enable-newlib-io-c99-formats \ --enable-newlib-register-fini \ CFLAGS_FOR_TARGET="-O2 -D_POSIX_MODE -ffunction-sections -fdata-sections $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 -D_POSIX_MODE -ffunction-sections -fdata-sections $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ stamps/build-newlib-nano: $(NEWLIB_SRCDIR) $(NEWLIB_SRC_GIT) stamps/build-gcc-newlib-stage1 rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --target=$(NEWLIB_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(builddir)/install-newlib-nano \ --enable-newlib-reent-small \ --disable-newlib-fvwrite-in-streamio \ --disable-newlib-fseek-optimization \ --disable-newlib-wide-orient \ --enable-newlib-nano-malloc \ --disable-newlib-unbuf-stream-opt \ --enable-lite-exit \ --enable-newlib-global-atexit \ --enable-newlib-nano-formatted-io \ --disable-newlib-supplied-syscalls \ --disable-nls \ CFLAGS_FOR_TARGET="-Os -ffunction-sections -fdata-sections $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-Os -ffunction-sections -fdata-sections $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ stamps/merge-newlib-nano: stamps/build-newlib-nano stamps/build-newlib # Copy nano library files into newlib install dir. set -e; \ for ml in `$(INSTALL_DIR)/bin/$(NEWLIB_TUPLE)-gcc --print-multi-lib`; \ do \ mld=`echo $${ml} | sed -e 's/;.*$$//'`; \ cp $(builddir)/install-newlib-nano/$(NEWLIB_TUPLE)/lib/$${mld}/libc.a \ $(INSTALL_DIR)/$(NEWLIB_TUPLE)/lib/$${mld}/libc_nano.a; \ cp $(builddir)/install-newlib-nano/$(NEWLIB_TUPLE)/lib/$${mld}/libm.a \ $(INSTALL_DIR)/$(NEWLIB_TUPLE)/lib/$${mld}/libm_nano.a; \ cp $(builddir)/install-newlib-nano/$(NEWLIB_TUPLE)/lib/$${mld}/libg.a \ $(INSTALL_DIR)/$(NEWLIB_TUPLE)/lib/$${mld}/libg_nano.a; \ cp $(builddir)/install-newlib-nano/$(NEWLIB_TUPLE)/lib/$${mld}/libgloss.a\ $(INSTALL_DIR)/$(NEWLIB_TUPLE)/lib/$${mld}/libgloss_nano.a; \ cp $(builddir)/install-newlib-nano/$(NEWLIB_TUPLE)/lib/$${mld}/crt0.o\ $(INSTALL_DIR)/$(NEWLIB_TUPLE)/lib/$${mld}/crt0.o; \ done # Copy nano header files into newlib install dir. mkdir -p $(INSTALL_DIR)/$(NEWLIB_TUPLE)/include/newlib-nano; \ cp $(builddir)/install-newlib-nano/$(NEWLIB_TUPLE)/include/newlib.h \ $(INSTALL_DIR)/$(NEWLIB_TUPLE)/include/newlib-nano/newlib.h; \ mkdir -p $(dir $@) && touch $@ stamps/build-gcc-newlib-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-newlib \ stamps/merge-newlib-nano rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --target=$(NEWLIB_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ --disable-shared \ --disable-threads \ --enable-languages=c,c++ \ --with-pkgversion="$(GCCPKGVER)" \ --with-system-zlib \ --enable-tls \ --with-newlib \ --with-sysroot=$(INSTALL_DIR)/$(NEWLIB_TUPLE) \ --with-native-system-header-dir=/include \ --disable-libmudflap \ --disable-libssp \ --disable-libquadmath \ --disable-libgomp \ --disable-nls \ --disable-tm-clone-registry \ --src=$(gccsrcdir) \ $(GCC_CHECKING_FLAGS) \ $(GCC_MULTILIB_FLAGS) \ $(WITH_ABI) \ $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ CFLAGS_FOR_TARGET="-Os $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-Os $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ # # MUSL # stamps/build-binutils-musl: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) stamps/check-write-permission rm -rf $@ $(notdir $@) mkdir $(notdir $@) # CC_FOR_TARGET is required for the ld testsuite. cd $(notdir $@) && CC_FOR_TARGET=$(MUSL_CC_FOR_TARGET) $</configure \ --target=$(MUSL_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ --with-sysroot=$(SYSROOT) \ $(MULTILIB_FLAGS) \ \ --disable-werror \ --disable-nls \ $(BINUTILS_TARGET_FLAGS) \ --disable-gdb \ --disable-sim \ --disable-libdecnumber \ --disable-readline \ $(WITH_ISA_SPEC) $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ stamps/build-gcc-musl-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils-musl \ stamps/build-linux-headers if test -f $</contrib/download_prerequisites && test "false" = "true"; then cd $< && ./contrib/download_prerequisites; fi rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --target=$(MUSL_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ --without-headers \ --disable-shared \ --disable-threads \ --with-system-zlib \ --enable-tls \ --enable-languages=c \ --disable-libatomic \ --disable-libmudflap \ --disable-libssp \ --disable-libquadmath \ --disable-libgomp \ --disable-nls \ --disable-bootstrap \ --src=$(gccsrcdir) \ $(GCC_CHECKING_FLAGS) \ --disable-multilib \ $(WITH_ABI) \ $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) inhibit-libc=true all-gcc $(MAKE) -C $(notdir $@) inhibit-libc=true install-gcc $(MAKE) -C $(notdir $@) inhibit-libc=true all-target-libgcc $(MAKE) -C $(notdir $@) inhibit-libc=true install-target-libgcc mkdir -p $(dir $@) && touch $@ stamps/build-musl-linux-headers: $(MUSL_SRCDIR) $(MUSL_SRC_GIT) stamps/build-gcc-musl-stage1 rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && CC="$(MUSL_CC_FOR_TARGET)" $</configure \ --host=$(MUSL_TUPLE) \ --prefix=$(SYSROOT)/usr \ --enable-shared \ --with-headers=$(LINUX_HEADERS_SRCDIR) \ --disable-multilib \ --enable-kernel=3.0.0 $(MAKE) -C $(notdir $@) install-headers mkdir -p $(dir $@) && touch $@ stamps/build-musl-linux: $(MUSL_SRCDIR) $(MUSL_SRC_GIT) stamps/build-gcc-musl-stage1 rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && \ CC="$(MUSL_CC_FOR_TARGET) $($@_CFLAGS)" \ CXX="$(MUSL_CXX_FOR_TARGET) $($@_CFLAGS)" \ CFLAGS="$(CFLAGS_FOR_TARGET) -g -O2 $($@_CFLAGS)" \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET) -g -O2 $($@_CFLAGS)" \ ASFLAGS="$(ASFLAGS_FOR_TARGET) $($@_CFLAGS)" \ $</configure \ --host=$(MUSL_TUPLE) \ --prefix=$(SYSROOT) \ --disable-werror \ --enable-shared \ $(MUSL_TARGET_FLAGS) $(MAKE) -C $(notdir $@) +flock $(SYSROOT)/.lock $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) && touch $@ stamps/build-gcc-musl-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-musl-linux \ stamps/build-musl-linux-headers rm -rf $@ $(notdir $@) mkdir $(notdir $@) # Disable libsanitizer for now # https://github.com/google/sanitizers/issues/1080 cd $(notdir $@) && $</configure \ --target=$(MUSL_TUPLE) \ $(CONFIGURE_HOST) \ --prefix=$(INSTALL_DIR) \ --with-sysroot=$(SYSROOT) \ --with-system-zlib \ --enable-shared \ --enable-tls \ --enable-languages=c,c++ \ --disable-libmudflap \ --disable-libssp \ --disable-libquadmath \ --disable-libsanitizer \ --disable-nls \ --disable-bootstrap \ --src=$(gccsrcdir) \ $(GCC_CHECKING_FLAGS) \ --disable-multilib \ $(WITH_ABI) \ $(WITH_ARCH) \ $(WITH_TUNE) \ $(WITH_ISA_SPEC) \ CFLAGS_FOR_TARGET="-O2 $(CFLAGS_FOR_TARGET)" \ CXXFLAGS_FOR_TARGET="-O2 $(CXXFLAGS_FOR_TARGET)" $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install cp -a $(INSTALL_DIR)/$(MUSL_TUPLE)/lib* $(SYSROOT) mkdir -p $(dir $@) && touch $@ stamps/build-spike: $(SPIKE_SRCDIR) $(SPIKE_SRC_GIT) rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --prefix=$(INSTALL_DIR) $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) date > $@ stamps/build-pk32: $(PK_SRCDIR) stamps/build-gcc-newlib-stage2 rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --prefix=$(INSTALL_DIR) \ --host=$(NEWLIB_TUPLE) \ --with-arch=rv32imafdc \ --with-abi=ilp32f $(MAKE) -C $(notdir $@) cp $(notdir $@)/pk $(INSTALL_DIR)/$(NEWLIB_TUPLE)/bin/pk32 mkdir -p $(dir $@) date > $@ stamps/build-pk64: $(PK_SRCDIR) stamps/build-gcc-newlib-stage2 rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --prefix=$(INSTALL_DIR) \ --host=$(NEWLIB_TUPLE) \ --with-arch=rv64gc $(MAKE) -C $(notdir $@) cp $(notdir $@)/pk $(INSTALL_DIR)/$(NEWLIB_TUPLE)/bin/pk64 mkdir -p $(dir $@) date > $@ stamps/build-qemu: $(QEMU_SRCDIR) $(QEMU_SRC_GIT) rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --prefix=$(INSTALL_DIR) \ --target-list=$(QEMU_TARGETS) \ --interp-prefix=$(INSTALL_DIR)/sysroot \ --python=python3 $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) date > $@ stamps/build-dejagnu: $(srcdir)/dejagnu $(srcdir)/dejagnu/.git rm -rf $@ $(notdir $@) mkdir $(notdir $@) cd $(notdir $@) && $</configure \ --prefix=$(INSTALL_DIR) $(MAKE) -C $(notdir $@) $(MAKE) -C $(notdir $@) install mkdir -p $(dir $@) date > $@ stamps/check-gcc-newlib: stamps/build-gcc-newlib-stage2 $(SIM_STAMP) stamps/build-dejagnu $(SIM_PREPARE) $(MAKE) -C build-gcc-newlib-stage2 check-gcc "RUNTESTFLAGS=$(RUNTESTFLAGS) --target_board='$(NEWLIB_TARGET_BOARDS)'" mkdir -p $(dir $@) date > $@ stamps/check-gcc-newlib-nano: stamps/build-gcc-newlib-stage2 $(SIM_STAMP) stamps/build-dejagnu $(SIM_PREPARE) $(MAKE) -C build-gcc-newlib-stage2 check-gcc "RUNTESTFLAGS=$(RUNTESTFLAGS) --target_board='$(NEWLIB_NANO_TARGET_BOARDS)'" mkdir -p $(dir $@) date > $@ stamps/check-gcc-linux: stamps/build-gcc-linux-stage2 $(SIM_STAMP) stamps/build-dejagnu $(SIM_PREPARE) $(MAKE) -C build-gcc-linux-stage2 check-gcc "RUNTESTFLAGS=$(RUNTESTFLAGS) --target_board='$(GLIBC_TARGET_BOARDS)'" mkdir -p $(dir $@) date > $@ stamps/check-glibc-linux-%: $(addprefix stamps/build-glibc-linux-,$(GLIBC_MULTILIB_NAMES)) $(eval $@_BUILD_DIR := $(notdir $@)) $(eval $@_BUILD_DIR := $(subst check-,build-,$($@_BUILD_DIR))) $(SIM_PREPARE) $(MAKE) -C $($@_BUILD_DIR) check mkdir -p $(dir $@) date > $@ .PHONY: check-dhrystone-newlib check-dhrystone-newlib-nano check-dhrystone-newlib: $(patsubst %,stamps/check-dhrystone-newlib-%,$(NEWLIB_MULTILIB_NAMES)) check-dhrystone-newlib-nano: $(patsubst %,stamps/check-dhrystone-newlib-nano-%,$(NEWLIB_MULTILIB_NAMES)) stamps/check-dhrystone-newlib-%: \ stamps/build-gcc-newlib-stage2 \ $(SIM_STAMP) \ $(wildcard $(srcdir)/test/benchmarks/dhrystone/*) $(eval $@_ARCH := $(word 4,$(subst -, ,$@))) $(eval $@_ABI := $(word 5,$(subst -, ,$@))) $(eval $@_XLEN := $(patsubst rv32%,32,$(patsubst rv64%,64,$($@_ARCH)))) $(SIM_PREPARE) $(srcdir)/test/benchmarks/dhrystone/check -march=$($@_ARCH) -mabi=$($@_ABI) -cc=riscv$(XLEN)-unknown-elf-gcc -objdump=riscv$(XLEN)-unknown-elf-objdump -sim=riscv$($@_XLEN)-unknown-elf-run -out=$@ $(filter %.c,$^) || true stamps/check-dhrystone-newlib-nano-%: \ stamps/build-gcc-newlib-stage2 \ $(SIM_STAMP) \ $(wildcard $(srcdir)/test/benchmarks/dhrystone/*) $(eval $@_ARCH := $(word 5,$(subst -, ,$@))) $(eval $@_ABI := $(word 6,$(subst -, ,$@))) $(eval $@_XLEN := $(patsubst rv32%,32,$(patsubst rv64%,64,$($@_ARCH)))) $(SIM_PREPARE) $(srcdir)/test/benchmarks/dhrystone/check -march=$($@_ARCH) -mabi=$($@_ABI) -specs=nano.specs -cc=riscv$(XLEN)-unknown-elf-gcc -objdump=riscv$(XLEN)-unknown-elf-objdump -sim=riscv$($@_XLEN)-unknown-elf-run -out=$@ $(filter %.c,$^) || true .PHONY: check-dhrystone-linux check-dhrystone-linux: $(patsubst %,stamps/check-dhrystone-linux-%,$(GLIBC_MULTILIB_NAMES)) stamps/check-dhrystone-linux-%: \ stamps/build-gcc-linux-stage2 \ $(SIM_STAMP) \ $(wildcard $(srcdir)/test/benchmarks/dhrystone/*) $(eval $@_ARCH := $(word 4,$(subst -, ,$@))) $(eval $@_ABI := $(word 5,$(subst -, ,$@))) $(eval $@_XLEN := $(patsubst rv32%,32,$(patsubst rv64%,64,$($@_ARCH)))) $(SIM_PREPARE) $(srcdir)/test/benchmarks/dhrystone/check -march=$($@_ARCH) -mabi=$($@_ABI) -cc=riscv$(XLEN)-unknown-elf-gcc -objdump=riscv$(XLEN)-unknown-elf-objdump -sim=riscv$($@_XLEN)-unknown-elf-run -out=$@ $(filter %.c,$^) || true stamps/check-binutils-newlib: stamps/build-gcc-newlib-stage2 $(SIM_STAMP) stamps/build-dejagnu $(SIM_PREPARE) $(MAKE) -C build-binutils-newlib check-binutils check-gas check-ld -k "RUNTESTFLAGS=--target_board='$(NEWLIB_TARGET_BOARDS)'" || true date > $@ stamps/check-binutils-newlib-nano: stamps/build-gcc-newlib-stage2 $(SIM_STAMP) stamps/build-dejagnu $(SIM_PREPARE) $(MAKE) -C build-binutils-newlib check-binutils check-gas check-ld -k "RUNTESTFLAGS=--target_board='$(NEWLIB_NANO_TARGET_BOARDS)'" || true date > $@ stamps/check-binutils-linux: stamps/build-gcc-linux-stage2 $(SIM_STAMP) stamps/build-dejagnu $(SIM_PREPARE) $(MAKE) -C build-binutils-linux check-binutils check-gas check-ld -k "RUNTESTFLAGS=--target_board='$(GLIBC_TARGET_BOARDS)'" || true date > $@ stamps/check-gdb-newlib: stamps/build-gcc-newlib-stage2 stamps/build-gdb-newlib $(SIM_STAMP) stamps/build-dejagnu $(SIM_PREPARE) $(MAKE) -C build-gdb-newlib check-gdb -k "RUNTESTFLAGS=--target_board='$(NEWLIB_TARGET_BOARDS)'" || true date > $@ stamps/check-gdb-newlib-nano: stamps/build-gcc-newlib-stage2 stamps/build-gdb-newlib $(SIM_STAMP) stamps/build-dejagnu $(SIM_PREPARE) $(MAKE) -C build-gdb-newlib check-gdb -k "RUNTESTFLAGS=--target_board='$(NEWLIB_NANO_TARGET_BOARDS)'" || true date > $@ stamps/check-gdb-linux: stamps/build-gcc-linux-stage2 stamps/build-gdb-linux $(SIM_STAMP) stamps/build-dejagnu $(SIM_PREPARE) $(MAKE) -C build-gdb-linux check-gdb -k "RUNTESTFLAGS=--target_board='$(GLIBC_TARGET_BOARDS)'" || true date > $@ .PHONY: report-gcc-newlib report-gcc-newlib-nano report-gcc-newlib: stamps/check-gcc-newlib $(srcdir)/scripts/testsuite-filter gcc newlib $(srcdir)/test/allowlist `find build-gcc-newlib-stage2/gcc/testsuite/ -name *.sum |paste -sd "," -` report-gcc-newlib-nano: stamps/check-gcc-newlib-nano $(srcdir)/scripts/testsuite-filter gcc newlib-nano $(srcdir)/test/allowlist `find build-gcc-newlib-stage2/gcc/testsuite/ -name *.sum |paste -sd "," -` .PHONY: report-gcc-linux report-gcc-linux: stamps/check-gcc-linux $(srcdir)/scripts/testsuite-filter gcc glibc $(srcdir)/test/allowlist `find build-gcc-linux-stage2/gcc/testsuite/ -name *.sum |paste -sd "," -` .PHONY: report-dhrystone-newlib report-dhrystone-newlib-nano report-dhrystone-newlib: $(patsubst %,stamps/check-dhrystone-newlib-%,$(NEWLIB_MULTILIB_NAMES)) if cat $^ | grep -v '^PASS'; then false; else true; fi report-dhrystone-newlib-nano: $(patsubst %,stamps/check-dhrystone-newlib-nano-%,$(NEWLIB_MULTILIB_NAMES)) if cat $^ | grep -v '^PASS'; then false; else true; fi .PHONY: report-dhrystone-linux report-dhrystone-linux: $(patsubst %,stamps/check-dhrystone-linux-%,$(GLIBC_MULTILIB_NAMES)) if cat $^ | grep -v '^PASS'; then false; else true; fi .PHONY: report-binutils-newlib report-binutils-newlib-nano report-binutils-newlib: stamps/check-binutils-newlib $(srcdir)/scripts/testsuite-filter binutils newlib \ $(srcdir)/test/allowlist \ `find build-binutils-newlib/ -name *.sum |paste -sd "," -` report-binutils-newlib-nano: stamps/check-binutils-newlib-nano $(srcdir)/scripts/testsuite-filter binutils newlib-nano \ $(srcdir)/test/allowlist \ `find build-binutils-newlib/ -name *.sum |paste -sd "," -` .PHONY: report-binutils-linux report-binutils-linux: stamps/check-binutils-linux $(srcdir)/scripts/testsuite-filter binutils glibc \ $(srcdir)/test/allowlist \ `find build-binutils-linux/ -name *.sum |paste -sd "," -` clean: rm -rf build-* stamps install-newlib-nano .PHONY: report-gdb-newlib report-gdb-newlib-nano report-gdb-newlib: stamps/check-gdb-newlib stat $(patsubst %,$(srcdir)/test/gdb-newlib/%.log,$(NEWLIB_MULTILIB_NAMES)) || exit 1 # Fail if there are blank lines in the log file used as input for grep below. if grep '^$$' $(patsubst %,$(srcdir)/test/gdb-newlib/%.log,$(NEWLIB_MULTILIB_NAMES)); then exit 1; fi if find build-gdb-newlib -iname '*.sum' | xargs grep ^FAIL | sort | grep -F -v $(patsubst %,--file=$(srcdir)/test/gdb-newlib/%.log,$(NEWLIB_MULTILIB_NAMES)); then false; else true; fi report-gdb-newlib-nano: stamps/check-gdb-newlib-nano stat $(patsubst %,$(srcdir)/test/gdb-newlib/%.log,$(NEWLIB_MULTILIB_NAMES)) || exit 1 # Fail if there are blank lines in the log file used as input for grep below. if grep '^$$' $(patsubst %,$(srcdir)/test/gdb-newlib/%.log,$(NEWLIB_MULTILIB_NAMES)); then exit 1; fi if find build-gdb-newlib -iname '*.sum' | xargs grep ^FAIL | sort | grep -F -v $(patsubst %,--file=$(srcdir)/test/gdb-newlib/%.log,$(NEWLIB_MULTILIB_NAMES)); then false; else true; fi .PHONY: report-gdb-linux report-gdb-linux: stamps/check-gdb-linux stat $(patsubst %,$(srcdir)/test/gdb-linux/%.log,$(GLIBC_MULTILIB_NAMES)) || exit 1 # Fail if there are blank lines in the log file used as input for grep below. if grep '^$$' $(patsubst %,$(srcdir)/test/gdb-linux/%.log,$(GLIBC_MULTILIB_NAMES)); then exit 1; fi if find build-gdb-linux -iname '*.sum' | xargs grep ^FAIL | sort | grep -F -v $(patsubst %,--file=$(srcdir)/test/gdb-linux/%.log,$(GLIBC_MULTILIB_NAMES)); then false; else true; fi distclean: clean rm -rf src # All of the packages install themselves, so our install target does nothing. install: # Rebuilding Makefile. Makefile: $(srcdir)/Makefile.in config.status CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status config.status: $(srcdir)/configure CONFIG_SHELL="$(SHELL)" $(SHELL) ./config.status --recheck