From 78a21954d18599d1a4343e28aecd6953b52961de Mon Sep 17 00:00:00 2001 From: Erik van Pienbroek Date: Mar 06 2012 21:27:41 +0000 Subject: Added win64 support --- diff --git a/mingw-binutils.spec b/mingw-binutils.spec index 890a410..db806ed 100644 --- a/mingw-binutils.spec +++ b/mingw-binutils.spec @@ -1,32 +1,60 @@ +%global mingw_build_win32 1 +%global mingw_build_win64 1 +%global run_testsuite 1 + Name: mingw-binutils Version: 2.22.52 -Release: 2%{?dist} -Summary: MinGW Windows binutils +Release: 3%{?dist} +Summary: Cross-compiled version of binutils for Win32 and Win64 environments License: GPLv2+ and LGPLv2+ and GPLv3+ and LGPLv3+ Group: Development/Libraries + URL: http://www.gnu.org/software/binutils/ -Source0: http://ftp.gnu.org/gnu/binutils/binutils-%{version}.tar.bz2 +Source0: ftp://sourceware.org/pub/binutils/snapshots/binutils-%{version}.tar.bz2 BuildRequires: flex BuildRequires: bison BuildRequires: texinfo BuildRequires: mingw32-filesystem >= 95 - -# NB: This must be left in. -Requires: mingw32-filesystem >= 95 +BuildRequires: mingw64-filesystem >= 95 +%if %{run_testsuite} +BuildRequires: dejagnu +BuildRequires: sharutils +%endif %description -MinGW Windows binutils (utilities like 'strip', 'as', 'ld') which +Cross compiled binutils (utilities like 'strip', 'as', 'ld') which understand Windows executables and DLLs. +%package -n mingw-binutils-generic +Summary: Utilities which are needed for both the Win32 and Win64 toolchains + +%description -n mingw-binutils-generic +Utilities (like strip and objdump) which are needed for +both the Win32 and Win64 toolchains %package -n mingw32-binutils -Summary: MinGW Windows binutils +Summary: Cross-compiled version of binutils for the Win32 environment +Requires: mingw-binutils-generic = %{version}-%{release} + +# NB: This must be left in. +Requires: mingw32-filesystem >= 95 %description -n mingw32-binutils -MinGW Windows binutils (utilities like 'strip', 'as', 'ld') which +Cross compiled binutils (utilities like 'strip', 'as', 'ld') which +understand Windows executables and DLLs. + +%package -n mingw64-binutils +Summary: Cross-compiled version of binutils for the Win64 environment +Requires: mingw-binutils-generic = %{version}-%{release} + +# NB: This must be left in. +Requires: mingw64-filesystem >= 95 + +%description -n mingw64-binutils +Cross compiled binutils (utilities like 'strip', 'as', 'ld') which understand Windows executables and DLLs. @@ -35,8 +63,8 @@ understand Windows executables and DLLs. %build -mkdir -p build -cd build +mkdir build_win32 +pushd build_win32 CFLAGS="$RPM_OPT_FLAGS" \ ../configure \ --build=%_build --host=%_host \ @@ -51,34 +79,182 @@ CFLAGS="$RPM_OPT_FLAGS" \ --infodir=%{_infodir} make all %{?_smp_mflags} +popd + +mkdir build_win64 +pushd build_win64 +CFLAGS="$RPM_OPT_FLAGS" \ +../configure \ + --build=%_build --host=%_host \ + --target=%{mingw64_target} \ + --disable-nls \ + --with-sysroot=%{mingw64_sysroot} \ + --prefix=%{_prefix} \ + --bindir=%{_bindir} \ + --includedir=%{_includedir} \ + --libdir=%{_libdir} \ + --mandir=%{_mandir} \ + --infodir=%{_infodir} + +make all %{?_smp_mflags} +popd + +# Create multilib versions for the tools strip, objdump and objcopy +mkdir build_multilib +pushd build_multilib +CFLAGS="$RPM_OPT_FLAGS" \ +../configure \ + --build=%_build --host=%_host \ + --target=%{mingw64_target} \ + --enable-targets=%{mingw64_target},%{mingw32_target} \ + --disable-nls \ + --with-sysroot=%{mingw64_sysroot} \ + --prefix=%{_prefix} \ + --bindir=%{_bindir} \ + --includedir=%{_includedir} \ + --libdir=%{_libdir} \ + --mandir=%{_mandir} \ + --infodir=%{_infodir} + +make %{?_smp_mflags} +popd + + +%check +%if !%{run_testsuite} +echo ====================TESTSUITE DISABLED========================= +%else +pushd build_win32 + make -k check < /dev/null || : + echo ====================TESTING WIN32 ========================= + cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum + echo ====================TESTING WIN32 END===================== + for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log} + do + ln $file binutils-%{mingw32_target}-$(basename $file) || : + done + tar cjf binutils-%{mingw32_target}.tar.bz2 binutils-%{mingw32_target}-*.{sum,log} + uuencode binutils-%{mingw32_target}.tar.bz2 binutils-%{mingw32_target}.tar.bz2 + rm -f binutils-%{mingw32_target}.tar.bz2 binutils-%{mingw32_target}-*.{sum,log} +popd + +pushd build_win64 + make -k check < /dev/null || : + echo ====================TESTING WIN64 ========================= + cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum + echo ====================TESTING WIN64 END===================== + for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log} + do + ln $file binutils-%{mingw64_target}-$(basename $file) || : + done + tar cjf binutils-%{mingw64_target}.tar.bz2 binutils-%{mingw64_target}-*.{sum,log} + uuencode binutils-%{mingw64_target}.tar.bz2 binutils-%{mingw64_target}.tar.bz2 + rm -f binutils-%{mingw64_target}.tar.bz2 binutils-%{mingw64_target}-*.{sum,log} +popd +%endif %install -cd build -make DESTDIR=$RPM_BUILD_ROOT install +%mingw_make_install DESTDIR=$RPM_BUILD_ROOT +make -C build_multilib DESTDIR=$RPM_BUILD_ROOT/multilib install # These files conflict with ordinary binutils. rm -rf $RPM_BUILD_ROOT%{_infodir} -rm -f ${RPM_BUILD_ROOT}%{_libdir}/libiberty* +rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty* -# Temporary provide mingw-strip, mingw-objdump and mingw-objcopy -# in preparation for win32+win64 support -ln -s %{mingw32_strip} $RPM_BUILD_ROOT%{_bindir}/%{mingw_strip} -ln -s %{mingw32_objdump} $RPM_BUILD_ROOT%{_bindir}/%{mingw_objdump} -ln -s %{mingw32_objcopy} $RPM_BUILD_ROOT%{_bindir}/%{mingw_objcopy} +# Keep the multilib versions of the strip, objdump and objcopy commands +# We need these for the RPM integration as these tools must be able to +# both process win32 and win64 binaries +mv $RPM_BUILD_ROOT/multilib%{_bindir}/%{mingw64_strip} $RPM_BUILD_ROOT%{_bindir}/%{mingw_strip} +mv $RPM_BUILD_ROOT/multilib%{_bindir}/%{mingw64_objdump} $RPM_BUILD_ROOT%{_bindir}/%{mingw_objdump} +mv $RPM_BUILD_ROOT/multilib%{_bindir}/%{mingw64_objcopy} $RPM_BUILD_ROOT%{_bindir}/%{mingw_objcopy} +rm -rf $RPM_BUILD_ROOT/multilib -%files -n mingw32-binutils +%files -n mingw-binutils-generic +%doc COPYING %{_mandir}/man1/* %{_bindir}/%{mingw_strip} %{_bindir}/%{mingw_objdump} %{_bindir}/%{mingw_objcopy} -%{_bindir}/%{mingw32_target}-* -%{_prefix}/%{mingw32_target}/bin/* + +%files -n mingw32-binutils +%{_bindir}/%{mingw32_target}-addr2line +%{_bindir}/%{mingw32_target}-ar +%{_bindir}/%{mingw32_target}-as +%{_bindir}/%{mingw32_target}-c++filt +%{_bindir}/%{mingw32_target}-dlltool +%{_bindir}/%{mingw32_target}-dllwrap +%{_bindir}/%{mingw32_target}-elfedit +%{_bindir}/%{mingw32_target}-gprof +%{_bindir}/%{mingw32_target}-ld +%{_bindir}/%{mingw32_target}-ld.bfd +%{_bindir}/%{mingw32_target}-nm +%{_bindir}/%{mingw32_target}-objcopy +%{_bindir}/%{mingw32_target}-objdump +%{_bindir}/%{mingw32_target}-ranlib +%{_bindir}/%{mingw32_target}-readelf +%{_bindir}/%{mingw32_target}-size +%{_bindir}/%{mingw32_target}-strings +%{_bindir}/%{mingw32_target}-strip +%{_bindir}/%{mingw32_target}-windmc +%{_bindir}/%{mingw32_target}-windres +%{_prefix}/%{mingw32_target}/bin/ar +%{_prefix}/%{mingw32_target}/bin/as +%{_prefix}/%{mingw32_target}/bin/dlltool +%{_prefix}/%{mingw32_target}/bin/ld +%{_prefix}/%{mingw32_target}/bin/ld.bfd +%{_prefix}/%{mingw32_target}/bin/nm +%{_prefix}/%{mingw32_target}/bin/objcopy +%{_prefix}/%{mingw32_target}/bin/objdump +%{_prefix}/%{mingw32_target}/bin/ranlib +%{_prefix}/%{mingw32_target}/bin/strip %{_prefix}/%{mingw32_target}/lib/ldscripts +%files -n mingw64-binutils +%{_bindir}/%{mingw64_target}-addr2line +%{_bindir}/%{mingw64_target}-ar +%{_bindir}/%{mingw64_target}-as +%{_bindir}/%{mingw64_target}-c++filt +%{_bindir}/%{mingw64_target}-dlltool +%{_bindir}/%{mingw64_target}-dllwrap +%{_bindir}/%{mingw64_target}-elfedit +%{_bindir}/%{mingw64_target}-gprof +%{_bindir}/%{mingw64_target}-ld +%{_bindir}/%{mingw64_target}-ld.bfd +%{_bindir}/%{mingw64_target}-nm +%{_bindir}/%{mingw64_target}-objcopy +%{_bindir}/%{mingw64_target}-objdump +%{_bindir}/%{mingw64_target}-ranlib +%{_bindir}/%{mingw64_target}-readelf +%{_bindir}/%{mingw64_target}-size +%{_bindir}/%{mingw64_target}-strings +%{_bindir}/%{mingw64_target}-strip +%{_bindir}/%{mingw64_target}-windmc +%{_bindir}/%{mingw64_target}-windres +%{_prefix}/%{mingw64_target}/bin/ar +%{_prefix}/%{mingw64_target}/bin/as +%{_prefix}/%{mingw64_target}/bin/dlltool +%{_prefix}/%{mingw64_target}/bin/ld +%{_prefix}/%{mingw64_target}/bin/ld.bfd +%{_prefix}/%{mingw64_target}/bin/nm +%{_prefix}/%{mingw64_target}/bin/objcopy +%{_prefix}/%{mingw64_target}/bin/objdump +%{_prefix}/%{mingw64_target}/bin/ranlib +%{_prefix}/%{mingw64_target}/bin/strip +%{_prefix}/%{mingw64_target}/lib/ldscripts + %changelog +* Tue Mar 6 2012 Erik van Pienbroek - 2.22.52-3 +- Made the package compliant with the new MinGW packaging guidelines +- Added win64 support +- Added a mingw-binutils-generic package containing toolchain + utilities which can be used by both the win32 and win64 toolchains +- Enable the testsuite +- Package the license +- Fix source URL + * Tue Mar 6 2012 Erik van Pienbroek - 2.22.52-2 - Renamed the source package to mingw-binutils (RHBZ #673786) - Use mingw macros without leading underscore