blob: 82eb6e4076ed4488cb96ee65a3f6b451aa7dffea (
plain) (
tree)
|
|
#
# spec file for building gcc for cygwin
#
%define gcc_pkgvers @GCC_VERS@
%define gcc_version %{expand:%%(echo "@GCC_VERS@" | sed -e 's,-.*,,')}
%define gcc_rpmvers %{expand:%%(echo "@GCC_VERS@" | tr - _ )}
# RH's brp-strip* scripts are not able to handle foreign binaries
# Switch of all stripping
%define __os_install_post /usr/lib/rpm/redhat/brp-compress
Distribution: Linux
Name: i686-pc-cygwin-gcc
Summary: i686-pc-cygwin gcc.
Group: Cygwin
Release: @GCC_RPMREL@
License: GPL
Version: %gcc_rpmvers
Source0: ftp://cygwin.com/pub/cygwin/release/gcc/gcc-core/gcc-core-%{gcc_pkgvers}-src.tar.bz2
Source1: ftp://cygwin.com/pub/cygwin/release/gcc/gcc-g++/gcc-g++-%{gcc_pkgvers}-src.tar.bz2
Source2: ftp://cygwin.com/pub/cygwin/release/gcc/gcc-ada/gcc-ada-%{gcc_pkgvers}-src.tar.bz2
NoSource: 0
NoSource: 1
NoSource: 2
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: i686-pc-cygwin-binutils
BuildRequires: i686-pc-cygwin-libs
BuildRequires: i686-pc-cygwin-w32api-libs
BuildRequires: zlib-devel
Requires: i686-pc-cygwin-binutils
Requires: i686-pc-cygwin-libs
Requires: i686-pc-cygwin-w32api-libs
Provides: i686-pc-cygwin-c++
%description
Cross gcc for target cygwin
%prep
# untar the sources inside i686-pc-cygwin-gcc
%setup -c -n %{name} -a 0 -a 1 -a 2
# Cygwin's packaging sucks ;)
tar xjvf gcc-core-%{gcc_version}.tar.bz2
tar xjvf gcc-g++-%{gcc_version}.tar.bz2
tar xjvf gcc-ada-%{gcc_version}.tar.bz2
pushd gcc-%{gcc_version} > /dev/null
patch -p1 -f < ../gcc-%{gcc_pkgvers}.patch || true
popd > /dev/null
test -d build || mkdir build
%build
# touch gcc-%{gcc_version}/gcc/ada/treeprs.ads
# touch gcc-%{gcc_version}/gcc/ada/[es]info.h
# touch gcc-%{gcc_version}/gcc/ada/nmake.ad[bs]
pushd build > /dev/null
../gcc-%{gcc_version}/configure --target=i686-pc-cygwin \
--with-gnu-as --with-gnu-ld --verbose \
--with-system-zlib \
--disable-nls --without-included-gettext \
--disable-win32-registry \
--enable-version-specific-runtime-libs \
--enable-languages=c,c++ \
--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
--bindir=%{_bindir} --libdir=%{_libdir} --includedir=%{_includedir} \
--datadir=%{_datadir}
# This would require write access to %{_prefix}/i686-pc-cygwin
# --with-headers=%{_prefix}/i686-pc-cygwin/sys-root/usr/include \
# --with-libs=%{_prefix}/i686-pc-cygwin/sys-root/usr/lib
# Doesn't work with gcc-3.3.1-1
# --with-sysroot=%{_prefix}/i686-pc-cygwin/sys-root
make all
# Building with an external libc -> the nominal way to building gnat works!
# make -C gcc cross-gnattools
# make -C gcc ada.all.cross
# make -C gcc gnatlib
popd > /dev/null
%install
rm -rf $RPM_BUILD_ROOT
pushd build > /dev/null
make DESTDIR=$RPM_BUILD_ROOT install
# cd back to build/
popd > /dev/null
# We don't want info files
rm -rf $RPM_BUILD_ROOT%{_infodir}
# libiberty comes from cygwin-libs
rm -f $RPM_BUILD_ROOT%{_prefix}/i686-pc-cygwin/lib/libiberty.a
rm -f $RPM_BUILD_ROOT%{_prefix}/lib/libiberty.a
# GCC ships broken *.la's
find $RPM_BUILD_ROOT%{_prefix} -name '*.la' -exec rm -f {} \;
# Not required for cygwin
rm -rf $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/i686-pc-cygwin/*/install-tools
# These conflict with the native gcc's man pages
rm -rf $RPM_BUILD_ROOT%{_mandir}/man7
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/cpp.*
rm -f $RPM_BUILD_ROOT%{_mandir}/man1/gcov.*
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%{_bindir}/*
%{_prefix}/lib/gcc-lib
%{_mandir}/man1/i686-pc-cygwin*.1*
# Conflicts with native gcc
# %{_datadir}/locale/*/LC_MESSAGES/*.mo
|