[mingw-pthreads] Added win64 support

epienbro epienbro at fedoraproject.org
Tue Mar 6 23:32:10 UTC 2012


commit df10a8455d5ae077a6834d9120568cafd745113d
Author: Erik van Pienbroek <epienbro at fedoraproject.org>
Date:   Wed Mar 7 00:31:38 2012 +0100

    Added win64 support
    
    - Made the package compliant with the new MinGW packaging guidelines
    - Added win64 support

 mingw-pthreads.spec |  142 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 113 insertions(+), 29 deletions(-)
---
diff --git a/mingw-pthreads.spec b/mingw-pthreads.spec
index 0384b0a..b8b902e 100644
--- a/mingw-pthreads.spec
+++ b/mingw-pthreads.spec
@@ -1,17 +1,16 @@
-%define __strip %{mingw32_strip}
-%define __objdump %{mingw32_objdump}
+%?mingw_package_header
+
+%global mingw_build_win32 1
+%global mingw_build_win64 1
 
 # The tests take ages to run and require Wine.
-%define run_tests 0
-%define prerelease_date 20110511
+%global run_tests 0
+%global prerelease_date 20110511
 
 Name:           mingw-pthreads
 Version:        2.8.0
-Release:        18.%{prerelease_date}cvs%{?dist}
+Release:        19.%{prerelease_date}cvs%{?dist}
 Summary:        MinGW pthread library
-
-%define crazy_version %(echo %{version}|tr . -)
-
 License:        LGPLv2+
 Group:          Development/Libraries
 URL:            http://sourceware.org/pthreads-win32/
@@ -26,10 +25,15 @@ Patch0:         mingw32-pthreads-2.8.0-20110511-use-wine-for-tests.patch
 Patch1:         mingw32-pthreads-2.8.0-20110511-no-failing-tests.patch
 Patch2:         mingw32-pthreads-flags.patch
 
-BuildRequires:  mingw32-filesystem >= 95
+BuildRequires:  mingw32-filesystem >= 82
+BuildRequires:  mingw64-filesystem >= 82
 BuildRequires:  mingw32-gcc
+BuildRequires:  mingw64-gcc
 BuildRequires:  mingw32-gcc-c++
+BuildRequires:  mingw64-gcc-c++
 BuildRequires:  mingw32-binutils
+BuildRequires:  mingw64-binutils
+BuildRequires:  dos2unix
 
 %if %{run_tests}
 BuildRequires:  wine
@@ -50,9 +54,8 @@ Win32 does not, and is unlikely to ever, support pthreads
 natively. This project seeks to provide a freely available and
 high-quality solution to this problem.
 
-
 %package -n mingw32-pthreads
-Summary:        MinGW pthread library
+Summary:        MinGW pthread library for the win32 target
 
 %description -n mingw32-pthreads
 The POSIX 1003.1-2001 standard defines an application programming
@@ -68,6 +71,26 @@ Win32 does not, and is unlikely to ever, support pthreads
 natively. This project seeks to provide a freely available and
 high-quality solution to this problem.
 
+%package -n mingw64-pthreads
+Summary:        MinGW pthread library for the win64 target
+
+%description -n mingw64-pthreads
+The POSIX 1003.1-2001 standard defines an application programming
+interface (API) for writing multithreaded applications. This interface
+is known more commonly as pthreads. A good number of modern operating
+systems include a threading library of some kind: Solaris (UI)
+threads, Win32 threads, DCE threads, DECthreads, or any of the draft
+revisions of the pthreads standard. The trend is that most of these
+systems are slowly adopting the pthreads standard API, with
+application developers following suit to reduce porting woes.
+
+Win32 does not, and is unlikely to ever, support pthreads
+natively. This project seeks to provide a freely available and
+high-quality solution to this problem.
+
+
+%?mingw_debug_package
+
 
 %prep
 %setup -q -n pthreads-w32-%{prerelease_date}
@@ -76,23 +99,62 @@ high-quality solution to this problem.
 %patch1 -p1
 %patch2 -p1
 
+# Duplicate all source code as the Makefile doesn't support out of source compilation
+mkdir ../build_win32
+cp -Rv * ../build_win32
+mkdir ../build_win64
+mv * ../build_win64
+mv ../build_win32 ../build_win64 .
+
+# But move the documentation files back to the main tree
+pushd build_win32
+mv ANNOUNCE BUGS ChangeLog CONTRIBUTORS COPYING COPYING.LIB ..
+mv FAQ MAINTAINERS NEWS PROGRESS README README.NONPORTABLE TODO ..
+popd
+
+# Use the correct compilers
+sed -i s/"target  = "/"target  = %{mingw32_target}"/ build_win32/GNUmakefile
+sed -i s/"target  = "/"target  = %{mingw64_target}"/ build_win64/GNUmakefile
+
 
 %build
-%{mingw32_make} clean
-%{mingw32_make} CROSS=%{mingw32_host}- GC-inlined
-%{mingw32_make} clean
-%{mingw32_make} CROSS=%{mingw32_host}- GCE-inlined
+pushd build_win32
+make clean
+make CROSS=%{mingw32_host}- GC-inlined
+make clean
+make CROSS=%{mingw32_host}- GCE-inlined
+popd
+
+pushd build_win64
+make clean
+make CROSS=%{mingw64_host}- GC-inlined
+make clean
+make CROSS=%{mingw64_host}- GCE-inlined
+popd
 
 
 %check
 %if %{run_tests}
