%define cross_arch arm %define cross_triplet arm-none-eabi %define cross_sysroot %{_prefix}/%{cross_triplet}/sys-root %global majorversion 10.3 %global minorversion 2021.07 %global debug_package %{nil} Name: %{cross_triplet}-newlib-arm Version: %{majorversion}_%{minorversion} Release: 1%{?dist} Summary: The newlib C Library (%{cross_triplet}) Group: Development/Libraries License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ URL: https://developer.arm.com/open-source/gnu-toolchain/gnu-rm Source0: https://developer.arm.com/-/media/Files/downloads/gnu-rm/%{majorversion}-%{minorversion}/gcc-arm-none-eabi-%{majorversion}-%{minorversion}-src.tar.bz2 BuildRequires: %{cross_triplet}-gcc-arm-first = %{version} BuildRequires: gcc %description %prep %autosetup -n gcc-arm-none-eabi-%{majorversion}-%{minorversion} pushd src tar xjf newlib.tar.bz2 popd %build export CFLAGS_FOR_TARGET='-g -O2 -ffunction-sections -fdata-sections' cd %{_builddir}/gcc-arm-none-eabi-%{majorversion}-%{minorversion}/src mkdir -p newlib-build cd newlib-build ../newlib/configure \ --prefix=%{_prefix} \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --host=%{_target_platform} \ --build=%{_target_platform} \ --target=%{cross_triplet} \ --enable-newlib-io-long-long \ --enable-newlib-register-fini \ --disable-newlib-supplied-syscalls \ --disable-nls make %{?_smp_mflags} export CFLAGS_FOR_TARGET='-g -Os -ffunction-sections -fdata-sections' cd %{_builddir}/gcc-arm-none-eabi-%{majorversion}-%{minorversion}/src mkdir -p newlib-nano-build cd newlib-nano-build ../newlib/configure \ --prefix=%{_prefix} \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --host=%{_target_platform} \ --build=%{_target_platform} \ --target=%{cross_triplet} \ --disable-newlib-supplied-syscalls \ --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-nls make %{?_smp_mflags} %install cd %{_builddir}/gcc-arm-none-eabi-%{majorversion}-%{minorversion}/src/newlib-build make DESTDIR=%{buildroot} install cd %{_builddir}/gcc-arm-none-eabi-%{majorversion}-%{minorversion}/src/newlib-nano-build make DESTDIR=%{buildroot}/nano install pushd %{buildroot}/nano for t in `find . -name '*.a'`; do tt=`echo $t|sed -e s,.a$,_nano.a,`; mv $t ../$tt; done popd install -d %{buildroot}/usr/arm-none-eabi/include/newlib-nano mv %{buildroot}/nano/usr/arm-none-eabi/include/newlib.h %{buildroot}/usr/arm-none-eabi/include/newlib-nano/ rm -rf %{buildroot}/nano # Don't any static archive - based on Fedora Project cross-gcc.spec %define __ar_no_strip %{_builddir}/gcc-arm-none-eabi-%{majorversion}-%{minorversion}/ar-no-strip %if 0%{?fedora} >= 33 cat > %{__ar_no_strip} << EOF #!/bin/sh args=""; hasfile=0; for arg in "\$@"; do if [[ \$arg != *arm-none-eabi* ]]; then args="\$args \$arg" if [[ \$arg == *.o ]]; then hasfile=1 fi fi done echo "\$args" if [ \$hasfile -ne 0 ]; then /usr/bin/strip \$args fi EOF %else cat > %{__ar_no_strip} << EOF #!/bin/sh f=\$2 case \$(basename \$f) in *.a) ;; *) %{__strip} \$@ ;; esac EOF %endif chmod +x %{__ar_no_strip} %undefine __strip %define __strip %{__ar_no_strip} # epel cannot seem to handle globs like this: dir/*.{o,a,ld,specs} # this script converts to individual dir/*.ext lines # #!/usr/bin/perl # use warnings; # use strict; # while (<>) { # s|^(.*)/\*\.\{o,a,ld,specs\}\s*$|$1/*.o\n$1/*.a\n$1/*.ld\n$1/*.specs\n|; # print "$_"; # } %files %license src/newlib/COPYING src/newlib/COPYING.LIB src/newlib/COPYING.LIBGLOSS %license src/newlib/COPYING3 src/newlib/COPYING3.LIB src/newlib/COPYING.NEWLIB %doc src/newlib/ChangeLog src/newlib/MAINTAINERS src/newlib/README %dir %{_prefix}/%{cross_triplet} %dir %{_prefix}/%{cross_triplet}/include %dir %{_prefix}/%{cross_triplet}/include/bits %dir %{_prefix}/%{cross_triplet}/include/machine %dir %{_prefix}/%{cross_triplet}/include/newlib-nano %dir %{_prefix}/%{cross_triplet}/include/rpc %dir %{_prefix}/%{cross_triplet}/include/ssp %dir %{_prefix}/%{cross_triplet}/include/sys %dir %{_prefix}/%{cross_triplet}/lib %dir %{_prefix}/%{cross_triplet}/lib/arm %dir %{_prefix}/%{cross_triplet}/lib/arm/v5te %dir %{_prefix}/%{cross_triplet}/lib/arm/v5te/hard %dir %{_prefix}/%{cross_triplet}/lib/arm/v5te/hard/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/arm/v5te/softfp %dir %{_prefix}/%{cross_triplet}/lib/arm/v5te/softfp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb %dir %{_prefix}/%{cross_triplet}/lib/thumb/nofp %dir %{_prefix}/%{cross_triplet}/lib/thumb/nofp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v6-m %dir %{_prefix}/%{cross_triplet}/lib/thumb/v6-m/nofp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v6-m/nofp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7 %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/hard %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/hard/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/softfp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/softfp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/hard %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/hard/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/softfp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/softfp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m/nofp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m/nofp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/hard %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/hard/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/softfp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/softfp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7-m %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7-m/nofp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7-m/nofp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7/nofp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v7/nofp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.base %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.base/nofp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.base/nofp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/hard %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/hard/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/softfp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/softfp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/hard %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/hard/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/softfp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/softfp/cpu-init %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main/nofp %dir %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main/nofp/cpu-init %{_prefix}/%{cross_triplet}/include/*.h #{_prefix}/%{cross_triplet}/include/bits/*.h %{_prefix}/%{cross_triplet}/include/machine/*.h %{_prefix}/%{cross_triplet}/include/newlib-nano/*.h #{_prefix}/%{cross_triplet}/include/rpc/*.h %{_prefix}/%{cross_triplet}/include/ssp/*.h %{_prefix}/%{cross_triplet}/include/sys/*.h %{_prefix}/%{cross_triplet}/lib/*.o %{_prefix}/%{cross_triplet}/lib/*.a %{_prefix}/%{cross_triplet}/lib/*.ld %{_prefix}/%{cross_triplet}/lib/*.specs %{_prefix}/%{cross_triplet}/lib/arm %{_prefix}/%{cross_triplet}/lib/arm/v5te %{_prefix}/%{cross_triplet}/lib/arm/v5te/hard/*.o %{_prefix}/%{cross_triplet}/lib/arm/v5te/hard/*.a %{_prefix}/%{cross_triplet}/lib/arm/v5te/hard/*.ld %{_prefix}/%{cross_triplet}/lib/arm/v5te/hard/*.specs %{_prefix}/%{cross_triplet}/lib/arm/v5te/hard/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/arm/v5te/softfp/*.o %{_prefix}/%{cross_triplet}/lib/arm/v5te/softfp/*.a %{_prefix}/%{cross_triplet}/lib/arm/v5te/softfp/*.ld %{_prefix}/%{cross_triplet}/lib/arm/v5te/softfp/*.specs %{_prefix}/%{cross_triplet}/lib/arm/v5te/softfp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb %{_prefix}/%{cross_triplet}/lib/thumb/nofp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/nofp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/nofp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/nofp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/nofp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v6-m %{_prefix}/%{cross_triplet}/lib/thumb/v6-m/nofp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v6-m/nofp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v6-m/nofp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v6-m/nofp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v6-m/nofp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7 %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/hard/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/hard/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/hard/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/hard/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/hard/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/softfp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/softfp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/softfp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/softfp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+dp/softfp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/hard/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/hard/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/hard/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/hard/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/hard/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/softfp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/softfp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/softfp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/softfp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m+fp/softfp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m/nofp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m/nofp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m/nofp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m/nofp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v7e-m/nofp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/hard/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/hard/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/hard/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/hard/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/hard/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/softfp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/softfp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/softfp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/softfp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v7+fp/softfp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7-m %{_prefix}/%{cross_triplet}/lib/thumb/v7-m/nofp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7-m/nofp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v7-m/nofp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v7-m/nofp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v7-m/nofp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7/nofp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v7/nofp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v7/nofp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v7/nofp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v7/nofp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.base %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.base/nofp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.base/nofp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.base/nofp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.base/nofp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.base/nofp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/hard/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/hard/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/hard/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/hard/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/hard/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/softfp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/softfp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/softfp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/softfp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+dp/softfp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/hard/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/hard/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/hard/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/hard/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/hard/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/softfp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/softfp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/softfp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/softfp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main+fp/softfp/cpu-init/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main/nofp/*.o %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main/nofp/*.a %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main/nofp/*.ld %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main/nofp/*.specs %{_prefix}/%{cross_triplet}/lib/thumb/v8-m.main/nofp/cpu-init/*.o %changelog * Mon Aug 30 2021 Thomas Sailer - 2021.07-1 - update * Thu Apr 08 2021 Thomas Sailer - 10_2020q4-1 - update * Tue Aug 11 2020 Thomas Sailer - 9_2020q2-1 - update * Sat Sep 28 2019 Thomas Sailer - 8_2019q3-1 - update * Wed Feb 13 2019 Thomas Sailer - 8_2018q4-1 - update * Tue Nov 14 2017 Thomas Sailer - 6_2017q2-1 - Update * Sat Jan 28 2017 Thomas Sailer - 5_4_2016q3_20160926-1 - Initial spec file