[mingw-binutils] Added win64 support
epienbro
epienbro at fedoraproject.org
Tue Mar 6 21:27:46 UTC 2012
commit 78a21954d18599d1a4343e28aecd6953b52961de
Author: Erik van Pienbroek <epienbro at fedoraproject.org>
Date: Tue Mar 6 22:27:41 2012 +0100
Added win64 support
mingw-binutils.spec | 220 +++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 198 insertions(+), 22 deletions(-)
---
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 <epienbro at fedoraproject.org> - 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 <epienbro at fedoraproject.org> - 2.22.52-2
- Renamed the source package to mingw-binutils (RHBZ #673786)
- Use mingw macros without leading underscore
More information about the mingw
mailing list