-pushd tests
-%{mingw32_make} clean
-%{mingw32_make} QAPC= \
-  CC=%{mingw32_cc} XXCFLAGS="-D__CLEANUP_C" TEST=GC all-pass
-%{mingw32_make} clean
-%{mingw32_make} QAPC= \
-  CC=%{mingw32_cc} XXCFLAGS="-D__CLEANUP_C" TEST=GCE all-pass
+pushd build_win32/tests
+make clean
+make QAPC= CC=%{mingw32_cc} XXCFLAGS="-D__CLEANUP_C" TEST=GC all-pass
+make clean
+make QAPC= CC=%{mingw32_cc} XXCFLAGS="-D__CLEANUP_C" TEST=GCE all-pass
+make clean
+make QAPC= CC=%{mingw32_cc} XXCFLAGS="-D__CLEANUP_C" TEST=GC all-pass
+make clean
+make QAPC= CC=%{mingw32_cc} XXCFLAGS="-D__CLEANUP_C" TEST=GCE all-pass
+popd
+
+pushd build_win64/tests
+make clean
+make QAPC= CC=%{mingw64_cc} XXCFLAGS="-D__CLEANUP_C" TEST=GC all-pass
+make clean
+make QAPC= CC=%{mingw64_cc} XXCFLAGS="-D__CLEANUP_C" TEST=GCE all-pass
+make clean
+make QAPC= CC=%{mingw64_cc} XXCFLAGS="-D__CLEANUP_C" TEST=GC all-pass
+make clean
+make QAPC= CC=%{mingw64_cc} XXCFLAGS="-D__CLEANUP_C" TEST=GCE all-pass
 popd
 %endif
 
@@ -101,16 +163,24 @@ popd
 mkdir -p $RPM_BUILD_ROOT%{mingw32_bindir}
 mkdir -p $RPM_BUILD_ROOT%{mingw32_libdir}
 mkdir -p $RPM_BUILD_ROOT%{mingw32_includedir}
-
-install -m 0755 *.dll $RPM_BUILD_ROOT%{mingw32_bindir}
-install -m 0644 *.a $RPM_BUILD_ROOT%{mingw32_libdir}
-
-install -m 0644 pthread.h $RPM_BUILD_ROOT%{mingw32_includedir}
-install -m 0644 sched.h $RPM_BUILD_ROOT%{mingw32_includedir}
-install -m 0644 semaphore.h $RPM_BUILD_ROOT%{mingw32_includedir}
+mkdir -p $RPM_BUILD_ROOT%{mingw64_bindir}
+mkdir -p $RPM_BUILD_ROOT%{mingw64_libdir}
+mkdir -p $RPM_BUILD_ROOT%{mingw64_includedir}
+
+install -m 0755 build_win32/*.dll $RPM_BUILD_ROOT%{mingw32_bindir}
+install -m 0644 build_win32/*.a $RPM_BUILD_ROOT%{mingw32_libdir}
+install -m 0644 build_win32/pthread.h $RPM_BUILD_ROOT%{mingw32_includedir}
+install -m 0644 build_win32/sched.h $RPM_BUILD_ROOT%{mingw32_includedir}
+install -m 0644 build_win32/semaphore.h $RPM_BUILD_ROOT%{mingw32_includedir}
+install -m 0755 build_win64/*.dll $RPM_BUILD_ROOT%{mingw64_bindir}
+install -m 0644 build_win64/*.a $RPM_BUILD_ROOT%{mingw64_libdir}
+install -m 0644 build_win64/pthread.h $RPM_BUILD_ROOT%{mingw64_includedir}
+install -m 0644 build_win64/sched.h $RPM_BUILD_ROOT%{mingw64_includedir}
+install -m 0644 build_win64/semaphore.h $RPM_BUILD_ROOT%{mingw64_includedir}
 
 # Create a symlink from libpthreadGC2.a to libpthread.a because of BZ #498616
 ln -s libpthreadGC2.a $RPM_BUILD_ROOT%{mingw32_libdir}/libpthread.a
+ln -s libpthreadGC2.a $RPM_BUILD_ROOT%{mingw64_libdir}/libpthread.a
 
 
 %files -n mingw32-pthreads
@@ -123,8 +193,22 @@ ln -s libpthreadGC2.a $RPM_BUILD_ROOT%{mingw32_libdir}/libpthread.a
 %{mingw32_libdir}/libpthreadGCE2.a
 %{mingw32_includedir}/*.h
 
+%files -n mingw64-pthreads
+%doc ANNOUNCE BUGS ChangeLog CONTRIBUTORS COPYING COPYING.LIB
+%doc FAQ MAINTAINERS NEWS PROGRESS README README.NONPORTABLE TODO
+%{mingw64_bindir}/pthreadGC2.dll
+%{mingw64_bindir}/pthreadGCE2.dll
+%{mingw64_libdir}/libpthread.a
+%{mingw64_libdir}/libpthreadGC2.a
+%{mingw64_libdir}/libpthreadGCE2.a
+%{mingw64_includedir}/*.h
+
 
 %changelog
+* Tue Mar  6 2012 Erik van Pienbroek <epienbro at fedoraproject.org> - 2.8.0-19.20110511cvs
+- Made the package compliant with the new MinGW packaging guidelines
+- Added win64 support
+
 * Tue Mar 06 2012 Kalev Lember <kalevlember at gmail.com> - 2.8.0-18.20110511cvs
 - Renamed the source package to mingw-pthreads (#800414)
 - Use automatic dep extraction


More information about the scm-commits mailing list