File cross-arm-linux-musleabihf-gcc.spec of Package cross-arm-linux-musleabihf-gcc
%define realname gcc
%define realver 13.1.0
%define vermajor %(awk -F. '{printf "%i.%i", $1, $2}' <<< %{realver})
%define pkgsuff %(awk -F. '{printf "%i%i", $1, $2}' <<< %{realver})
# turn off the generation of debuginfo rpm (RH9) ??
%global debug_package %{nil}
%define prefix %_prefix
%define cross_cpu arm
%define cross_target %{cross_cpu}-linux-musleabihf
%define build_target %{cross_target}
%define platform_dir %{prefix}/%{build_target}
%define platform_ld %{build_target}-ld
%define __strip %{cross_target}-strip
# Common info
Name: %{?cross_target:cross-%{cross_target}-}%{realname}
Version: %{realver}
Release: wiz%{?extraver:0.}1%{?dist}
License: GPL-3.0+
Group: Development/Languages/C and C++
URL: http://gcc.gnu.org/
Summary: GNU Compiler Collection for AVR microcontrollers
# Install-time parameters
Requires: %{?cross_target:cross-%{cross_target}-}binutils
Requires: %{?cross_target:cross-%{cross_cpu}-}musl
# Build-time parameters
#!BuildIgnore: kernel-debug-devel
BuildRequires: %{?cross_target:cross-%{cross_target}-}binutils
BuildRequires: %{?cross_target:cross-%{cross_cpu}-}musl
BuildRequires: pkg-config xz cpp gcc gcc-c++ libstdc++-devel
BuildRequires: zip unzip
BuildRequires: bison flex
BuildRequires: zlib-devel libzstd-devel
BuildRequires: isl-devel
BuildRequires: %{!?suse_version:lib}mpc-devel gmp-devel mpfr-devel
BuildRoot: %{_tmppath}/%{name}-root
Source0: http://ftp.gnu.org/pub/gnu/gcc/gcc-%{version}/gcc-%{version}.tar.xz
%description
GNU Compiler Collection for AVR microcontrollers.
# Preparation step (unpackung and patching if necessary)
%prep
%setup -q -n %{realname}-%{version}
# Disable linking using Intel Indirect Branch Tracking and Intel Shadow Stack
%{__sed} -ri '/z,ibt/d' gcc/configure
%build
_CFLAGS='%{optflags}'
_LDFLAGS='-Wl,--as-needed -Wl,--strip-all -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro'
mkdir build
cd build
../configure \
--prefix=%{_prefix} \
--exec-prefix=%{_exec_prefix} \
--libdir=%{platform_dir}/lib \
--libexecdir=%{platform_dir}/lib \
--with-slibdir=%{platform_dir}/lib \
--with-gxx-include-dir=%{platform_dir}/usr/include/c++ \
--with-toolexeclibdir=%{platform_dir}/usr/lib \
\
--program-prefix=%{build_target}- \
--target=%{build_target} \
\
--with-sysroot=%{platform_dir} \
--with-build-sysroot=%{platform_dir} \
\
--disable-libitm \
--disable-libsanitizer \
--disable-libssp \
--disable-libvtv \
\
--disable-multilib \
--enable-__cxa_atexit \
--enable-threads \
--disable-gcov \
\
--enable-lto \
--enable-stage1-languages=c,c++ \
--enable-languages=c,c++,lto \
\
--with-system-zlib \
\
--with-zstd=%{_prefix} \
\
--disable-nls \
\
CFLAGS="$_CFLAGS" \
CXXFLAGS="$_CFLAGS" \
LDFLAGS="$_LDFLAGS" \
CFLAGS_FOR_TARGET="-march=armv7-a+simd -pipe -Os -mfloat-abi=hard -g0 -DNDEBUG -Wno-error=unused-variable" \
CXXFLAGS_FOR_TARGET="-march=armv7-a+simd -pipe -Os -mfloat-abi=hard -g0 -DNDEBUG -Wno-error=unused-variable" \
LDFLAGS_FOR_TARGET="-Wl,--as-needed -Wl,--strip-all" \
|| cat config.log
test -f Makefile && %{__make} %{?_smp_mflags} || exit 1
%install
%{__make} -C build install DESTDIR=%{buildroot}
# Make symlinks
%{__install} -d -m0755 %{buildroot}%{platform_dir}/bin/
for binary in %{buildroot}%{_bindir}/*; do
binname=${binary##*/}
%{__ln_s} -fn ../../bin/$binname %{buildroot}%{platform_dir}/bin/${binname#%{build_target}-}
done
%clean
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
%files
%defattr(-,root,root)
%license COPYING*
%doc MAINTAINERS NEWS README
%{_bindir}/*
%{platform_dir}/
%doc %{_mandir}/man1/*
%exclude %{platform_dir}/usr/lib/*.la
%exclude %{platform_dir}/usr/lib/*.py
%exclude %{_mandir}/man7/
%exclude %{_datadir}/info/
%exclude %{_datadir}/%{realname}-%{realver}/
%exclude %{platform_dir}/lib/gcc/%{build_target}/%{version}/liblto_plugin.la
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%changelog