Skip to content

Commit e9402ea

Browse files
committed
Add support for picolibc
This allows the creation of an embedded toolchain which uses picolibc as the C library instead of newlib. Signed-off-by: Keith Packard <[email protected]>
1 parent 20e683a commit e9402ea

File tree

5 files changed

+297
-8
lines changed

5 files changed

+297
-8
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ build
33
config.log
44
config.status
55
Makefile
6+
picolibc-cross.txt
67
.DS_Store
78
!/regression/Makefile
89
/build-*/

Makefile.in

Lines changed: 206 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ INSTALL_DIR := @prefix@
55
GCC_SRCDIR := @with_gcc_src@
66
BINUTILS_SRCDIR := @with_binutils_src@
77
NEWLIB_SRCDIR := @with_newlib_src@
8+
PICOLIBC_SRCDIR := @with_picolibc_src@
89
GLIBC_SRCDIR := @with_glibc_src@
910
MUSL_SRCDIR := @with_musl_src@
1011
LINUX_HEADERS_SRCDIR := @with_linux_headers_src@
@@ -57,9 +58,11 @@ MULTILIB_FLAGS := @multilib_flags@
5758
MULTILIB_GEN := @multilib_gen@
5859
ifeq ($(MULTILIB_GEN),)
5960
NEWLIB_MULTILIB_NAMES := @newlib_multilib_names@
61+
PICOLIBC_MULTILIB_NAMES := @picolibc_multilib_names@
6062
GCC_MULTILIB_FLAGS := $(MULTILIB_FLAGS)
6163
else
6264
NEWLIB_MULTILIB_NAMES := $(shell echo "$(MULTILIB_GEN)" | $(SED) 's/;/\n/g'| $(AWK) '{split($$0,a,"-"); printf "%s-%s ", a[1],a[2]}')
65+
PICOLIBC_MULTILIB_NAMES := $(shell echo "$(MULTILIB_GEN)" | $(SED) 's/;/\n/g'| $(AWK) '{split($$0,a,"-"); printf "%s-%s ", a[1],a[2]}')
6366
GCC_MULTILIB_FLAGS := $(MULTILIB_FLAGS) --with-multilib-generator="$(MULTILIB_GEN)"
6467
endif
6568
GLIBC_MULTILIB_NAMES := @glibc_multilib_names@
@@ -73,6 +76,7 @@ endif
7376
make_tuple = riscv$(1)-unknown-$(2)
7477
LINUX_TUPLE ?= $(call make_tuple,$(XLEN),linux-gnu)
7578
NEWLIB_TUPLE ?= $(call make_tuple,$(XLEN),elf)
79+
PICOLIBC_TUPLE ?= $(call make_tuple,$(XLEN),elf)
7680
MUSL_TUPLE ?= $(call make_tuple,$(XLEN),linux-musl)
7781

