194 lines
5.5 KiB
RPMSpec
194 lines
5.5 KiB
RPMSpec
#
|
|
# spec file for package gcc (Version 4.0.1)
|
|
#
|
|
# Copyright (c) 2005 SUSE Linux AG, Nuernberg, Germany.
|
|
# This file and all modifications and additions to the pristine
|
|
# package are under the same license as the package itself.
|
|
#
|
|
# Please submit bugfixes or comments via https://www.suse.de/feedback/
|
|
#
|
|
|
|
%define build_cp 1
|
|
%define build_ada 0
|
|
%define build_libjava 0
|
|
%define build_java 0
|
|
|
|
%define build_fortran 0
|
|
%define build_objc 0
|
|
%define build_objcp 0
|
|
%define build_nof 0
|
|
%define build_with_mudflap 0
|
|
|
|
%define binutils_target %{cross_arch}
|
|
%if "%{cross_arch}" == "armv7l" || "%{cross_arch}" == "armv7hl"
|
|
%define binutils_target arm
|
|
%endif
|
|
%if "%{cross_arch}" == "armv6l" || "%{cross_arch}" == "armv6hl"
|
|
%define binutils_target arm
|
|
%endif
|
|
%if "%{cross_arch}" == "armv5tel"
|
|
%define binutils_target arm
|
|
%endif
|
|
%define canonical_target %(echo %{binutils_target} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
|
|
%if "%{binutils_target}" == "arm"
|
|
%define canonical_target_abi -gnueabi
|
|
%endif
|
|
|
|
%if 0%{?gcc_icecream:1}
|
|
%define build_sysroot /
|
|
%endif
|
|
|
|
|
|
Name: %{pkgname}
|
|
BuildRequires: cross-%{binutils_target}-binutils
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: bison
|
|
BuildRequires: flex
|
|
BuildRequires: gettext-devel
|
|
BuildRequires: glibc-devel-32bit
|
|
BuildRequires: mpc-devel
|
|
BuildRequires: mpfr-devel
|
|
BuildRequires: perl
|
|
%if %{suse_version} > 1220
|
|
BuildRequires: makeinfo
|
|
%else
|
|
BuildRequires: texinfo
|
|
%endif
|
|
BuildRequires: zlib-devel
|
|
%if %{suse_version} >= 1230
|
|
%if %{suse_version} < 1330
|
|
%ifarch %ix86 x86_64 ppc ppc64 s390 s390x ia64 %sparc hppa %arm
|
|
BuildRequires: cloog-isl-devel
|
|
BuildRequires: isl-devel
|
|
%endif
|
|
%endif
|
|
%endif
|
|
%ifarch ia64
|
|
BuildRequires: libunwind-devel
|
|
%endif
|
|
%if 0%{!?gcc_icecream:1}
|
|
BuildRequires: cross-%cross_arch-glibc-devel
|
|
%endif
|
|
ExclusiveArch: ppc64 x86_64 ia64 s390x aarch64
|
|
%define _binary_payload w.ufdio
|
|
|
|
# COMMON-BEGIN
|
|
# COMMON-END
|
|
|
|
%if 0%{!?gcc_icecream:1}
|
|
make %{?jobs:-j%jobs}
|
|
%else
|
|
make %{?jobs:-j%jobs} all-host
|
|
%endif
|
|
|
|
|
|
%if 0%{!?gcc_icecream:1}
|
|
%package -n cross-%cross_arch-gcc@base_ver@-icecream-backend
|
|
Summary: Icecream backend for the GNU C Compiler
|
|
Group: Development/Languages/C and C++
|
|
|
|
%description -n cross-%cross_arch-gcc@base_ver@-icecream-backend
|
|
This package contains the icecream environment for the GNU C Compiler
|
|
%endif
|
|
|
|
|
|
%define targetlibsubdir %{_libdir}/gcc/%{gcc_target_arch}/%{gcc_dir_version}
|
|
|
|
%install
|
|
cd obj-%{GCCDIST}
|
|
|
|
# install and fixup host parts
|
|
make DESTDIR=$RPM_BUILD_ROOT install-host
|
|
# binsuffix is not applied consistently for cross builds, get rid of
|
|
# the remains
|
|
rm -f $RPM_BUILD_ROOT/%{_prefix}/bin/%{gcc_target_arch}-gcc%{binsuffix}
|
|
# with the present setup fixincludes are for the build includes which
|
|
# is wrong - get rid of them
|
|
rm -rf $RPM_BUILD_ROOT/%{targetlibsubdir}/include-fixed
|
|
rm -f $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.la
|
|
# common fixup
|
|
rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty.a
|
|
# remove docs
|
|
rm -rf $RPM_BUILD_ROOT%{_mandir}
|
|
rm -rf $RPM_BUILD_ROOT%{_infodir}
|
|
|
|
|
|
# install and fixup target parts
|
|
# ??? don't do this - debugedit is not prepared for this and crashes
|
|
# so expect the sysroot to be populated from natively built binaries
|
|
#%if 0%{?sysroot:1}
|
|
#make DESTDIR=$RPM_BUILD_ROOT/%{sysroot} install-target
|
|
#%else
|
|
#make DESTDIR=$RPM_BUILD_ROOT/%{_prefix}/%{gcc_target_arch} install-target
|
|
#%endif
|
|
|
|
|
|
# Build an icecream environment
|
|
# The assembler comes from the cross-binutils, and hence is _not_
|
|
# named funnily, not even on ppc, so there we need the original target
|
|
install -s -D %{_prefix}/bin/%{canonical_target}-suse-linux%{?canonical_target_abi:%canonical_target_abi}-as \
|
|
$RPM_BUILD_ROOT/env/usr/bin/as
|
|
install -s $RPM_BUILD_ROOT/%{_prefix}/bin/%{gcc_target_arch}-g++ \
|
|
$RPM_BUILD_ROOT/env/usr/bin/g++
|
|
install -s $RPM_BUILD_ROOT/%{_prefix}/bin/%{gcc_target_arch}-gcc \
|
|
$RPM_BUILD_ROOT/env/usr/bin/gcc
|
|
|
|
for back in cc1 cc1plus; do
|
|
install -s -D $RPM_BUILD_ROOT/%{targetlibsubdir}/$back \
|
|
$RPM_BUILD_ROOT/env%{targetlibsubdir}/$back
|
|
done
|
|
if test -f $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.so; then
|
|
install -s -D $RPM_BUILD_ROOT/%{targetlibsubdir}/liblto_plugin.so \
|
|
$RPM_BUILD_ROOT/env%{targetlibsubdir}/liblto_plugin.so
|
|
fi
|
|
|
|
# Make sure to also pull in all shared library requirements for the
|
|
# binaries we put into the environment which is operated by chrooting
|
|
# into it and execing the compiler
|
|
libs=`for bin in $RPM_BUILD_ROOT/env/usr/bin/* $RPM_BUILD_ROOT/env%{targetlibsubdir}/*; do \
|
|
ldd $bin | sed -n '\,^[^/]*\(/[^ ]*\).*,{ s//\1/; p; }' ;\
|
|
done | sort -u `
|
|
for lib in $libs; do
|
|
# Check wether the same library also exists in the parent directory,
|
|
# and prefer that on the assumption that it is a more generic one.
|
|
baselib=`echo "$lib" | sed 's,/[^/]*\(/[^/]*\)$,\1,'`
|
|
test -f "$baselib" && lib=$baselib
|
|
install -s -D $lib $RPM_BUILD_ROOT/env$lib
|
|
done
|
|
|
|
cd $RPM_BUILD_ROOT/env
|
|
tar cvzf ../%{name}_%{_arch}.tar.gz *
|
|
cd ..
|
|
mkdir -p usr/share/icecream-envs
|
|
mv %{name}_%{_arch}.tar.gz usr/share/icecream-envs
|
|
rpm -q --changelog glibc > usr/share/icecream-envs/%{name}_%{_arch}.glibc
|
|
rpm -q --changelog binutils > usr/share/icecream-envs/%{name}_%{_arch}.binutils
|
|
rm -r env
|
|
|
|
%if 0%{?gcc_icecream:1}
|
|
rm -rf $RPM_BUILD_ROOT/%{_prefix}/bin
|
|
rm -rf $RPM_BUILD_ROOT/%{_libdir}
|
|
%endif
|
|
|
|
|
|
%if 0%{!?gcc_icecream:1}
|
|
%files
|
|
%defattr(-,root,root)
|
|
%{_prefix}/bin
|
|
%dir %{targetlibsubdir}
|
|
%dir %{_libdir}/gcc/%{gcc_target_arch}
|
|
%{targetlibsubdir}
|
|
%else
|
|
%files
|
|
%defattr(-,root,root)
|
|
/usr/share/icecream-envs
|
|
%endif
|
|
|
|
%if 0%{!?gcc_icecream:1}
|
|
%files -n cross-%cross_arch-gcc@base_ver@-icecream-backend
|
|
%defattr(-,root,root)
|
|
/usr/share/icecream-envs
|
|
%endif
|
|
|
|
%changelog -n cross-%{pkgname}-gcc@base_ver@
|