# # 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