7882
CFLAGS_FOR_TARGET := $(CFLAGS_FOR_TARGET_EXTRA) @target_cflags@ @cmodel@
@@ -94,6 +98,10 @@ NEWLIB_CXX_FOR_TARGET ?= $(NEWLIB_TUPLE)-g++
9498
NEWLIB_TARGET_BOARDS ?= $(shell echo "$(NEWLIB_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim/-march=\1/-mabi=\2/@cmodel@!g')
9599
NEWLIB_NANO_TARGET_BOARDS ?= $(shell echo "$(NEWLIB_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim-nano/-march=\1/-mabi=\2/@cmodel@!g')
96100

101+
PICOLIBC_CC_FOR_TARGET ?= $(PICOLIBC_TUPLE)-gcc
102+
PICOLIBC_CXX_FOR_TARGET ?= $(PICOLIBC_TUPLE)-g++
103+
PICOLIBC_TARGET_BOARDS ?= $(shell echo "$(PICOLIBC_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim/-march=\1/-mabi=\2/@cmodel@!g')
104+
97105
MUSL_TARGET_FLAGS := $(MUSL_TARGET_FLAGS_EXTRA)
98106
MUSL_CC_FOR_TARGET ?= $(MUSL_TUPLE)-gcc
99107
MUSL_CXX_FOR_TARGET ?= $(MUSL_TUPLE)-g++
@@ -102,6 +110,7 @@ CONFIGURE_HOST = @configure_host@
102110

103111
all: @default_target@
104112
newlib: stamps/build-gcc-newlib-stage2
113+
picolibc: stamps/build-gcc-picolibc-stage2
105114
linux: stamps/build-gcc-linux-stage2
106115
ifneq (,$(findstring riscv32,$(MUSL_TUPLE)))
107116
.PHONY: musl
@@ -112,6 +121,7 @@ musl: stamps/build-gcc-musl-stage2
112121
endif
113122
ifeq (@enable_gdb@,--enable-gdb)
114123
newlib: stamps/build-gdb-newlib
124+
picolibc: stamps/build-gdb-picolibc
115125
linux: stamps/build-gdb-linux
116126
endif
117127
linux-native: stamps/build-gcc-linux-native
@@ -123,43 +133,52 @@ build-gcc%: stamps/build-gcc-@default_target@-stage%
123133
ifeq (@default_target@,linux)
124134
build-libc: $(addprefix stamps/build-glibc-linux-,$(GLIBC_MULTILIB_NAMES))
125135
else
136+
ifeq (@default_target@,picolibc)
137+
build-libc: stamps/build-picolibc
138+
else
126139
build-libc: stamps/build-newlib stamps/build-newlib-nano \
127140
stamps/merge-newlib-nano
128141
endif
142+
endif
129143
build-qemu: stamps/build-qemu
130144

131145
REGRESSION_TEST_LIST = gcc
132146

133147
.PHONY: check
134148
check: check-@default_target@
135-
.PHONY: check-linux check-newlib
149+
.PHONY: check-linux check-newlib check-picolibc
136150
check-linux: $(patsubst %,check-%-linux,$(REGRESSION_TEST_LIST))
137151
check-newlib: $(patsubst %,check-%-newlib,$(REGRESSION_TEST_LIST))
138152
check-newlib-nano: $(patsubst %,check-%-newlib-nano,$(REGRESSION_TEST_LIST))
139-
.PHONY: check-gcc check-gcc-linux check-gcc-newlib check-gcc-newlib-nano
153+
check-picolibc: $(patsubst %,check-%-picolibc,$(REGRESSION_TEST_LIST))
154+
.PHONY: check-gcc check-gcc-linux check-gcc-newlib check-gcc-newlib-nano check-gcc-picolibc
140155
check-gcc: check-gcc-@default_target@
141156
check-gcc-linux: stamps/check-gcc-linux
142157
check-gcc-newlib: stamps/check-gcc-newlib
143158
check-gcc-newlib-nano: stamps/check-gcc-newlib-nano
144-
.PHONY: check-dhrystone check-dhrystone-linux check-dhrystone-newlib
159+
check-gcc-picolibc: stamps/check-gcc-picolibc
160+
.PHONY: check-dhrystone check-dhrystone-linux check-dhrystone-newlib check-dhrystone-picolibc
145161
check-dhrystone: check-dhrystone-@default_target@
146-
.PHONY: check-binutils check-binutils-linux check-binutils-newlib
162+
.PHONY: check-binutils check-binutils-linux check-binutils-newlib check-binutils-picolibc
147163
check-binutils: check-binutils-@default_target@
148164
check-binutils-linux: stamps/check-binutils-linux
149165
check-binutils-newlib: stamps/check-binutils-newlib
150166
check-binutils-newlib-nano: stamps/check-binutils-newlib-nano
151-
.PHONY: check-gdb check-gdb-linux check-gdb-newlib
167+
check-binutils-picolibc: stamps/check-binutils-picolibc
168+
.PHONY: check-gdb check-gdb-linux check-gdb-newlib check-gdb-picolibc
152169
check-gdb: check-gdb-@default_target@
153170
check-gdb-linux: stamps/check-gdb-linux
154171
check-gdb-newlib: stamps/check-gdb-newlib
155172
check-gdb-newlib-nano: stamps/check-gdb-newlib-nano
173+
check-gdb-picolibc: stamps/check-gdb-picolibc
156174

157175
.PHONY: report
158176
report: report-@default_target@
159-
.PHONY: report-linux report-newlib report-newlib-nano
177+
.PHONY: report-linux report-newlib report-newlib-nano report-picolibc
160178
report-linux: $(patsubst %,report-%-linux,$(REGRESSION_TEST_LIST))
161179
report-newlib: $(patsubst %,report-%-newlib,$(REGRESSION_TEST_LIST))
162180
report-newlib-nano: $(patsubst %,report-%-newlib-nano,$(REGRESSION_TEST_LIST))
181+
report-picolibc: $(patsubst %,report-%-picolibc,$(REGRESSION_TEST_LIST))
163182
.PHONY: report-gcc
164183
report-gcc: report-gcc-@default_target@
165184
.PHONY: report-dhrystone
@@ -678,6 +697,141 @@ stamps/build-gcc-newlib-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-newlib
678697
$(MAKE) -C $(notdir $@) install
679698
mkdir -p $(dir $@) && touch $@
680699

700+
#
701+
# PICOLIBC
702+
#
703+
704+
stamps/build-binutils-picolibc: $(BINUTILS_SRCDIR) $(BINUTILS_SRC_GIT) stamps/check-write-permission
705+
rm -rf $@ $(notdir $@)
706+
mkdir $(notdir $@)
707+
# CC_FOR_TARGET is required for the ld testsuite.
708+
cd $(notdir $@) && CC_FOR_TARGET=$(PICOLIBC_CC_FOR_TARGET) $</configure \
709+
--target=$(PICOLIBC_TUPLE) \
710+
$(CONFIGURE_HOST) \
711+
--prefix=$(INSTALL_DIR) \
712+
@with_guile@ \
713+
--disable-werror \
714+
$(BINUTILS_TARGET_FLAGS) \
715+
--disable-gdb \
716+
--disable-sim \
717+
--disable-libdecnumber \
718+
--disable-readline \
719+
$(WITH_ISA_SPEC)
720+
$(MAKE) -C $(notdir $@)
721+
$(MAKE) -C $(notdir $@) install
722+
mkdir -p $(dir $@) && touch $@
723+
724+
stamps/build-gdb-picolibc: $(GDB_SRCDIR) $(GDB_SRC_GIT)
725+
rm -rf $@ $(notdir $@)
726+
mkdir $(notdir $@)
727+
# CC_FOR_TARGET is required for the ld testsuite.
728+
cd $(notdir $@) && CC_FOR_TARGET=$(PICOLIBC_CC_FOR_TARGET) $</configure \
729+
--target=$(PICOLIBC_TUPLE) \
730+
$(CONFIGURE_HOST) \
731+
--prefix=$(INSTALL_DIR) \
732+
@with_guile@ \
733+
--disable-werror \
734+
$(GDB_TARGET_FLAGS) \
735+
--enable-gdb \
736+
--disable-gas \
737+
--disable-binutils \
738+
--disable-ld \
739+
--disable-gold \
740+
--disable-gprof
741+
$(MAKE) -C $(notdir $@)
742+
$(MAKE) -C $(notdir $@) install
743+
mkdir -p $(dir $@) && touch $@
744+
745+
stamps/build-gcc-picolibc-stage1: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-binutils-picolibc
746+
if test -f $</contrib/download_prerequisites && test "@NEED_GCC_EXTERNAL_LIBRARIES@" = "true"; then cd $< && ./contrib/download_prerequisites; fi
747+
rm -rf $@ $(notdir $@)
748+
mkdir $(notdir $@)
749+
cd $(notdir $@) && $</configure \
750+
--target=$(PICOLIBC_TUPLE) \
751+
$(CONFIGURE_HOST) \
752+
--prefix=$(INSTALL_DIR) \
753+
--disable-shared \
754+
--disable-threads \
755+
--disable-tls \
756+
--enable-languages=c,c++ \
757+
@with_system_zlib@ \
758+
--with-newlib \
759+
--with-sysroot=$(INSTALL_DIR)/$(PICOLIBC_TUPLE) \
760+
--disable-libmudflap \
761+
--disable-libssp \
762+
--disable-libquadmath \
763+
--disable-libgomp \
764+
--disable-nls \
765+
--disable-tm-clone-registry \
766+
--src=$(gccsrcdir) \
767+
$(GCC_CHECKING_FLAGS) \
768+
$(GCC_MULTILIB_FLAGS) \
769+
$(WITH_ABI) \
770+
$(WITH_ARCH) \
771+
$(WITH_TUNE) \
772+
$(WITH_ISA_SPEC) \
773+
CFLAGS_FOR_TARGET="-Os $(CFLAGS_FOR_TARGET)" \
774+
CXXFLAGS_FOR_TARGET="-Os $(CXXFLAGS_FOR_TARGET)"
775+
$(MAKE) -C $(notdir $@) all-gcc
776+
$(MAKE) -C $(notdir $@) install-gcc
777+
mkdir -p $(dir $@) && touch $@
778+
779+
stamps/build-picolibc: $(PICOLIBC_SRCDIR) $(PICOLIBC_SRC_GIT) stamps/build-gcc-picolibc-stage1 picolibc-cross.txt
780+
rm -rf $@ $(notdir $@)
781+
mkdir $(notdir $@)
782+
meson --cross-file picolibc-cross.txt \
783+
--prefix=$(INSTALL_DIR)/$(PICOLIBC_TUPLE) \
784+
-Dincludedir=include \
785+
-Dlibdir=lib \
786+
-Dsysroot-install=true \
787+
-Dsystem-libc=true \
788+
$(PICOLIBC_SRCDIR) \
789+
$(notdir $@)
790+
ninja -C $(notdir $@) install
791+
mkdir -p $(dir $@) && touch $@
792+
793+
picolibc-cross.txt: make-picolibc-cross Makefile
794+
sh ./make-picolibc-cross $(PICOLIBC_TUPLE) $(CFLAGS_FOR_TARGET) > $@
795+
796+
stamps/build-gcc-picolibc-stage2: $(GCC_SRCDIR) $(GCC_SRC_GIT) stamps/build-picolibc
797+
rm -rf $@ $(notdir $@)
798+
mkdir $(notdir $@)
799+
cd $(notdir $@) && $</configure \
800+
--target=$(PICOLIBC_TUPLE) \
801+
$(CONFIGURE_HOST) \
802+
--enable-stdio=stdio_pure \
803+
--with-default-libc=picolibc \
804+
--disable-wchar_t \
805+
--prefix=$(INSTALL_DIR) \
806+
--disable-shared \
807+
--disable-threads \
808+
--enable-languages=c,c++ \
809+
--with-pkgversion="$(GCCPKGVER)" \
810+
@with_system_zlib@ \
811+
--enable-tls \
812+
--with-newlib \
813+
--with-sysroot=$(INSTALL_DIR)/$(PICOLIBC_TUPLE) \
814+
--with-native-system-header-dir=/include \
815+
--disable-libmudflap \
816+
--disable-libssp \
817+
--disable-libquadmath \
818+
--disable-libgomp \
819+
--disable-nls \
820+
--disable-tm-clone-registry \
821+
--src=$(gccsrcdir) \
822+
$(GCC_CHECKING_FLAGS) \
823+
$(GCC_MULTILIB_FLAGS) \
824+
$(WITH_ABI) \
825+
$(WITH_ARCH) \
826+
$(WITH_TUNE) \
827+
$(WITH_ISA_SPEC) \
828+
CFLAGS_FOR_TARGET="-Os $(CFLAGS_FOR_TARGET)" \
829+
CXXFLAGS_FOR_TARGET="-Os $(CXXFLAGS_FOR_TARGET)"
830+
$(MAKE) -C $(notdir $@)
831+
$(MAKE) -C $(notdir $@) install
832+
mkdir -p $(dir $@) && touch $@
833+
834+
681835
#
682836
# MUSL
683837
#
@@ -876,6 +1030,11 @@ stamps/check-gcc-newlib-nano: stamps/build-gcc-newlib-stage2 $(SIM_STAMP) stamps
8761030
mkdir -p $(dir $@)
8771031
date > $@
8781032

1033+
stamps/check-gcc-picolibc: stamps/build-gcc-picolibc-stage2 $(SIM_STAMP) stamps/build-dejagnu
1034+
$(SIM_PREPARE) $(MAKE) -C build-gcc-picolibc-stage2 check-gcc "RUNTESTFLAGS=--target_board='$(PICOLIBC_TARGET_BOARDS)'"
1035+
mkdir -p $(dir $@)
1036+
date > $@
1037+
8791038
stamps/check-gcc-linux: stamps/build-gcc-linux-stage2 $(SIM_STAMP) stamps/build-dejagnu
8801039
$(SIM_PREPARE) $(MAKE) -C build-gcc-linux-stage2 check-gcc "RUNTESTFLAGS=--target_board='$(GLIBC_TARGET_BOARDS)'"
8811040
mkdir -p $(dir $@)
@@ -903,6 +1062,17 @@ stamps/check-dhrystone-newlib-nano-%: \
9031062
$(eval $@_XLEN := $(patsubst rv32%,32,$(patsubst rv64%,64,$($@_ARCH))))
9041063
$(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
9051064

1065+
.PHONY: check-dhrystone-picolibc
1066+
check-dhrystone-picolibc: $(patsubst %,stamps/check-dhrystone-picolibc-%,$(PICOLIBC_MULTILIB_NAMES))
1067+
stamps/check-dhrystone-picolibc-%: \
1068+
stamps/build-gcc-picolibc-stage2 \
1069+
$(SIM_STAMP) \
1070+
$(wildcard $(srcdir)/test/benchmarks/dhrystone/*)
1071+
$(eval $@_ARCH := $(word 4,$(subst -, ,$@)))
1072+
$(eval $@_ABI := $(word 5,$(subst -, ,$@)))
1073+
$(eval $@_XLEN := $(patsubst rv32%,32,$(patsubst rv64%,64,$($@_ARCH))))
1074+
$(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
1075+
9061076
.PHONY: check-dhrystone-linux
9071077
check-dhrystone-linux: $(patsubst %,stamps/check-dhrystone-linux-%,$(GLIBC_MULTILIB_NAMES))
9081078

@@ -923,6 +1093,10 @@ stamps/check-binutils-newlib-nano: stamps/build-gcc-newlib-stage2 $(SIM_STAMP) s
9231093
$(SIM_PREPARE) $(MAKE) -C build-binutils-newlib check-binutils check-gas check-ld -k "RUNTESTFLAGS=--target_board='$(NEWLIB_NANO_TARGET_BOARDS)'" || true
9241094
date > $@
9251095

1096+
stamps/check-binutils-picolibc: stamps/build-gcc-picolibc-stage2 $(SIM_STAMP) stamps/build-dejagnu
1097+
$(SIM_PREPARE) $(MAKE) -C build-binutils-picolibc check-binutils check-gas check-ld -k "RUNTESTFLAGS=--target_board='$(PICOLIBC_TARGET_BOARDS)'" || true
1098+
date > $@
1099+
9261100
stamps/check-binutils-linux: stamps/build-gcc-linux-stage2 $(SIM_STAMP) stamps/build-dejagnu
9271101
$(SIM_PREPARE) $(MAKE) -C build-binutils-linux check-binutils check-gas check-ld -k "RUNTESTFLAGS=--target_board='$(GLIBC_TARGET_BOARDS)'" || true
9281102
date > $@
@@ -935,6 +1109,10 @@ stamps/check-gdb-newlib-nano: stamps/build-gcc-newlib-stage2 stamps/build-gdb-ne
9351109
$(SIM_PREPARE) $(MAKE) -C build-gdb-newlib check-gdb -k "RUNTESTFLAGS=--target_board='$(NEWLIB_NANO_TARGET_BOARDS)'" || true
9361110
date > $@
9371111

1112+
stamps/check-gdb-picolibc: stamps/build-gcc-picolibc-stage2 stamps/build-gdb-picolibc $(SIM_STAMP) stamps/build-dejagnu
1113+
$(SIM_PREPARE) $(MAKE) -C build-gdb-picolibc check-gdb -k "RUNTESTFLAGS=--target_board='$(PICOLIBC_TARGET_BOARDS)'" || true
1114+
date > $@
1115+
9381116
stamps/check-gdb-linux: stamps/build-gcc-linux-stage2 stamps/build-gdb-linux $(SIM_STAMP) stamps/build-dejagnu
9391117
$(SIM_PREPARE) $(MAKE) -C build-gdb-linux check-gdb -k "RUNTESTFLAGS=--target_board='$(GLIBC_TARGET_BOARDS)'" || true
9401118
date > $@
@@ -946,6 +1124,10 @@ report-gcc-newlib: stamps/check-gcc-newlib
9461124
report-gcc-newlib-nano: stamps/check-gcc-newlib-nano
9471125
$(srcdir)/scripts/testsuite-filter gcc newlib-nano $(srcdir)/test/allowlist `find build-gcc-newlib-stage2/gcc/testsuite/ -name *.sum |paste -sd "," -`
9481126

1127+
.PHONY: report-gcc-picolibc
1128+
report-gcc-picolibc: stamps/check-gcc-picolibc
1129+
$(srcdir)/scripts/testsuite-filter gcc picolibc $(srcdir)/test/allowlist `find build-gcc-picolibc-stage2/gcc/testsuite/ -name *.sum |paste -sd "," -`
1130+
9491131
.PHONY: report-gcc-linux
9501132
report-gcc-linux: stamps/check-gcc-linux
9511133
$(srcdir)/scripts/testsuite-filter gcc glibc $(srcdir)/test/allowlist `find build-gcc-linux-stage2/gcc/testsuite/ -name *.sum |paste -sd "," -`
@@ -956,6 +1138,10 @@ report-dhrystone-newlib: $(patsubst %,stamps/check-dhrystone-newlib-%,$(NEWLIB_M
9561138
report-dhrystone-newlib-nano: $(patsubst %,stamps/check-dhrystone-newlib-nano-%,$(NEWLIB_MULTILIB_NAMES))
9571139
if cat $^ | grep -v '^PASS'; then false; else true; fi
9581140

1141+
.PHONY: report-dhrystone-picolibc
1142+
report-dhrystone-picolibc: $(patsubst %,stamps/check-dhrystone-picolibc-%,$(PICOLIBC_MULTILIB_NAMES))
1143+
if cat $^ | grep -v '^PASS'; then false; else true; fi
1144+
9591145
.PHONY: report-dhrystone-linux
9601146
report-dhrystone-linux: $(patsubst %,stamps/check-dhrystone-linux-%,$(GLIBC_MULTILIB_NAMES))
9611147
if cat $^ | grep -v '^PASS'; then false; else true; fi
@@ -971,14 +1157,20 @@ report-binutils-newlib-nano: stamps/check-binutils-newlib-nano
9711157
$(srcdir)/test/allowlist \
9721158
`find build-binutils-newlib/ -name *.sum |paste -sd "," -`
9731159

1160+
.PHONY: report-binutils-picolibc
1161+
report-binutils-picolibc: stamps/check-binutils-picolibc
1162+
$(srcdir)/scripts/testsuite-filter binutils picolibc \
1163+
$(srcdir)/test/allowlist \
1164+
`find build-binutils-picolibc/ -name *.sum |paste -sd "," -`
1165+
9741166
.PHONY: report-binutils-linux
9751167
report-binutils-linux: stamps/check-binutils-linux
9761168
$(srcdir)/scripts/testsuite-filter binutils glibc \
9771169
$(srcdir)/test/allowlist \
9781170
`find build-binutils-linux/ -name *.sum |paste -sd "," -`
9791171

9801172
clean:
981-
rm -rf build-* stamps install-newlib-nano
1173+
rm -rf build-* stamps install-newlib-nano picolibc-cross.txt
9821174

9831175
.PHONY: report-gdb-newlib report-gdb-newlib-nano
9841176
report-gdb-newlib: stamps/check-gdb-newlib
@@ -993,6 +1185,13 @@ report-gdb-newlib-nano: stamps/check-gdb-newlib-nano
9931185
if grep '^$$' $(patsubst %,$(srcdir)/test/gdb-newlib/%.log,$(NEWLIB_MULTILIB_NAMES)); then exit 1; fi
9941186
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
9951187

1188+
.PHONY: report-gdb-picolibc
1189+
report-gdb-picolibc: stamps/check-gdb-picolibc
1190+
stat $(patsubst %,$(srcdir)/test/gdb-picolibc/%.log,$(PICOLIBC_MULTILIB_NAMES)) || exit 1
1191+
# Fail if there are blank lines in the log file used as input for grep below.
1192+
if grep '^$$' $(patsubst %,$(srcdir)/test/gdb-picolibc/%.log,$(PICOLIBC_MULTILIB_NAMES)); then exit 1; fi
1193+
if find build-gdb-picolibc -iname '*.sum' | xargs grep ^FAIL | sort | grep -F -v $(patsubst %,--file=$(srcdir)/test/gdb-picolibc/%.log,$(PICOLIBC_MULTILIB_NAMES)); then false; else true; fi
1194+
9961195
.PHONY: report-gdb-linux
9971196
report-gdb-linux: stamps/check-gdb-linux
9981197
stat $(patsubst %,$(srcdir)/test/gdb-linux/%.log,$(GLIBC_MULTILIB_NAMES)) || exit 1

0 commit comments

Comments
 (0)